#适合初学者的Python编程课程
吴恩达亲自授课,LLM当「助教」
今天,人工智能著名学者、斯坦福大学教授吴恩达在社交平台 X 上发帖介绍了一门新课程 ——AI Python for Beginners,旨在从头开始讲授 Python 编程知识,适合初学者学习。吴恩达将担任该课程讲师。
课程链接:https://www.deeplearning.ai/short-courses/ai-python-for-beginners/
AI Python for Beginners 课程由四个部分组成,包括:
- AI Python 编程基础知识:学习 Python 基础知识,并立即将它们应用到人工智能应用程序中。
- 使用 Python 自动化任务:学习如何自动执行重复任务并使用代码做出决策。学生将了解有效使用数据的方式,并创建人工智能驱动的工具,这些工具可以对任务进行优先级排序。
- 使用 Python 处理数据和文档:学习编写自定义函数来执行特定任务,使用 Python 读取文档内的数据并将其存储为字符串或数字,将文档中的文本传递给大型语言模型(LLM),并要求其以特定方式进行分析。
- 使用包和 API 扩展 Python:学会使用第三方代码扩展 Python,并创建一个简单的 AI 智能体。
学生将掌握 Python 基础知识,并学习基本的编程概念,如变量、函数、循环、数据结构等等。该课程还将教学生编写实用的人工智能应用程序,例如构建自定义菜谱生成器、智能待办事项列表和假期计划器等。这种实践方法可以让学生学会编写调用 AI 模型的代码,使其在工作和个人项目中编程更加高效。
吴恩达表示:「生成式人工智能正在改变编程方式」,因此该课程将在人工智能聊天机器人的协助下展开,聊天机器人可以帮助学生编写、测试和调试代码,提供即时反馈和个性化指导,让学生持续学习编程技能。
在课程结束时,学生将能够编写与大型语言模型交互的 Python 脚本、分析数据,甚至创建简单的 AI 智能体。
值得注意的是,这门课程是免费课程,感兴趣的读者快去看看吧。
参考链接: https://www.deeplearning.ai/short-courses/ai-python-for-beginners/
#杂文
入职一年半,这个AI员工晋升为了国内首位AI架构师
你敢想,AI 已经不满足只做程序员了,如今又向架构师这一进阶职业发起挑战。
随着 AI 在研发领域的不断进化,能提供给工程师的助力越来越多,从原先单纯的编码加速器不断延展到架构理解、质量分析、安全扫描、测试生成等更多领域。同时结合 RAG 技术的不断落地应用,对私域知识、本地场景的深刻理解,AI 代码助手的能力边界正在不断被打破。
年初,英伟达创始人、CEO 黄仁勋的一番话引发了计算机行业内外的热议。他表示:「生成式 AI 的持续发展大大降低了学习编程的意义,未来人人都可以成为程序员。」无独有偶,百度创始人、CEO 李彦宏也在一次访谈中指出,「这波人工智能的改变可能更加彻底和深刻,基本上以后不会再存在程序员这种职业了。只要会说话,人人都会具备程序员的能力。」
两位科技大佬的观点倒不是说未来程序员都会失业,而是在 AI 的帮助下,更多研发行业中非程序员的角色也可以具备基本的开发程序的能力,而具备专业技能的软件工程师们在 AI 助力下将发挥更大的价值。
同时,两位科技大佬的观点一定程度上揭示了一个重要趋势:随着大模型赋能的 AI 代码助手在企业业务场景的应用落地,AI 辅助所占的比重越来越高。Stack Overflow 2024 开发者调查报告显示,76% 的受访者正在或计划在开发过程中使用 AI 工具,有好感或非常有好感的比例达到了 72%。
国内外大厂都在 AI 代码助手这一赛道重兵投入,而率先入局者已经在自身业务中初见成效,比如百度内部已经有 30%的代码由其智能代码助手「文心快码 Baidu Comate」生成。
说到文心快码(Baidu Comate),它还是在 6 月底百度 WAVE SUMMIT 深度学习开发者大会上拥有了自己的中文名,并升级到了 2.5 版本。算起来,自 2023 年 4 月推出以来,文心快码已经是一位「练习时长快一年半」的 AI 程序员了。
在岗这么长时间,文心快码现已支持了 C/C++、Java 等 100 多种编程语言和 VS Code、Jetbrains 系列等 19 款主流 IDE 平台,能够续写已有代码、利用自然语言指令生成代码、根据注释写代码并在代码基础上生成注释。我们观察到,百度内部已经有 80%的工程师在深度使用文心快码。
而随着基础模型能力的持续提升以及 AI 代码助手在工作中越来越驾轻就熟,其自身能力也在不断进化。这不,百度文心快码不满足只干程序员的活了,它表现出来的一些能力正在告诉人们:自己甚至可以胜任架构师的角色了!
不过,在揭秘文心快码的「进阶能力」之前,我们有必要先来了解一下程序员与架构师的区别。
AI 程序员的职业晋升
做专才更要通才
如果说程序员是某一技术领域的专才(如前端、后端、移动应用开发),架构师则可以称得上多个技术领域的通才了,他们要在软件开发、系统架构、网络通信、数据库设计等方面都玩得转。
从职能上看,程序员侧重于在实现层面执行编写代码、调试与测试、维护等具体任务,而架构师主要负责整体系统的设计和规划,包括系统架构、模块划分、技术选型等,还要做出技术决策并指导团队。
因此,程序员晋升为架构师需要全方位的提升。同样地,AI 代码助手要想成功地将自身角色从程序员跨越到架构师,必然要在承担的职责、具备的技能方面更上一个台阶。
文心快码既然宣称升级成为了「互联网首位 AI 架构师」,想必已经掌握了承担相应角色与任务的必备技能。
自落地百度内部以来,文心快码在完成常见编程任务方面自不必多说,代码采纳率也达到了 46%。随着向架构师角色的转变,如今的文心快码更懂业务架构、更懂测试、更懂领域知识、更能解决代码编程中的疑难问题。
首要一点便是能更高效地解决编程中的架构问题,它们往往涉及到系统的层次结构、模块划分、控制流和数据流等方面。人类架构师统筹起来尚且不容易,而文心快码在拥有了架构师的能力后,可以通过代码解释,快速了解函数在「真实业务背景下的含义」。
不仅如此,为了更清楚地洞见编程逻辑框架、项目管理全流程,文心快码还能通过流程图的方式,直观地展示完整的调用逻辑。
其次代码质量也是架构师关注的关键领域,而单元测试(UT)则是保障代码质量的关键举措,以确保系统稳定性和可靠性。文心快码在单元测试生成方面迎来全面强化,不仅 UT 生成效果大幅提升,生成的 UT 用例更是达到了 100% 有效。
做到这些要归功于文心快码自动识别工程所使用的测试框架版本,它能够自动识别被测方法跨文件依赖,并自动参考已有单元测试书写风格,因而可以生成更贴近真实场景、效果更优、可用性更强的单元测试代码。
同时得益于文心快码四层架构的 AI 优化,UT 生成速度同样大幅提升。即使面对复杂的函数,平均 6 秒就能自动生成可用单元测试,缩短了等待加载时间。
在 UT 生成效果和速度得到加强之外,文心快码还支持批量生成 UT,实现了质、速和量的三合一提升。
面对纷繁复杂的变更函数以及堆积成山的历史代码,文心快码可以针对目录、多文件、单文件等多类型一键发起生成,并做到生成、验证和修复同步进行,确保 UT 用例的有效可靠。
此外,对于找到并修复程序中的错误或缺陷,文心快码做到了更好、更快。只需要选中报错的日志,然后交给文心快码进行对比分析和修复,它会自动给出错误原因和错误修复方式,一目了然。同时也可以进行多轮 Debug,只要一句话,便能解决研发过程中遇到的各种疑难问题。
如果以百度自身对架构师的定义来评判文心快码如今的表现,可以说它从业务理解、代码能力、文档编写和技术视野四个维度得到了全方面加强,并提供了一系列相应的自动化服务。
当文心快码这样的 AI 代码助手开始从架构师的角度来思考并解决问题时,势必会对包括提出需求、编写代码、测试与发布、检测潜在 bug 与安全漏洞在内的整个开发流程带来更大增益,进一步提升业务迭代速度。
当然,工欲善其事必先利其器。文心快码进化到拥有架构师的能力并不是一蹴而就,而是各方面因素综合作用的结果。
进化的背后
是多点发力
我们知道,文心快码背后是文心大模型提供动力,前不久刚刚升级到 4.0 Turbo 版本。通过更大训练数据体量、更优数据分布与质量、更强训练算法,文心大模型在理解、逻辑推理层面再次跃升。
可以说,更强大文心大模型为文心快码的又一次「变身」提供了理论上的可能和坚实基础。
在此之外,文心快码在高质量训练数据集、专家参与的知识体系、私域知识增强以及精调和优化方面形成了独有优势。
首先是在数据层面「做深文章」。数据作为 AI 三大要素之一,对模型训练效果的作用举足轻重。文心快码拥有充足且高质量的训练数据集,涵盖了百度内部严格筛选的优秀代码数据集以及 GitHub、GitLab 等外部主流开源代码库资源,最大程度实现预训练数据的多样性和丰富性。
因此,有了更多、更全、更优质的数据支撑,文心快码才能更加深入理解和学习不同的编程语言、框架及真实业务场景下的编码规律。
其次在构建知识体系的过程中做到了双管齐下。不断吸收并学习知识是提升 AI 理解、推理和决策能力,并在实际应用中更加精准和高效的关键因素。
一方面,通过由语言、框架、知识集等多个维度的专家团队的共同努力,整理并构建了由上万个知识集组成的专家知识体系,在覆盖基础语法、数据结构等通用知识之外,还深入到了特定框架、库及业务场景的高级应用,实现通用与专用知识的结合。
另一方面是增强了私域知识。在关注外部客户业务需求的基础上,文心快码为他们提供了基于 RAG 技术的数据检索增强功能,提升在具体业务场景中的生成能力和准确性。同时完善评估与持续优化机制,在上线后也能根据客户反馈及时处理和调整,适应他们可能变化的业务状况和需求,形成数据、效果、产品功能和应用实践一整个链条的快速反馈迭代。
最后是注重精调与优化。这一点在百度内部尤为明显,有了对上万工程师研发实践以及内部用户使用习惯和需求的充分了解,利用类似 DPO(数据驱动优化)的技术手段对内部代码数据进行深入分析,构建了反映用户真实需求的专用数据集。同时在不断迭代和优化过程中形成数据飞轮效应,持续指导模型精调。
至此,在底层模型的加持之外,文心快码进阶到 AI 架构师完成了数据、知识、精调与优化多层面的技术和实践准备。
目前,文心快码已经收获了多领域大量客户的认可,并已在喜马拉雅、数蓬科技、南威软件、华农保险等企业的应用中提升了研发效率,为其业务发展和技术创新注入了新的强大动力。
写在最后
从微软推出 Copilot 编程助手到雨后春笋般涌现的代码大模型及智能代码助手、再到今年首位 AI 软件工程师 Devin 的诞生,AI 进化的速度实在令人惊叹。
这一方面要看到 AI 代码助手的应用潜力。根据《Gartner 2024 年十大战略技术趋势》预测,到 2028 年,75% 的企业软件工程师将使用 AI 编码助手,这一比例在 2023 年初还不足 10%。因此,在需求趋势驱动下,AI 代码助手持续「修炼内功」是必然的。
此次百度文心快码在职能上向架构师的延伸,正是这一趋势的体现,也意味着对编程领域的影响越来越深入,逐渐地从单一的编程任务渗透到整个研发全生命周期并有可能重构研发范式。
可以预见,在未来相当长的一段时间里,AI 代码助手会强势存在并不断进化。对于编程甚至更高层次的架构设计工作而言,助力将会越来越大。到时候,工程师们将不会被繁琐的工作所牵绊,效率加倍,留出更多的时间去享受生活。
这两天冲上热搜的太原理工 2024 软件工程专业招生近 2000 人,也从侧面说明软件工程师这一职业仍有巨大前景。而且我们了解到,该专业所属的软件学院还是首批使用文心快码的机构之一,可见新技术已经与未来的软件研发生力军在建立了联系。
因此,关键在于如何在理念和实践中利用好 AI。正如斯坦福著名学者 Erik Brynjolfsson 所言,企业应该将 AI 视为员工的合作伙伴,而非竞争对手。程序员要让 AI 处理它们擅长的重复、繁琐和机械的事情,自身则专注于那些能够发挥核心价值的创造性工作。
以百度为例,它在开发文心快码的过程中汇集了数万工程师的实践经验,形成三大「人机协同价值观」,包括 AI 不会取代你但会 AI 的人将在职业市场上更具有竞争力,人机协同的关系中人始终处于 Control 的地位和人机协同、共同进化,可以为人机和谐相处提供一定借鉴。
未来,随着 AI 代码助手扮演的角色越来越强大,胜任的任务越来越多,其与人的共存将会是一个长期命题,需要包括百度在内的各方汇聚智慧来正确对待和解决。
#ByteCheckpoint
Llama3训练每3小时崩一次?豆包大模型、港大团队为脆皮万卡训练提效
伴随大模型迭代速度越来越快,训练集群规模越来越大,高频率的软硬件故障已经成为阻碍训练效率进一步提高的痛点,检查点(Checkpoint)系统在训练过程中负责状态的存储和恢复,已经成为克服训练故障、保障训练进度和提高训练效率的关键。
近日,字节跳动豆包大模型团队与香港大学联合提出了 ByteCheckpoint。这是一个 PyTorch 原生,兼容多个训练框架,支持 Checkpoint 的高效读写和自动重新切分的大模型 Checkpointing 系统,相比现有方法有显著性能提升和易用性优势。本文介绍了大模型训练提效中 Checkpoint 方向面临的挑战,总结 ByteCheckpoint 的解决思路、系统设计、I/O 性能优化技术,以及在存储性能和读取性能测试的实验结果。
Meta 官方最近披露了在 16384 块 H100 80GB 训练集群上进行 Llama3 405B 训练的故障率 —— 短短 54 天,发生 419 次中断,平均每三小时崩溃一次,引来不少从业者关注。
正如业内一句常言,大型训练系统唯一确定的,便是软硬件故障。随着训练规模与模型大小的日益增长,克服软硬件故障,提高训练效率成为大模型迭代的重要影响要素。
Checkpoint 已成为训练提效关键。在 Llama 训练报告中,技术团队提到,为了对抗高故障率,需要在训练过程中频繁地进行 Checkpoint ,保存训练中的模型、优化器、数据读取器状态,减少训练进度损失。
字节跳动豆包大模型团队与港大近期公开了成果 —— ByteCheckpoint ,一个 PyTorch 原生,兼容多个训练框架,支持 Checkpoint 的高效读写和自动重新切分的大模型 Checkpointing 系统。
与基线方法相比,ByteCheckpoint 在 Checkpoint 保存上性能提升高达 529.22 倍,在加载上,性能提升高达 3.51 倍。极简的用户接口和 Checkpoint 自动重新切分功能,显著降低了用户上手和使用成本,提高了系统的易用性。
目前论文成果已对外公开。
- ByteCheckpoint: A Unified Checkpointing System for LLM Development
- 论文链接:https://team.doubao.com/zh/publication/bytecheckpoint-a-unified-checkpointing-system-for-llm-development?view_from=research
Checkpoint 技术在大模型训练中的技术挑战
当前 Checkpoint 相关技术在支持大模型训练提效中,共面临四个方面挑战:
- 现有系统设计存在缺陷,显著增加训练额外 I/O 开销
在训练工业级别的大语言模型 (LLM) 的过程中,训练状态需要通过检查点技术 ( Checkpointing ) 进行保存和持久化。通常情况下,一个 Checkpoint 包括 5 个部分 (模型,优化器,数据读取器,随机数和用户自定义配置)。这一过程往往会给训练带来分钟级别的阻塞,严重影响训练效率。
在使用远程持久化存储系统的大规模训练场景下,现有的 Checkpointing 系统没有充分利用 Checkpoint 保存过程中 GPU 到 CPU 内存拷贝 ( D2H 复制),序列化,本地存盘,上传到存储系统各个阶段的执行独立性。
此外,不同训练进程共同分担 Checkpoint 存取任务的并行处理潜力也没有被充分发掘。这些系统设计上的不足增加了 Checkpoint 训练带来的额外 I/O 开销。
- Checkpoint 重新切分困难,手动切分脚本开发维护开销过高
在 LLM 的不同训练阶段 (预训练到 SFT 或者 RLHF ) 以及不同任务 (从训练任务拉取不同阶段的 Checkpoint 进行执行自动评估) 之间进行 Checkpoint 迁移时,通常需要对保存在持久化存储系统中的 Checkpoint 进行重新切分 ( Checkpoint Resharding ) ,以适应下游任务的新并行度配置以及可用 GPU 资源的配额。
现有 Checkpointing 系统 [1, 2, 3, 4] 都假设存储和加载时,并行度配置和 GPU 资源保持不变,无法处理 Checkpoint 重新切分的需求。工业界目前常见的解决办法是 —— 为不同模型定制 Checkpoint 合并或者重新切分脚本。这种方法带来了大量开发与维护开销,可扩展性较差。
- 不同的训练框架 Checkpoint 模块割裂,为 Checkpoint 统一管理和性能优化带来挑战
在工业界的训练平台上,工程师与科学家往往会根据任务特性,选择合适框架 (Megatron-LM [5], FSDP [6], DeepSpeed [7], veScale [8, 9]) 进行训练,并保存 Checkpoint 到存储系统。然而,这些不同的训练框架都具有自己独立的 Checkpoint 格式以及读写模块。不同训练框架的 Checkpoint 模块设计不尽相同,为底层系统进行统一的 Checkpoint 管理以及性能优化带来了挑战。
- 分布式训练系统的用户面临多重困扰
从训练系统的用户( AI 研究科学家或工程师)的角度出发,用户使用分布式训练系统时,在 Checkpoint 方向往往会被三个问题困扰:
1)如何高效地存储 Checkpoint ,在不影响训练效率的情况下保存 Checkpoint。
2)如何重新切分 Checkpoint ,对于在一个并行度下存储的 Checkpoint ,根据新的并行度正确读入。
3)如何把训练得到的产物上传到云存储系统上( HDFS,S3 等),手动管理多个存储系统,对用户来说学习和使用成本较高。
针对上述问题,字节跳动豆包大模型团队和香港大学吴川教授实验室联合推出了 ByteCheckpoint 。
ByteCheckpoint 是一个多训练框架统一,支持多存储后端,具备自动 Checkpoint 重新切分能力的高性能分布式 Checkpointing 系统。ByteCheckpoint 提供了简单易用的用户接口 ,实现了大量 I/O 性能优化技术提高了存储和读取 Checkpoint 性能,并支持 Checkpoint 在不同并行度配置的任务中的灵活迁移。
系统设计
存储架构
ByteCheckpoint 采用了元数据 / 张量数据分离的存储架构,实现了 Checkpoint 管理与训练框架和并行度的解耦合。
不同训练框架中的模型以及优化器的张量切片 ( Tensor Shard) 存储在 storage 文件中,元信息 (TensorMeta, ShardMeta, ByteMeta) 存储到全局唯一的 metadata 文件中。
当使用不同的并行度配置读取 Checkpoint 时,如下图所示,每个训练进程只需要根据当前的并行度设置查询元信息,便能够获取进程所需要张量的存储位置,再根据位置直接读取,实现自动 Checkpoint 重新切分。
巧解不规则张量切分
不同训练框架在运行时,往往会把模型或者优化器中张量的形状摊平 ( Flatten ) 成一维,从而提高集合通信性能。这种摊平操作给 Checkpoint 存储带来了不规则张量切分 (Irregular Tensor Sharding) 的挑战。
如下图所示,在 Megatron-LM (由 NVIDIA 研发的分布式大模型训练框架) 和 veScale (由字节跳动研发的 PyTorch 原生分布式大模型训练框架) 中,模型参数对应的优化器状态会被展平为一维后合并,再根据数据并行度切分。这导致张量被不规则地切分到不同进程之中,张量切片的元信息无法使用偏移量和长度元组来表示,给存储和读取带来困难。
不规则张量切分的问题在 FSDP 框架中也同样存在。
为消除不规则切分的张量切片 ,FSDP 框架在存储 Checkpoint 之前会在所有进程上对一维张量切片进行 all-gather 集合通信以及 D2H 复制操作,以获取完整不规则切分的张量。这种方案带来了极大的通信和频繁的 GPU-CPU 同步开销,严重影响了 Checkpoint 存储的性能。
针对这个问题,ByteCheckpoint 提出了异步张量合并 (Asynchronous Tensor Merging) 技术。
ByteCheckpoint 首先找出不同进程中被不规则切分的张量,之后采用异步的 P2P 通信,把这些不规则的张量分配到不同进程上进行合并。所有针对这些不规则张量的 P2P 通信等待(Wait) 以及张量 D2H 复制操作被推迟到他们即将进入序列化阶段的时候,从而消除了频繁的同步开销,也增加了通信与其他 Checkpoint 存储流程的执行重叠度。
系统架构
下图展示了 ByteCheckpoint 的系统架构:
API 层为不同训练框架提供了简单,易用且统一的读取和写入 ( Save )和读取( Load )接口。
Planner 层会根据存取对象为不同训练进程生成存取方案,交由 Execution 层执行实际的 I/O 任务。
Execution 层执行 I/O 任务并与 Storage 层进行交互,利用各种 I/O 优化技术进行高性能的 Checkpoint 存取。
Storage 层管理不同的存储后端,并在 I/O 任务过程中根据不同存储后端进行相应的优化。
分层设计增强了系统的可扩展性,以便未来支持更多的训练框架和存储后端。
API 用例
ByteCheckpoint 的 API 用例如下:
ByteCheckpoint 提供了极简 API ,降低了用户上手的成本。用户在存储和读取 Checkpoint 时,只需要调用存储和加载函数,传入需要存储和读取的内容,文件系统路径和各种性能优化选项。
I/O 性能优化技术
Checkpoint 存储优化
流水线执行
如下图所示,ByteCheckpoint 设计了全异步的存储流水线(Save Pipeline),将 Checkpoint 存储的不同阶段(P2P 张量传输,D2H 复制,序列化,保存本地和上传文件系统)进行拆分,实现高效的流水线执行。
避免内存重复分配
在 D2H 复制过程,ByteCheckpoint 采用固定内存池( Pinned Memory Pool ),减少了内存反复分配的时间开销。
除此之外,为了降低高频存储场景中因为同步等待固定内存池回收而带来的额外时间开销,ByteCheckpoint 在固定内存池的基础上加入了 Ping-Pong buffering 的机制。两个独立的内存池交替扮演着读写 buffer 的角色,与 GPU 和执行后续 I/O 操作的 I/O workers 进行交互,进一步提升存储效率。
负载均衡
在数据并行 ( Data-Parallel or DP ) 训练中,模型在不同的数据并行进程组( DP Group )之间是冗余的, ByteCheckpoint 采用了负载均衡算法把冗余的模型张量均匀分配到不同进程组中进行存储,有效地提高了 Checkpoint 存储效率。
Checkpoint 读取优化
零冗余加载
如图所示,在改变并行度读取 Checkpoint 时,新的训练进程可能只需要从原来的张量切片中读取其中的一部分。
ByteCheckpoint 采用按需部分文件读取( Partial File Reading ) 技术,直接从远程存储中读取需要的文件片段,避免下载和读取不必要的数据。
在数据并行 (Data-Parallel or DP) 训练中,模型在不同的数据并行进程组(DP Group)之间是冗余的,不同进程组会重复读取同一个张量切片。在大规模训练的场景下,不同进程组同时发给远程持久化存储系统 (比如 HDFS )大量请求,会给存储系统带来巨大压力。
为了消除重复数据读取,减少训练进程发给 HDFS 的请求,优化加载的性能,ByteCheckpoint 把相同的张量切片读取任务均匀分配到不同进程上,并在对远程文件进行读取的同时,利用 GPU 之间闲置的带宽进行张量切片传输。
实验结果
实验配置
团队使用 DenseGPT 与 SparseGPT 模型 (基于 GPT-3 [10] 结构实现),在不同模型参数量,不同训练框架和不同规模的训练任务中评估了 ByteCheckpoint 的 Checkpoint 存取正确性、存储性能和读取性能。更多实验配置和正确性测试细节请移步完整论文。
存储性能测试
在存储性能测试中,团队比较了不同模型规模和训练框架,在训练过程中每 50 或者 100 步存一次 Checkpoint , Bytecheckpoint 和基线( Baseline )方法给训练带来的总的阻塞时间 ( Checkpoint stalls )。
得益于对写入性能的深度优化,ByteCheckpoint 在各类实验场景中均取得了很高的表现,在 576 卡 SparseGPT 110B - Megatron-LM 训练任务中相比基线存储方法取得了 66.65~74.55 倍的性能提升,在 256 卡 DenseGPT 10B - FSDP 训练任务中甚至能达到 529.22 倍的性能提升。
读取性能测试
在读取性能测试中,团队比较不同方法根据下游任务并行度读取 Checkpoint 的加载时间。ByteCheckpoint 相比基线方法取得了 1.55 ~ 3.37 倍的性能提升。
团队观察到 ByteCheckpoint 相对于 Megatron-LM 基线方法的性能提升更为显著。这是因为 Megatron-LM 在读取 Checkpoint 到新的并行度配置之前,需要运行离线的脚本对分布式 Checkpoint 进行重新分片。相比之下,ByteCheckpoint 能够直接进行自动 Checkpoint 重新切分,无需运行离线脚本,高效完成读取。
最后,关于 ByteCheckpoint 的未来规划,团队希望从两个方面着手:
其一,实现支持超大规模 GPU 集群训练任务高效 Checkpointing 的长远目标。
其二,实现大模型训练全生命周期的 Checkpoint 管理,支持全场景的 Checkpoint ,从预训练(Pre-Training),到监督微调( SFT ),再到强化学习( RLHF )和评估 (Evaluation) 等场景。
#Fully forward mode training for optical neural networks
清华研究登Nature,首创全前向智能光计算训练架构,戴琼海、方璐领衔在刚刚过去的一天,来自清华的光电智能技术交叉创新团队突破智能光计算训练难题,相关论文登上 Nature。
论文共同一作是来自清华的薛智威、周天贶,通讯作者是清华的方璐教授、戴琼海院士。此外,清华电子系徐智昊、之江实验室虞绍良也参与了这项研究。
- 论文地址:https://www.nature.com/articles/s41586-024-07687-4
- 论文标题:Fully forward mode training for optical neural networks
随着大模型的规模越来越大,算力需求爆发式增长,就拿 Sora 来说,据爆料,训练参数量约为 30 亿,预计使用了 4200-10500 块 H100 训了 1 个月。全球的科技大厂都在高价求购的「卡」,都是硅基的电子芯片。在此之外,还有一种将计算载体从电变为光的光子芯片技术。它们利用光在芯片中的传播进行计算,具有超高的并行度和速度,被认为是未来颠覆性计算架构最有力的竞争方案之一。
光计算领域也在使用 AI 辅助设计系统。然而,AI 也给光计算技术套上了「瓶颈」—— 光神经网络训练严重依赖基于数据对光学系统建模的方法。这导致研究人员难以修正实验误差。更重要的是,不完善的系统加上光传播的复杂性,几乎不可能实现对光学系统的完美建模,离线模型与现实之间总是难以完全同步。
而机器学习常用的「梯度下降」和「反向传播」,来到了光学领域,也不好使了。为了使基于梯度的方法有效,光学系统必须非常精确地校准和对齐,以确保光信号能够正确地在系统中反向传播,离线模型往往很难实现这点。
来自清华大学的研究团队抓住了光子传播具有对称性这一特性,将神经网络训练中的前向与反向传播都等效为光的前向传播。该研究开发了一种称为全前向模式(FFM,fully forward mode)学习的方法,研究人员不再需要在计算机模型中建模,可以直接在物理光学系统上设计和调整光学参数,再根据测量的光场数据和误差,使用梯度下降算法有效地得出最终的模型参数。借助 FFM,大多数机器学习操作都可以有效地并行进行,从而减轻了 AI 对光学系统建模的限制。
FFM 学习表明,训练具有数百万个参数的光神经网络可以达到与理想模型相当的准确率。
此外,该方法还支持通过散射介质进行全光学聚焦,分辨率达到衍射极限;它还可以以超过千赫兹的帧率平行成像隐藏在视线外的物体,并可以在室温下进行光强弱至每像素亚光子的全光处理。
最后,研究证明了 FFM 学习可以在没有分析模型的情况下自动搜索非厄米异常点。FFM 学习不仅有助于将学习过程提高几个数量级,还可以推动深度神经网络、超灵敏感知和拓扑光学等应用和理论领域的发展。
深度 ONN 上的并行 FFM 梯度下降
图 2a 展示了使用 FFM 学习的自由空间 ONN(optical neural networks,光学神经网络)的自我训练过程。为了验证 FFM 学习的有效性,研究者首先使用基准数据集训练了一个单层 ONN 以进行对象分类。
图 2b 可视化了在 MNIST 数据集上的训练结果,可以看到,实验和理论光场之间的结构相似性指数(SSIM)超过了 0.97,这意味着相似度很高(图 2c)。值得注意的是,由于系统不完善的原因,光场和梯度的理论结果并不能精准地代表物理结果。因此,这些理论结果不应被视为基本事实。
接下来,研究者探究了用于 Fashion-MNIST 数据集分类的多层 ONN,具体如图 2d 所示。
通过将层数从 2 层增加到 8 层,他们观察到,计算机训练网络的实验测试结果平均达到了 44.0% (35.1%)、52.4%(8.8%)、58.4%(18.4%)和 58.8%(5.5%)的准确率(两倍标准差)。这些结果低于 92.2%、93.8%、96.0% 和 96.0% 的理论准确率。通过 FFM 学习,准确率数值分别提升到了 86.5%、91.0%、92.3% 和 92.5%,接近理想的计算机准确率。
图 2e 描述了 8 层 ONN 的输出结果。随着层数增加,计算机训练的实验输出逐渐偏离目标输出并最终对对象做出误分类。相比之外,FFM 设计的网络可以准确地进行正确分类。除了计算密集型数据和误传播之外,损失和梯度计算还可以通过现场光学和电子处理来执行。
研究者进一步提出了非线性 FFM 学习,如图 2f 所示。在数据传播中,输出在馈入到下一层之前被非线性地激活,记录非线性激活的输入并计算相关梯度。在误差传播过程中,输入在传播之前与梯度相乘。
利用 FFM 进行全光学成像和处理
图 3a 展示了点扫描散射成像系统的实现原理。一般来说,在自适应光学中,启发式优化方法已经用于焦点优化。
研究者分析了不同的 SOTA 优化方法,并利用粒子群优化(PSO)进行比较,如图 3b 所示。出于评估的目的,这里采用了两种不同类型的散射介质,分别是随机相位板(称为 Scatterer-I)和透明胶带(称为 Scatterer-II)。基于梯度的 FFM 学习表现出更高的效率,在两种散射介质的实验中经过 25 次迭代后收敛,收敛损耗值分别为 1.84 和 2.07。相比之下,PSO 方法需要至少 400 次迭代后才能进行收敛,最终损耗值为 2.01 和 2.15。
图 3c 描述了 FFM 自我设计的演变过程,展示了最开始随机分布的强度逐渐分布图逐渐收敛到一个紧密的点,随后在整个 3.2 毫米 × 3.2 毫米成像区域来学习设计的焦点。
图 3d 比较了使用 FFM 和 PSO 分别优化的焦点的半峰全宽(FWHM)和峰值信噪比(PSNR)指标。使用 FFM,平均 FWHM 为 81.2 µm,平均 PSNR 为 8.46 dB,最低 FWHM 为 65.6 µm。当使用 3.2mm 宽的方形孔径和 0.388m 的传播距离时,通过 FFM 学习设计的焦点尺寸接近衍射极限 64.5 µm。相比之下,PSO 优化产生的 FWHM 为 120.0 µm,PSNR 为 2.29 dB。
在图 4a 中,利用往返隐藏对象的光路之间的空间对称性,FFM 学习可以实现动态隐层对象的全光学现场重建和分析。图 4b 展示了 NLOS 成像,在学习过程中,输入波峰被设计用来将对象中所有网格同步映射到它们的目标位置。
现场光子集成电路与 FFM
FFM 学习方法可以推广到集成光系统的自设计中。图 5a 展示了 FFM 学习实现过程。其中矩阵的对称性允许误差传播矩阵和数据传播矩阵之间对等。因此,数据和误差传播共享相同的传播方向。图 5b 展示了对称核心实现和封装芯片实验的测试设置。
研究者构建的神经网络用于对鸢尾花(Iris)数据进行分类,输入处理为 16 × 1 向量,输出代表三种花的类别之一。训练期间矩阵编程的保真度如图 5c 中所示,三个对称矩阵值的时间漂移分别产生了 0.012%、0.012% 和 0.010% 的标准偏差。
在这种不确定下,研究者将实验梯度与模拟值进行比较。如图 5d 所示,实验梯度与理想模拟值的平均偏差为 3.5%。图 5d 还说明了第 80 次学习迭代时第二层的设计梯度,而整个神经网络的误差在图 5e 中进行了可视化。在第 80 次迭代中,FFM 学习(计算机模拟训练)的梯度误差为 3.50%(5.10%)、3.58%(5.19%)、3.51%(5.24%)、3.56%(5.29%)和 3.46%(5.94%)。设计精度的演变如图 5f 所示。理想模拟和 FFM 实验都需要大约 100 个 epoch 才能收敛。在三种对称率配置下,实验性能与模拟性能相似,网络收敛到 94.7%、89.2% 和 89.0% 的准确率。FFM 方法实现了 94.2%、89.2% 和 88.7% 的准确率。相比之下,计算机设计的网络表现出 71.7%、65.8% 和 55.0% 的实验准确率。
基于这篇论文的成果,研究团队也推出了「太极 - II」光训练芯片。「太极 - II」的研发距离上一代「太极」仅过了 4 个月,相关成果也登上了 Science。
- 论文链接:https://www.science.org/doi/10.1126/science.adl1203
值得一提的是,作为全球首款大规模干涉衍射异构集成芯片的「太极」,其计算能力可以比肩亿级神经元的芯片。论文的实验结果显示,「太极」的能效是英伟达 H100 的 1000 倍。这种强大的计算能力基于研究团队首创的分布式广度智能光计算架构。
#SA-HOI
人物交互图像,现在更懂你的提示词了,北大推出基于语义感知的人物交互图像生成框架
该论文的第一作者和通讯作者均来自北京大学王选计算机研究所的 MIPL实验室,第一作者为博士生徐铸,通讯作者为博士生导师刘洋。MIPL 实验室近年来在 IJCV、CVPR、AAAI、ICCV、ICML、ECCV 等顶会上有多项代表性成果发表,多次荣获国内外 CV 领域重量级竞赛的冠军奖项,和国内外知名高校、科研机构广泛开展合作。
人物交互图像生成指生成满足文本描述需求,内容为人与物体交互的图像,并要求图像尽可能真实且符合语义。近年来,文本生成图像模型在生成真实图像方面取得出了显著的进展,但这些模型在生成以人物交互为主体内容的高保真图像生成方面仍然面临挑战。其困难主要源于两个方面:一是人体姿势的复杂性和多样性给合理的人物生成带来挑战;二是交互边界区域(交互语义丰富区域)不可靠的生成可能导致人物交互语义表达的不足。
针对上述问题,来自北京大学的研究团队提出了一种姿势和交互感知的人物交互图像生成框架(SA-HOI), 利用人体姿势的生成质量和交互边界区域信息作为去噪过程的指导,生成了更合理,更真实的人物交互图像。为了全面测评生成图像的质量,他们还提出了一个全面的人物交互图像生成基准。
- 论文链接:https://proceedings.mlr.press/v235/xu24e.html
- 项目主页: https://sites.google.com/view/sa-hoi/
- 源代码链接: https://github.com/XZPKU/SA-HOI
- 实验室主页: http://www.wict.pku.edu.cn/mipl
SA-HOI 是一种语义感知的人物交互图像生成方法,从人体姿态和交互语义两方面提升人物交互图像生成的整体质量并减少存在的生成问题。通过结合图像反演的方法,生成了迭代式反演和图像修正流程,可以使生成图像逐步自我修正,提升质量。
研究团队在论文中还提出了第一个涵盖人 - 物体、人 - 动物和人 - 人交互的人物交互图像生成基准,并为人物交互图像生成设计了针对性的评估指标。大量实验表明,该方法在针对人物交互图像生成的评估指标和常规图像生成的评估指标下均优于现有的基于扩散的图像生成方法。
方法介绍
图 1:语义感知的人物交互图像生成方法框架图
论文中提出的方法如图 1 所示,主要由两个设计组成:姿态和交互指导(Pose and Interaction Guidance, PIG)和迭代反演和修正流程(Iterative Inversion and Refinement Pipeline, IIR)。
在 PIG 中,对于给定的人物交互文本描述
和噪声
,首先使用稳定扩散模型(Stable Diffusion [2])生成
作为初始图像,并使用姿态检测器 [3] 获取人类体关节位置
和相应的置信分数
, 构建姿态掩码
高亮低质量姿态区域。
对于交互指导,利用分割模型定位交互边界区域,得到关键点
和相应的置信分数
, 并在交互掩码
中高亮交互区域,以增强交互边界的语义表达。对于每个去噪步骤,
姿态和交互指导
图 2:姿势和交互指导采样伪代码
姿势和交互引导采样的伪代码如图 2 所示,在每个去噪步骤中,我们首先按照稳定扩散模型(Stable Diffusion)中的设计获取预测的噪声 ϵt 和中间重构 。然后我们在 上应用高斯模糊 G 来获得退化的潜在特征 和 ,随后将对应潜在特征中的信息引入去噪过程中。
和
,并在
其中
,x、y 是图像的逐像素坐标,H,W 是图像大小,σ 是高斯分布的方差。
表示以第 i 个关节为中心的注意力,通过结合所有关节的注意力,我们可以形成最终的注意力图
,并使用阈值将
其中 ϕt 是在时间步 t 生成掩码的阈值。类似地,对于交互指导,论文作者利用分割模型得到物体的外轮廓点 O 以及人体关节点 C,计算人与物体之间的距离矩阵 D,从中采样得到交互边界的关键点
与掩码
迭代式反演和图像修正流程
为了实时获取生成图像的质量评估,论文作者引入质量评估器 Q,用于作为迭代式 < 评估 + 修正 > 操作的指导。对于第 k 轮的图像
,采用评估器 Q 获取其质量分数
,然后基于
。为了在优化后保留
然而,这样的噪声不是现成可得的,为此引入图像反演方法
来获取其噪声潜在特征
和文本嵌入
,作为 PIG 的输入,生成优化后的结果
通过比较前后迭代轮次中的质量分数,可以判断是否要继续进行优化:当
和
之间没有显著差异,即低于阈值 θ,可以认为该流程可能已经对图像做出了充足的修正,因此结束优化并输出质量分数最高的图像。
人物交互图像生成基准
图 3:人物交互图像生成基准(数据集 + 测评指标)
考虑到没有针对人物交互图像生成任务设计的现有模型和基准,论文作者收集并整合了一个人物交互图像生成基准,包括一个含有 150 个人物交互类别的真实人物交互图像数据集,以及若干为人物交互图像生成定制的测评指标。
该数据集从开源人物交互检测数据集 HICO-DET [5] 中筛选得到 150 个人物交互类别,涵盖了人 - 物体、人 - 动物和人 - 人三种不同交互场景。共计收集了 5k 人物交互真实图像作为该论文的参考数据集,用于评估生成人物交互图像的质量。
为了更好地评估生成的人物交互图像质量,论文作者为人物交互生成量身定制了几个测评标准,从可靠性 (Authenticity)、可行性 (Plausibility) 和保真度 (Fidelity) 的角度全面评估生成图像。可靠性上,论文作者引入姿势分布距离和人 - 物体距离分布,评估生成结果和真实图像是否接近:生成结果在分布意义上越接近真实图像,就说明质量越好。可行性上,采用计算姿势置信度分数来衡量生成人体关节的可信度和合理性。保真度上,采用人物交互检测任务,以及图文检索任务评估生成图像与输入文本之间的语义一致性。
实验结果
与现有方法的对比实验结果如表 1 和表 2 所示,分别对比了人物交互图像生成指标和常规图像生成指标上的性能。
表 1:与现有方法在人物交互图像生成指标的对比实验结果
表 2:与现有方法在常规图像生成指标的对比实验结果
实验结果表明,该论文中的方法在人体生成质量,交互语义表达,人物交互距离,人体姿态分布,整体图像质量等多个维度的测评上都优于现有模型。
此外,论文作者还进行了主观评测,邀请众多用户从人体质量,物体外观,交互语义和整体质量等多个角度进行评分,实验结果证明 SA-HOI 的方法在各个角度都更符合人类审美。
表 3:与现有方法的主观评测结果
定性实验上,下图展示了不同方法对同一个人物交互类别描述生成结果的对比。在上方的组图中,采用了新方法的模型准确表达了 “亲吻” 的语义,并且生成的人体姿势也更合理。在下方的组图中,论文中的方法也成功缓解了其他方法中存在的人体扭曲和畸变,并且通过在手与手提箱交互的区域生成手提箱的拉杆来增强 “拿手提箱” 这个交互的语义表达,从而得到在人体姿态和交互语义两方面都优于其他方法的结果。
图 4:人物交互图像生成结果可视化
开发板商城 天皓智联 TB上有视觉设备哦 支持AI相关~