淘优惠

淘优惠

python人工智能开发从入门到精通 python人工智能编程代码

热门文章 0
python人工智能开发工具,python人工智能开发从入门到精通 pdf,人工智能用python开发,python人工智能编程入门

大家好,我是cv君,今天带大家学习一下cuda编程的python版,openai新开的库,效果好像很不错,也不会说,python做cuda编程鸡肋,其实还是有点效果。因为cuda加速太耗费时间了,我指的是开发时间,很影响整体工作效率,所以,如果能用python做一个效率很高的cuda加速,那么也是很有意义的事情了。我今天带大家尝试一下,cv君近期考研复习,效率还行,文章这边近期出一系列Python 的cuda编程教程吧,预计出很多期,直到大家学会为止。

因为cuda编程是我们做人工智能算法工程师,从中级到高级进阶的必要知识之一,这个玩意,你只要学会了点皮毛(跟着我一起学),就能打败很多人了,因为这个玩意太难了,很多人学不下去。好,下面我们开始更新第一期,介绍一些Triton,OpenAI新作。

OpenAI 开源了全新的 GPU 编程语言 Triton,它能成为 CUDA 的替代品吗?

今天,OpenAI 正式推出 Triton 1.0,这是一种类 Python 的开源编程语言。即使没有 CUDA 经验的研究人员,也能够高效编写 GPU 代码。例如,它可以用不到 25 行代码写出与 cuBLAS 性能相匹配的 FP16 矩阵乘法内核,后者是许多专业的 GPU 编程者尚且无法做到的。此外,OpenAI 的研究者已经使用 Triton 成功生成了比 PyTorch 同类实现效率高 2 倍的内核。

代码地址:https://github.com/openai/triton

?

论文链接:http://www.eecs.harvard.edu/~htk/publication/2019-mapl-tillet-kung-cox.pdf

Tillet 希望解决的问题是打造一种比英伟达的 CUDA 等特定供应商库更好用的库,能够处理神经网络中涉及矩阵的各种操作,具备可移植性,且性能可与 cuDNN 或类似的供应商库相媲美。团队表示:「直接用 CUDA 进行 GPU 编程太难了,比如为 GPU 编写原生内核或函数这件事,会因为 GPU 编程的复杂性而出奇困难。」

?

新发布的 Triton 可以为一些核心的神经网络任务(例如矩阵乘法)提供显著的易用性优势。「我们的目标是使其成为深度学习 CUDA 的可行替代方案,」Philippe Tillet 作为 Triton 项目负责人如此表示。

GPU 编程面临的挑战(重点)

这里涉及到计算机组成原理知识,大家可以稍微理解一下,

现代 GPU 的架构大致可以分为三个主要组件:DRAM、SRAM 和 ALU。优化 CUDA 代码时,必须考虑到每一个组件:

  • 来自 DRAM 的内存传输必须合并进大型事务,以利用现代内存接口的总线位宽;

  • 必须在数据重新使用之前手动存储到 SRAM 中,并进行管理以最大限度地减少检索时共享内存库冲突;

  • 计算必须在流处理器(SM)内部或之间细致分区和调度,以促进指令 / 线程级的并行以及专用算术逻辑单元(ALU)的利用。

GPU 基础架构。

种种因素导致 GPU 编程难度骤增,即使对于具有多年经验的 CUDA 程序员也是如此。Triton 的目的是将这些优化过程自动化,以此让开发人员更专注于并行代码的高级逻辑。出于对泛用能力的考量,Triton 不会自动调度跨流处理器的工作,而是将一些重要的算法考虑因素(例如 tiling、SM 间同步)留给开发者自行决定。

CUDA vs Triton 编译器优化对比。

编程模型

在所有可用的领域专用语言和 JIT 编译器中,Triton 或许与 Numba 最相似:内核被定义为修饰过的 Python 函数,并与实例网格上不同的 program_id 的同时启动。但不同之处值得注意:如下图代码片段所示,Triton 通过对 block 的操作来展示 intra-instance 并行,此处 block 是维数为 2 的幂的数组,而不是单指令多线程(SIMT)执行模型。如此一来,Triton 高效地抽象出了与 CUDA 线程 block 内的并发相关的所有问题(比如内存合并、共享内存同步 / 冲突、张量核心调度)。

安装教程(可以一键安装,提供python的setup.py):

============== Installation ==============

--------------------- Binary Distributions ---------------------

You can install the latest stable release of Triton from pip:

.. code-block:: bash

? ? ? pip install triton

Binary wheels are available for CPython 3.6-3.9 and PyPy 3.6-3.7.

And the latest nightly release:

.. code-block:: bash ? ? ? pip install -U --pre triton

-------------- From Source --------------

+++++++++++++++ Python Package +++++++++++++++

You can install the Python package from source by running the following commands:

.. code-block:: bash

? ? ? git clone https://github.com/openai/triton.git; ? ? ? cd triton/python; ? ? ? pip install cmake; # build time dependency ? ? ? pip install -e .

Note that, if llvm-11 is not present on your system, the setup.py script will download the official LLVM11 static libraries link against that.

You can then test your installation by running the unit tests:

.. code-block:: bash

? ? ? pytest -vs .

and the benchmarks

.. code-block:: bash ? ? ? ? ? cd bench/ ? ? ? python -m run --with-plots --result-dir /tmp/triton-bench

Triton 中的向量加法。

虽然这对 embarrassingly 并行(即 element-wise)计算可能没什么帮助,但是可以简化更复杂的 GPU 程序的开发。例如,在融合 softmax 核的情况下,对于每个输入张量 X∈R^M×N 来说,每个实例对给定输入张量的不同行进行归一化。这种并行化策略的标准 CUDA 实现可能难以编写,需要线程之间的显式同步,因为这种策略并发地减少 X 的同一行。而 Triton 很大程度上消除了这种复杂性,每个内核实例加载感兴趣的行,并使用类似 NumPy 的原语顺序对其进行规范化。

在 Triton 中融合 softmax

Triton JIT 把 X、Y 当作指针而不是张量。最重要的是,softmax 这种特殊实现方式在整个规范化过程中保持 SRAM 中 X 的行不变,从而在适用时最大限度地实现数据重用(约 32K 列)。这与 PyTorch 的内部 CUDA 代码不同,后者使用临时内存使其更通用,但速度明显变慢(见下图)。

融合 softmax、M=4096 的 A100 性能。

Torch (v1.9) JIT 较低的性能突出了从高级张量操作序列自动生成 CUDA 代码的难度。

融合 softmax 与 Torch JIT

矩阵乘法

能够为元素操作(element-wise operation)和规约操作(reduction operation)编写融合内核是很重要的,但考虑到神经网络中矩阵乘法的重要性,这还不够。事实证明,Triton 在这些方面表现很好,仅用大约 25 行 Python 代码就能达到最佳性能。相比之下,CUDA 效率就没有那么高了。

Triton 中的矩阵乘法。

手写矩阵乘法内核的一个重要优点是它们可以根据需要进行定制,以适应其输入(例如切片)和输出(例如 Leaky ReLU)的融合变换。假如不存在 Triton 这样的系统,那么对于没有出色的 GPU 编程专业知识的开发人员来说,矩阵乘法内核将很难大改。

高级系统架构

Triton 的良好性能得益于以 Triton-IR 为中心的模块化系统架构。Triton-IR 是一种基于 LLVM 的中间表示,多维值块(blocks of values)是其中最重要的东西。

Triton 的高级架构。

@triton.jit 装饰器的工作原理是遍历由 Python 函数提供的抽象语法树(AST),这样一来就能使用通用的 SSA 构造算法实时生成 Triton-IR。生成的 IR 代码随后由编译器后端进行简化、优化和自动并行化,然后转换为高质量的 LLVM-IR,最终转换为 PTX,以便在最新的 NVIDIA GPU 上执行。目前 Triton 还不支持 CPU 和 AMD GPU,但团队表示对二者的支持正在开发中。

编译器后端

研究人员发现通过 Triton-IR 来使用块状程序表示,这种方法允许编译器自动执行各种重要的程序优化。例如,通过查看计算密集型块级操作(例如 tl.dot)的操作数,数据可以自动存储到共享内存中,并使用标准的活跃性分析技术进行数据的分配与同步。

Triton 编译器通过分析计算密集型操作中使用的块变量的活动范围来分配共享内存。

此外,Triton 还可以在 SM 之间以及 SM 之内高效、自动地并行化,前者通过并发执行不同的内核实例来实现,后者通过分析每个块级操作的迭代空间,并将其充分划分到不同的 SIMD 单元来实现。如下所示:

Triton 自动并行化。每个块级操作都定义了一个块级迭代空间,该空间可以自动并行化以利用 SM(Streaming Multiprocessor) 上的可用资源。


【大全】深度强化学习入门到精通

深度ui,深港dj,深度 ai,深度dp

聚焦AI干货,关注:决策智能与机器学习

人工智能是21世纪最激动人心的技术之一。人工智能,就是像人一样的智能,而人的智能包括感知、决策和认知(从直觉到推理、规划、意识等)。其中,感知解决what,深度学习已经超越人类水平;决策解决how,强化学习在游戏和机器人等领域取得了一定效果;认知解决why,知识图谱、因果推理和持续学习等正在研究。

强化学习,采用反馈学习的方式解决序贯决策问题,因此必然是通往通用人工智能的终极钥匙。我特别喜欢强化学习,深深被其框架所吸引,智能体通过与环境交互来成长,这不就是生命的进化规律嘛!个人作为一名AI独立研究员,一路也是通过知乎、b站、GitHub、公众号和各类博客学习过来,非常感谢网络时代大家的分享,同时将自己在强化学习方面的经验总结整理分享,既是方便自己学习,也希望能帮助一点刷到这条知乎的朋友们。当然,强化学习也面临很多问题,希望我们一起解决,让强化学习变得更好![1]

1.1 腾讯_周沫凡_强化学习、教程、代码

  • https://www.bilibili.com/video/av16921335?from=search&seid=7037144790835305588

  • https://morvanzhou.github.io/

  • https://github.com/AndyYue1893/Reinforcement-learning-with-tensorflow 1.2 DeepMind_David Silver_UCL深度强化学习课程(2015)、PPT、笔记及代码

  • https://www.bilibili.com/video/av45357759?from=search&seid=7037144790835305588

  • https://blog.csdn.net/u_say2what/article/details/89216190

  • https://zhuanlan.zhihu.com/p/37690204 1.3 台大_李宏毅_深度强化学习(国语)课程(2018)、PPT、笔记

  • https://www.bilibili.com/video/av24724071?from=search&seid=7037144790835305588

  • http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS18.html

  • https://blog.csdn.net/cindy_1102/article/details/87904928 1.4 UC Berkeley_Sergey Levine_CS285(294)深度强化学习(2019)、PPT、代码

  • https://www.bilibili.com/video/av69455099?from=search&seid=7037144790835305588

  • http://rail.eecs.berkeley.edu/deeprlcourse/

  • https://github.com/berkeleydeeprlcourse/homework

2.1 强化学习圣经_Rich Sutton_中文书、英文电子书、代码 ★★★★★(基础必读,有助于理解强化学习精髓)

  • https://item.jd.com/12696004.html

  • http://incompleteideas.net/book/the-book-2nd.html

  • https://github.com/AndyYue1893/reinforcement-learning-an-introduction

2.2 Python强化学习实战_Sudharsan Ravichandiran、代码 ★★★★★(上手快,代码清晰)

  • https://item.jd.com/12506442.html

  • https://github.com/AndyYue1893/Hands-On-Reinforcement-Learning-With-Python

2.3 强化学习精要_冯超 ★★★★(从基础到前沿,附代码)

  • https://item.jd.com/12344157.html

2.4 Reinforcement Learning With Open AI TensorFlow and Keras Using Python_OpenAI(注重实战)

  • https://pan.baidu.com/share/init?surl=nQpNbhkI-3WucSD0Mk7Qcg(提取码: av5p)

3.1 OpenAI Spinning Up英文版、中文版、介绍by量子位(在线学习平台,包括原理、算法、论文、代码)

  • https://spinningup.openai.com/en/latest/

  • https://spinningup.readthedocs.io/zh_CN/latest/index.html

  • https://zhuanlan.zhihu.com/p/49087870

3.2 莫烦Python(?通俗易懂)

  • https://morvanzhou.github.io/

4.1 Reinforcement learning_Nando de Freitas_DeepMind_2019

  • https://pan.baidu.com/s/1KF10W9GifZCDf9T4FY2H9Q

4.2 Policy Optimization_Pieter Abbeel_OpenAI/UC Berkeley/Gradescope

  • https://pan.baidu.com/s/1zOOZjvTAL_FRVTHHapriRw&shfl=sharepset

请问DeepMind和OpenAI身后的两大RL流派有什么具体的区别?

  • https://www.zhihu.com/question/316626294/answer/627373838 三大经典算法

5.1 DQN

Mnih. Volodymyr, et al. "Human-level control through deep reinforcement learning." Nature 518.7540 (2015): 529. (Nature版本)

  • https://storage.googleapis.com/deepmind-data/assets/papers/DeepMindNature14236Paper.pdf

5.2 DDPG

David. Silver, et al. "Deterministic policy gradient algorithms." ICML. 2014.

  • http://proceedings.mlr.press/v32/silver14.pdf

5.3 A3C

Mnih. Volodymyr, et al. "Asynchronous methods for deep reinforcement learning." International conference on machine learning. 2016.

  • https://www.researchgate.net/publication/301847678_Asynchronous_Methods_for_Deep_Reinforcement_Learning

6.1 OpenAI Gym

  • http://gym.openai.com/

6.2 Google Dopamine 2.0

  • https://github.com/google/dopamine

6.3 Emo Todorov Mujoco

  • http://www.mujoco.org/

6.4 通用格子世界环境类

  • https://zhuanlan.zhihu.com/p/28109312

  • https://cs.stanford.edu/people/karpathy/reinforcejs/index.html

7.1 OpenAI Baselines(代码简洁,使用广泛)

  • https://github.com/openai/baselines

7.2 百度 PARL(?扩展性强,可复现性好,友好)

  • https://github.com/paddlepaddle/parl

7.3 DeepMind OpenSpiel(仅支持Debian和Ubuntu,28种棋牌类游戏和24种算法)

  • https://github.com/deepmind/open_spiel

8.1 清华张楚珩博士 ★★★★★[2]

  • https://zhuanlan.zhihu.com/p/46600521 张楚珩:强化学习论文汇总

8.2 NeuronDance ★★★★

  • https://github.com/AndyYue1893/DeepRL-1/tree/master/A-Guide-Resource-For-DeepRL

8.3 paperswithcode ★★★★

  • https://www.paperswithcode.com/area/playing-games

  • https://github.com/AndyYue1893/pwc

8.4 Spinning Up推荐论文 ★★★★★

  • https://zhuanlan.zhihu.com/p/50343077

9.1 会议:AAAI、NIPS、ICML、ICLR、IJCAI、 AAMAS、IROS等

9.2 期刊:AI、 JMLR、JAIR、 Machine Learning、JAAMAS等

9.3 计算机和人工智能会议(期刊)排名

  • https://www.ccf.org.cn/xspj/rgzn/

  • https://mp.weixin.qq.com/s?__biz=Mzg4MDE3OTA5NA==&mid=2247490957&idx=1&sn=b9aa515f7833ba1503be298ac2360960&source=41#wechat_redirect

  • https://www.aminer.cn/ranks/conf/artificial-intelligence-and-pattern-recognition

10.1 深度强化学习实验室 ★★★★★

10.2 机器之心 ★★★★★

10.3 AI科技评论 ★★★★

10.4 新智元 ★★★

11.1 用户

  • 许铁-巡洋舰科技(微信公众号同名)、Flood Sung(GitHub同名)

  • 田渊栋、周博磊、俞扬、张楚珩、天津包子馅儿、JQWang2048 及其互相关注大牛等

11.2 专栏

  • David Silver强化学习公开课中文讲解及实践(叶强,很经典)

  • 强化学习知识大讲堂(《深入浅出强化学习:原理入门》作者天津包子馅儿)

  • 智能单元(杜克、Floodsung、wxam,聚焦通用人工智能,Flood Sung:深度学习论文阅读路线图 Deep Learning Papers Reading Roadmap很棒)

  • 深度强化学习落地方法论(西交 大牛,实操经验丰富)

  • 深度强化学习(知乎:JQWang2048,GitHub:NeuronDance,CSDN:J. Q. Wang)

  • 神经网络与强化学习(《Reinforcement Learning: An Introduction》读书笔记)

  • 强化学习基础David Silver笔记(陈雄辉,南大,DiDi AI Labs)

12.1 草帽BOY

  • https://blog.csdn.net/u013236946/category_6965927.html

12.2 J. Q. Wang

  • https://blog.csdn.net/gsww404

12.3 Keavnn

【存照】ChatGPT如何解释什么是“生成式人工智能”

照片存款,保存照存照片,存照的软件,存照片的地方在哪里

原标题:【存照】ChatGPT如何解释什么是“生成式人工智能”

经过多年的研究,人工智能(AI)似乎正在达到一个临界点,吸引了所有人的想象力,从希望节省写作时间的学生到世界上最大的科技公司的领导者。人们对人工智能工具解锁的无限可能感到兴奋,但这些工具到底有什么功能以及它们的工作方式仍然没有得到广泛理解。

考虑到ChatGPT这样的高级工具已经变得如此先进,那么看看生成式人工智能对自己有什么看法是有意思的。

Generative AI具有广泛的应用,包括:

  • 图像:生成型AI可以基于现有图像创建新图像,例如基于人脸创建新的肖像或基于现有风景创建新的风景
  • 文本:生成型人工智能可用于撰写新闻文章、诗歌,甚至脚本。它还可以用于将文本从一种语言翻译成另一种语言
  • 音频:生成型AI可以生成新的音乐曲目、音效,甚至语音表演

哪些行业会被颠覆

人们担心,随着机器能够执行以前由人类完成的任务,生成性人工智能和自动化将导致工作流失和失业,特别是在制造业、客户服务和数据录入等行业。生成型人工智能有可能扰乱多个行业,包括:

  • 广告:生成型人工智能可以在现有广告的基础上创建新的广告,使公司更容易接触到新的受众
  • 艺术与设计:生成型人工智能可以通过产生新的想法和概念来帮助艺术家和设计师创造新的作品
  • 娱乐:生成型人工智能可以创造新的视频游戏、电影和电视节目,使内容创作者更容易接触新的受众

总的来说,尽管人工智能对就业市场的影响令人担忧,但也有许多潜在的好处可以对工人和经济产生积极影响。短期内,生成型人工智能工具也会对就业市场产生积极影响。例如,人工智能可以自动化重复和耗时的任务,并通过处理和分析大量数据帮助人类做出更快、更明智的决策。人工智能工具可以让人类 腾出时间专注于更具创造力和增值的工作。

ps 本文是使用OpenAI训练的语言模型AI生成的。

【 分 析 】 只 要 欧 洲 继 续 进 口 俄 罗 斯 天 然 气 , 乌 克 兰 的 天 然 气 管 道 就 是 安 全 的

【观点】马斯克:用氢气做储能“我能想到的最愚蠢的事 情 !”

【 图 说 】 I M F 预 测 2 0 2 2 年 G D P 增 速 最 快 的 1 0 个 国 家 , 印 度 最 引 人 注 目

【图说】五大可再生能源已占全球发电量的28 %

【 分 析 】 中 国 碳 排 放 何 以 连 续 三 个 季 度 下 降 ?

返回搜狐,查看更多

责任编辑: