AI时代的编程语言

明天(12月16日),开源语言XLang就要举办第一次Meetup。XLang的壮志雄心是成为物联网和人工智能的编程语言。通过这篇小文快速扫描一下AI时代的一些编程语言,虽然不免浅尝辄止,也算是帮XLang Meetup暖暖场。祝愿Meetup举办成功,XLang的勇士们顺利启航。

a11d91ec4404af1a50b9b0573b59beac.jpeg

12月16日XLang Meetup的中文海报

Python:以人为本的编程语言

Python可能是AI最重要的编程语言。在2017年Python大会的一个演讲中,撰写过多本Python书籍的Jake Vanderplas为什么Python在科学领域是如此有效,提到了四点:

eb7353710b5b62865e3b54b987842f72.png

截图:Slides from 《The unexpected effectiveness of Python in Science》by Jake VanderPlas at PyCon 2017

1. Python是"胶水"语言,具备与其他语言的"互操作性"。Python语言更高级和抽象的语法封装了底层的C/Fortran库,而这些库(大多数情况下)负责完成主要的计算。

2. Python有大量的工具库。Python的标准库提供了广泛的模块和工具,Python社区活跃,提供大量的第三方库,极大地扩展了Python的应用范围和能力。从网站开发、数据科学、人工智能到科学计算和系统运维,使其能够处理各种各样的任务。Python凭借其对大数据处理和机器学习领域的深入应用,成为了这一时代不可或缺的工具。HuggingFace创建了 Transformers机器学习开源框架,提供API和工具,帮助开发者和组织减少集成大语言模型的成本,降低技术门槛,不但公司获得了关键性的成功,帮助AI民主化,打破OpenAI、Google等头部企业的垄断。而HuggingFace的技术,就是基于Python构建的。

3. Python的人性化

Python的设计是非常人性化的。The Zen of Python ("Python之禅”)概括了Python编程语言的哲学:“美丽胜于丑陋。显式胜于隐式。简单胜于复杂 ...”这些原则反映了Python对编写,理解和阅读代码的容易性的强调。对于生手或非专业(科学)编程人员而言,无疑更容易上手、能够更快出活。

7fb823a78f59bf65ae507cd4860de62d.png

截图:CPython的设计者Tim Peters总结的Python之禅。19条原则的每一条都反映出以人的体验和价值为中心。Python是以人为中心设计的语言。

4. Python的开放文化和科学精神的契合

Python从诞生之初就是一个开源项目。其发展在很大程度上依赖于其活跃、多样化的社区。Python之禅强调简单、明确和可读性也有助于了社区成员的互动。由于其易学性和清晰的语法,成为许多初学者学习编程的首选语言。Python社区对教育资源的投入,如在线教程、开源书籍和社区论坛,进一步推广了这种开放文化。Python在多个领域都有广泛的应用促进了来自不同背景和专业的人才加入Python社区,进一步丰富了其多元化和开放性。

C/C++:机器的资源和性能

有了语言的“简”和“易”还不够,运算不能“慢”和“贵”。一些以机器为中心的编程语言在这些方面表现得更加优秀。比如C/C++, Java,Rust等。

7b218dfeb44253018ab29625accd049c.png

截图:C++的创造者BJarne Stroustrap编写的C++编程和实践一书封面

以C++为例,其设计者BJarne Stroustrap指出C++优先考虑性能资源的使用和对抽象的控制。通过C/C++,程序员可以编写精细的程序,并对计算资源(特别是内存和CPU)进行精确的管理,从而完成复杂而高效和大规模的计算。

最为常用的Python实现是CPython,就是通过C语言实现的解释器和Python虚拟机,解析Python代码和执行机器码,完成程序的运行。

NVIDA CUDA:并行计算

NVIDIA CUDA(Compute Unified Device Architecture)是一种由NVIDIA开发的并行计算平台和编程模型。CUDA允许开发者使用NVIDIA的GPU(图形处理单元)进行通用计算。CUDA允许程序利用GPU的多个核心同时执行计算任务,极大提升了处理大型数据集或执行复杂算法的速度。

CUDA提供编程工具和库,允许开发者使用类似于C/C++的语言来编写程序,对NVIDIA图形卡上的计算资源(特别是GPU和图形卡上内存)进行控制,为需要处理大量数据和复杂计算任务的领域提供了强大的工具,使之能够充分利用GPU的强大计算能力。

要执行任何 CUDA 程序,需要三个主要步骤:

  • 将输入数据从主机内存复制到GPU设备内存,也称为主机到设备传输。

  • 加载 GPU 程序并执行,在片上缓存数据以提高性能。

  • 将结果从设备内存复制到主机内存,也称为GPU设备到主机传输。

    ecd5b3f4358476f5b899af8a5345ee71.png

    截图:用C/C++进行CUDA编程,在GPU设备上并行执行

AI编程语言的底层逻辑

我们可以简单比较以下Python,C/C++和CUDA之间的异同:


PYTHON

C & C++

NVIDIA CUDA

设计理念

强调简单性、可读性和明确性。'Python之禅'

侧重于发挥强大性能和灵活性

为NVIDIA GPU上的并行计算而设计。

语法和易用性

清晰、易于理解的语法。非常适合初学者,并强制使用缩进来提高可读性。

相对复杂的语法,提供更大的控制能力,但对初学者来说可能具有挑战性

扩展了C++的并行编程能力。需要理解C++和并行计算概念。

内存资源管理

自动内存管理和垃圾收集。减轻了程序员的负担,但提供较少的控制。

对内存管理的完全控制,导致效率提高但增加了内存相关错误的风险。

管理CPU和GPU内存,需要显式的内存管理和主机与设备之间的数据传输。

性能

通常由于是解释型语言而较慢。适用于快速开发和原型制作。作为一种编译语言,执行速度更快。非常适合对性能要求严格的应用程序。

对于可并行化的任务高效率,对于适合的应用程序如大规模模拟、深度学习等,速度显著更快。

数据类型Typing

动态类型,允许更多的灵活性,但可能导致运行时错误。

静态类型,编译时进行严格的类型检查,能够早期捕捉类型错误,但需要更明确的类型声明。

继承了C++的静态类型特性,由于并行执行上下文增加了复杂性。

可以看到,以Python为代表的动态类型解释型脚本化语言以人为本,解决的是开发效率问题;以C和C++为代表的静态类型编译语言围绕计算机资源(CPU和内存)的高效使用,解决的是复杂计算任务的效率的问题;而已NVIDIA Cuda为代表的编程模型,则围绕GPU设别和设备内存资源的使用,解决的是大规模并行计算的效率问题。

c932b4ce92c1afc9fdfb662eebfa9ae8.png

AI时代的新编程语言,必须要解决AI应用开发+复杂任务执行+大规模并行计算的综合效率。

Mojo:一个案例

3e5a3075a74b3b22512e0fd11846da68.png

截图:mojo语言官网主页 https://www.modular.com/max/mojo

Mojo是由Modular公司开发,旨在为人工智能等领域的软件开发提供统一的编程框架。Mojo语言为Python语言的超集,故也被称为Python++ 。同时,它还具有C++的速度与Rust的安全性。

Mojo最近发布了一系列博文,解释了Mojo语言效率如何比Python提高了35000~68000倍。

a6a12038cd410ad224ba52e0a61018b1.pngMojo博文截图:https://shriramsivanandhan.medium.com/mojo-programming-language-68000x-faster-than-python-programming-in-mojo-part-ii-d162740a2f67

从Mojo的多篇博文中大致可以看出,Mojo尽可能地兼容Python的语法,使之也能够与Python生态系统兼容。但Mojo是编译语言。在Mojo编译中进行了大量的性能优化,包括:

  • 简化数学运算以减少计算量:比如通过优化,避免使用需要6个flop的昂贵的平方根运算。

  • 向量化代码:实现SIMD,让一个指令能够操作更多的数据。

  • 增加每个循环迭代的工作量: 尽量增加SIMD的宽度,让一个指令能够操作尽可能多的数据。

  • 使代码并行执行:使程序更加适合GPU运算。

可以看到,通过以编译优化,Mojo在将前面提到的三方面的优点结合起来,使AI程序又好写,又高效,而且尽可能发挥并行算力的能力。

XLang:期待创新

XLang的主要创造者Shawn Xiong告诉我,除了将多种语言的优势结合起来优化性能以外,XLang还有一些较大的创新。比如,一般语言在层层编译的过程中,不断将一套指令用另一套指令来表达,这往往会导致不必要的复杂性和性能损失,过程中也有信息损失。而XLang的编译则不在指令层面完成,而是在"表达式"的层面完成,表达式的传递是以一个简洁而且信息无损的过程。此外,XLang在与其他编程语言的融合和编译原理方面也都有独特之处,将使得XLang有望成为“超级胶水”语言,方便地支持与其他编程语言集成,也能支持AMD、Intel以及其他厂家的异构GPU,帮助打破NVIDIA在这方面的一家独大的局面。

非常期待XLang的创新实现!

9b6e75ddcd17d6f871eb2763d5c9621b.png

XLang官网截图:https://xlangfoundation.org/,请朋友们关注和支持XLang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值