1.OpenAI/Triton MLIR 第零章: 源码编译
2.大神用Python做个AI出牌器,测试测试实现财富自由附源码
3.AI Code Translator 编程语言自动转换工具源码分析
4.腾讯T2I-adapter源码分析(3)-训练源码分析
5.腾讯T2I-adapter源码分析(1)-运行源码跑训练
6.OpenAI 开源的源码免费 AI 语音转文字工具 - Whisper,一步一步本地部署运行
OpenAI/Triton MLIR 第零章: 源码编译
本文旨在深入探讨开源AI项目OpenAI Triton MLIR,工具着重介绍Triton作为编程语言与编译器在GPU加速计算领域的测试测试应用与优化。Triton为用户提供了一种全新的源码方式,通过将其后端接入LLVM IR,工具vscode开源源码利用NVPTX生成GPU代码,测试测试进而提升计算效率。源码相较于传统CUDA编程,工具Triton无需依赖NVIDIA的测试测试nvcc编译器,直接生成可运行的源码机器代码,体现出其在深度学习与数据科学领域的工具高性能计算潜力。Triton不仅支持NVIDIA GPU,测试测试还计划扩展至AMD与Intel GPU,源码其设计基于MLIR框架,工具通过Dialect支持多样化后端。本文将从源码编译角度出发,逐步解析Triton的设计理念与优化策略,为研究编译技术和系统优化的工程师提供宝贵资源。
首先,需要访问Triton的官方网站,克隆其官方代码库,以便后续操作。构建过程涉及两个重要依赖:LLVM与pybind。LLVM作为Triton的核心后端,通过将高级Python代码逐步转换至LLVM IR,最终生成GPU可运行代码,体现了其在计算优化领域的优势。pybind组件则用于封装C++/CUDA或汇编代码,实现Python DSL与高性能组件的无缝集成。
接下来,将LLVM与pybind分别编译安装,通过手动配置指定路径,确保编译过程顺利进行。LLVM的安装对于基于Triton进行二次开发的工程师和研究人员至关重要,因为它为Triton提供了强大的计算基础。在特定的commit ID下编译Triton,确保与后续版本兼容。
在编译过程中,配置pybind同样至关重要,它允许用户通过Python API调用高性能组件,实现自动化生成高性能算子。完成编译后,生成的.so文件(libtriton.so)为后续Triton的Python接口提供了支持。
将libtriton.so移动至triton/python/triton/_C目录下,确保Python路径正确配置,实现无缝导入与调用。通过简单的import triton命令,即可开启Triton的开发之旅。验证Triton性能,可以选择tutorials目录下的示例代码,如-matrix-multiplication.py,通过运行该脚本,观察Triton在GPU上的性能表现。
Triton在NVGPU上的成熟映射路线,从抽象的怎么判断源码好坏Python DSL到贴近GPU层面的IR,最终生成高效机器代码,体现了其在高性能计算领域的优越性。Triton未来的发展蓝图将支持更多前端语言,对接不同硬件厂商的硬件,实现高效映射,满足多样化计算需求。
大神用Python做个AI出牌器,实现财富自由附源码
在互联网上,我注意到一个有趣的开源项目——快手团队的DouZero,它将AI技术应用到了斗地主游戏中。今天,我们将通过学习如何使用这个原理,来制作一个能辅助出牌的欢乐斗地主AI工具,也许它能帮助我们提升游戏策略,迈向财富自由的境界。 首先,让我们看看AI出牌器的实际运作效果: 接下来,我们逐步构建这个AI出牌器的制作过程:核心功能与实现步骤
UI设计:首先,我们需要设计一个简洁的用户界面,使用Python的pyqt5库,如下是关键代码:
识别数据:在屏幕上抓取特定区域,通过模板匹配识别AI的手牌、底牌和对手出牌,这部分依赖于截图分析,核心代码如下:
地主确认:通过截图确定地主身份,代码负责处理这一环节:
AI出牌决策:利用DouZero的AI模型,对每一轮出牌进行判断和决策,这部分涉及到代码集成,例如:
有了这些功能,出牌器的基本流程就完成了。接下来是使用方法:使用与配置
环境安装:你需要安装相关库,并配置好运行环境,具体步骤如下:
位置调整:确保游戏窗口设置正确,AI出牌器窗口不遮挡关键信息:
运行测试:完成环境配置后,即可启动程序,与AI一起战斗:
最后,实际操作时,打开斗地主游戏,让AI在合适的时间介入,体验AI带来的智慧策略,看看它是否能帮助你赢得胜利!AI Code Translator 编程语言自动转换工具源码分析
近期,关注到开源库 PuerTS 提及“Lua到TS的AI转写”。基于此,我探究了一款基于GPT的代码翻译工具——“AI Code Translator”。此工具能将一种编程语言自动转换为另一种语言。PuerTS提及的“AI转写”可能采用了相似原理。本文将深入分析“AI Code Translator”中“转写”部分的实现。
项目地址:未提供
项目截图:未提供
尝试使用在线工具 aicodeconvert.com/ 将一段TS代码转为Lua。实际体验中,AI转换的Lua代码保留了TS代码的含义、结构和写法,但需要开发者补充一些在目标语言中不存在的类型或函数,例如Lua的class。此外,暗夜兵团源码名称保持与源代码一致,但如果源代码中使用特定库或框架,转换后的代码同样使用该库,但目标语言可能并未提供相应版本,需要开发者自行实现或先用AI转写源库。
分析工具的前端使用next.js编写,核心功能在Index.ts文件中,包含createPrompt和OpenAIStream两个关键方法。createPrompt负责构造AI翻译所需的提示词,OpenAIStream则封装了与OpenAI API的交互。createPrompt方法根据输入语言、输出语言以及代码内容构建提示词,旨在让AI理解翻译任务并生成目标代码。
创建提示词的方法分为三个主要分支,分别针对自然语言输入、自然语言输出以及具体编程语言的输入和输出情况。在构建提示词时,采用身份说明、任务描述、举例、具体文本填充和输出格式续写等步骤,旨在引导AI完成代码翻译。
对于大工程的转写,建议采用以下改进策略:分析代码依赖关系,优先转写底层代码;分段处理代码,避免超过AI处理的token长度限制;对AI生成的代码进行人工检查和测试,提升代码质量。这些技巧可帮助开发者更高效地利用AI转写工具。
总结,AI转写工具“AI Code Translator”通过简单的提示词构造实现代码自动转换。虽然适用于小型代码段,但对于大工程的转写还需结合人工辅助,以提高效率和代码质量。此外,若目标是学习和开发网络游戏,特别是手机游戏或游戏行业相关工作,推荐阅读《Unity3D网络游戏实战(第2版)》,本书由作者总结多年经验编写,提供实用的教程和知识,非常适合这一领域的需求。
腾讯T2I-adapter源码分析(3)-训练源码分析
随着stable-diffusion和midjourney等AI技术展现令人惊叹的艺术创作,人们对AI可控绘图的追求日益高涨。为提升AI图像生成的可控性,Controlnet和T2I-adapter等解决方案应运而生。系列文章将从T2I-adapter的源码出发,深入剖析其训练部分的实现原理。
本篇我们将聚焦于训练源码的解析,通过代码结构的梳理,了解T2I-Adapter的训练流程。
训练代码的运行涉及数据处理、模型加载、优化器设置以及实际训练过程。在第一部分,我们首先设置参数并加载数据,如DepthDataset,软考题库源码它从txt文件中读取、对应的深度图和文本描述。
在模型加载阶段,我们区分了stable-diffusion模型和adapter。stable-diffusion模型加载时,其配置与推理阶段有所差异,如增加调度器参数、提高精度、调整分辨率和训练相关参数。adapter模型的加载则遵循推理过程中的初始化方法,通过构建不同模块来实现。
训练过程中,adapter模型的关键结构包括下采样、卷积和ResnetBlock的使用,相比controlnet,T2I-adapter的参数更少,没有注意力层,这使得训练更为高效。模型放入GPU后,使用adamW优化器进行训练,同时设置学习率和数据保存路径。
状态恢复部分,程序会判断是否从头开始或恢复训练,设置log信息。接下来,代码进入实际的训练循环,包括条件编码、隐藏状态生成、adapter结果附加至sd模型以及adapter梯度计算。
loss函数定义在模型配置中,采用L2损失来衡量生成图像与给定时间点加噪ground truth的接近程度。训练过程中,loss计算和模型保存都在代码中明确体现。
总的来说,T2I-adapter的训练源码展示了精细的结构和参数设置,确保了AI绘画的可控性和性能。在AI艺术的探索中,每一行代码都承载着技术进步的点滴痕迹。
腾讯T2I-adapter源码分析(1)-运行源码跑训练
稳定扩散、midjourney等AI绘图技术,为人们带来了令人惊叹的效果,不禁让人感叹技术发展的日新月异。然而,AI绘图的可控性一直不是很好,通过prompt描述词来操控图像很难做到随心所欲。为了使AI绘制的图像更具可控性,Controlnet、T2I-adapter等技术应运而生。本系列文章将从T2I-adapter的源码出发,分析其实现方法。
本篇是第一篇,主要介绍源码的运行方法,后续两篇将以深度图为例,分别分析推理部分和训练部分的代码。分析T2I-Adapter,全景直播制作源码也是为了继续研究我一直在研究的课题:“AI生成同一人物不同动作”,例如:罗培羽:stable-diffusion生成同一人物不同动作的尝试(多姿势图),Controlnet、T2I-adapter给了我一些灵感,后续将进行尝试。
T2I-Adapter论文地址如下,它与controlnet类似,都是在原模型增加一个旁路,然后对推理结果求和。
T2I-Adapter和controlnet有两个主要的不同点,从图中可见,其一是在unet的编码阶段增加参数,而controlnet主要是解码阶段;其二是controlnet复制unit的上半部结构,而T2I-Adapter使用不同的模型结构。由于采用较小的模型,因此T2I-Adapter的模型较小,默认下占用M左右,而controlnet模型一般要5G空间。
首先确保机器上装有3.6版本以上python,然后把代码clone下来。随后安装依赖项,打开requirements.txt,可以看到依赖项的内容。然后下载示例,下载的会放到examples目录下。接着下载sd模型到model目录下,再下载T2I-Adapter的模型到目录下,模型可以按需到huggingface.co/TencentA...下载。这里我下载了depth和openpose。sd模型除了上述的v1-5,也还下载了sd-v1-4.ckpt。
根据文档,尝试运行一个由深度图生成的例子,下图的左侧是深度图,提示语是"desk, best quality, extremely detailed",右侧是生成出来的。运行过程比较艰辛,一开始在一台8G显存的服务器上跑,显存不够;重新搭环境在一台G显存的服务器上跑,还是不够;最后用一台G显存的服务器,终于运行起来了。
接下来尝试跑openpose的例子,下图左侧是骨架图,提示词为"Iron man, high-quality, high-res",右侧是生成的图像。
既然能跑推理,那么尝试跑训练。为了后续修改代码运行,目标是准备一点点数据把训练代码跑起来,至于训练的效果不是当前关注的。程序中也有训练的脚步,我们以训练深度图条件为例,来运行train_depth.py。
显然,习惯了,会有一些问题没法直接运行,需要先做两步工作。准备训练数据,分析代码,定位到ldm/data/dataset_depth.py,反推它的数据集结构,然后准备对应数据。先创建文件datasets/laion_depth_meta_v1.txt,用于存放数据文件的地址,由于只是测试,我就只添加两行。然后准备,图中的.png和.png是结果图,.depth.png和.depth.png是深度图,.txt和.txt是对应的文本描述。
文本描述如下,都只是为了把代码跑起来而做的简单设置。设置环境变量,由于T2I-Adapter使用多卡训练,显然我也没这个环境,因此要让它在单机上跑。而代码中也会获取一些环境变量,因此做简单的设置。
做好准备工作,可以运行程序了,出于硬件条件限制,只能把batch size设置为1。在A显卡跑了约8小时,完成,按默认的配置,模型保存experiments/train_depth/models/model_ad_.pth。那么,使用训练出来的模型试试效果,能生成如下(此处只是为了跑起来代码,用训练集来测试),验证了可以跑起来。
运行起来,但这还不够,我们还得看看代码是怎么写法,下一篇见。
PS:《直观理解AI博弈原理》是笔者写的一篇长文,从五子棋、象棋、围棋的AI演进讲起,从深度遍历、MAX-MIN剪枝再到蒙特卡罗树搜索,一步步介绍AI博弈的原理,而后引出强化学习方法,通俗易懂地介绍AlphaGo围棋、星际争霸强化学习AI、王者荣耀AI的一些强化学习要点,值得推荐。
AUTOMATIC的webui是近期很流行的stable-diffusion应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术,我们也分析了它的源码实现,写了一系列文章。
OpenAI 开源的免费 AI 语音转文字工具 - Whisper,一步一步本地部署运行
OpenAI 推出的开源免费工具 Whisper,以其出色的语音识别功能吸引了不少关注。这款模型不仅能够进行多语言的语音转文本,还能进行语音翻译和语言识别,实用价值极高。市面上许多语音转文字服务如讯飞语记等都收费,而Whisper作为开源选择,无疑是一个经济实惠且性能强大的解决方案。
想在本地体验Whisper,首先需要为Windows设备安装ffmpeg和rust。ffmpeg可以从ffmpeg.org下载并配置环境变量,而rust则可以从rust-lang.org获取并确保命令行可用。接着,创建一个python虚拟环境,安装Whisper所需的依赖库。
运行Whisper的过程相当直接。通过命令行,只需提供音频文件如"Haul.mp3",并指定使用"medium"模型(模型大小从tiny到large递增)。首次运行时,Whisper会自动下载并加载模型,然后开始识别并输出文本,同时将结果保存到文件中。如果想在Python代码中集成,也相当简单。
如果你对此技术感兴趣,不妨亲自尝试一下。项目的源代码可以在github.com/openai/whisper找到。这不仅是一次AI技术的体验,还可能开启语音转文字的新篇章。更多详情可参考gpt.com/article/的信息。
标签推荐:#AI技术 #OpenAI开源 #Whisper模型 #语音转文字 #ChatGPT应用
AI与PDE(七):AFNO模型的源代码解析
本文旨在解析AFNO模型的源代码,帮助读者理解模型细节与主干结构。首先,AFNO模型的主干框架在afnonet.py文件中定义,通过类AFNONet实现。模型的核心功能封装在多个类与函数中,依据代码注释逐步解析。
在代码中,forward_features函数负责模型的核心逻辑,包括patch切割与mixing过程。这些操作由PatchEmbed类实现。位置编码self.pos_embed通过高斯初始化得到,增加模型的表示能力。
关键模块AFNO2d位于代码中,它基于FNO的原理,负责处理输入数据。AFNO2d模块在forward_features函数中通过循环调用,实现数据的转换与混合。
经过数个L layer处理后,模型进入类似解码器的结构,用于将中间结果映射为目标结果。这一过程通过self.head(x)实现,以解决特定分类问题。
本文通过梳理代码流程与结构图,直观展示了AFNO模型的工作原理。读者可参考AFNO的GitHub源代码与论文,深入理解细节。后续文章将继续探讨基于AFNO模型框架的其他应用,如FourCastNet。
尝试了个AI代码生成器,这个是我觉得最好用的~~~从此再无编程小白!(第一期)
Codeium 是一种人工智能驱动的代码完成工具,旨在简化编码过程。支持 多种语言并与流行的 IDE 集成,减少样板代码,查找和使用 API,并生成单元测试。允许开发人员以自然语言键入注释以完成代码,被 Adobe、Dropbox、IBM、Pinterest、Salesforce 和 Tesla 等顶级公司信赖,且免费使用。
Safurai 是一个基于 AI 的 IDE 扩展,帮助开发人员进行编码、调试和重构。充当虚拟助手,为软件开发过程中可能出现的任何问题提供解决方案和建议,改进工作流程和代码质量。
GitFluence 是一种人工智能驱动的解决方案,帮助用户快速找到适合其特定需求的正确 git 命令。易于使用的网络应用程序,输入所需 git 操作的描述并接收相关命令建议,省时省力。
Phind 是专为开发人员设计的人工智能搜索引擎,可定制搜索,探索功能,提供 AI 驱动的相关主题和增强搜索结果的建议,还有 Surprise Me 功能随机选择主题供用户发现和探索。
Cron AI 是一种人工智能驱动的 cron 表达式生成器,简化 cron 作业的创建。易用性,快速将输入的单词转换为 cron 表达式以设置 cron 作业,效率高,减少创建 cron 作业所需的复杂性和时间。
Amazon CodeWhisperer 是一项由机器学习 (ML) 提供支持的服务,根据开发人员在集成开发环境 (IDE) 中以自然语言和代码发表的评论生成代码建议,提高开发人员的工作效率。
AI CLI 是开源 GPT -3 Powered CLI,当前提示长度为 ~ 个令牌,1K 令牌的 text-davinci- 定价为 0. 美元,即 ~0. 美元/命令,考虑通过微调改善响应并降低每条命令的成本。
Bito 是一款由 AI 驱动的代码助手,帮助开发人员自动执行任务并将生成代码的速度提高 倍。生成代码、构建单元测试、创建代码注释、解释新代码以及检查安全漏洞,适用于 AppCode、GoLand、IntelliJ、PyCharm、PhpStorm、Rider、RubyMine 和 WebStorm,注重用户隐私,从不存储或复制代码,始终对数据和日志进行加密。
Google Colab Copilot 是一款旨在自动化 Google Colab 工作区、简化用户体验的工具。在 Google Colab 上无缝实施,轻松设置,便捷激活,满足数据科学家、研究人员和开发人员的需求。
Codium 是一种人工智能工具,帮助开发人员更快地编写测试并在部署前发现错误。分析源代码、文档字符串和注释以生成有意义的测试,提供测试建议,侧重于边缘情况和方法参数以确保准确性。
Code GPT 是一个 VS 代码扩展,具有 StackOverflow 支持、解释、重构、文档、查找问题和单元测试等优秀功能。
Arduino 代码生成器 是一种人工智能工具,为 Arduino 兼容板自动执行代码生成过程。利用 GPT-3 算法快速生成代码,节省用户时间,提供有关 Arduino 项目的零件、组件和教程的建议,允许用户直接从网站购买零部件。
Hacker AI 是一种由人工智能驱动的代码审计工具,旨在识别和修复源代码中潜在的安全漏洞。扫描源代码以查找安全问题,帮助组织检测和修复漏洞以防止网络攻击,测试期间免费,无需创建帐户,用户在 分钟内收到漏洞报告。
Refraction 是一种基于 AI 的代码改进工具,简化开发过程。适用于 C#、C++、Go、Java、JavaScript、TypeScript、PHP、Python、R Lang、Ruby 和 Swift,自动重构和测试,代码解释、语言转换、硬编码文字分离和样式检查。
Maverick 是一种由 AI 提供支持的代码完成工具,基于 Yurts,专注于在不接触任何 API 或知识库的情况下在本地机器上提供最佳代码完成。
Buildt AI 是一种基于人工智能的代码库搜索工具,简化开发人员的代码管理。使用自然语言搜索快速准确地查找、生成和替换代码片段,生成新代码、重构现有代码、扩展功能以及删除遗留或重复代码,添加或更新依赖更改,支持 Javascript 和 Typescript,未来计划支持 + 语言。
CodeGeeX 是一个拥有 亿参数的大规模多语言代码生成模型,在超过 种编程语言的大型代码语料库上进行预训练,支持 种以上的代码生成和翻译编程语言。
Programming Helper 是一种人工智能工具,协助完成各种编程任务。从文本描述生成代码、SQL 命令、HTML 和 CSS,将代码翻译成任何编程语言并用通俗易懂的英语解释代码,修复无效代码、生成测试并向代码添加类型,创建正则表达式、查找 Git 命令、获取 Linux 命令以及根据描述生成元标记,提供编程相关问题的解答。
CodeAssist 是一个人工智能聊天机器人界面,专为在 Jetbrains IDE 和 Visual Studio Code 中编程而设计。与聊天机器人交流,就像与人交谈一样,允许它查看和修改代码,根据用户的代码库生成代码完成,考虑代码库其他部分的文件和函数/类,适用于所有流行的编程语言,提供更集中的响应。
Clippy AI(VS 代码扩展)是 OpenAI Codex 的简单包装器,允许您向 Codex 发送您的当前文件以及一些纯文本英语说明,然后它会在您的编辑器中打开一个差异视图,以便您可以轻松查看建议的更改并接受或拒绝它们。