Sora横空出世!AI将如何撬动未来?
大模型给开发工作“降本增效”
而在编程领域,AI的崛起,如ChatGPT和GitHub Copilot,正在改变开发者获取信息和编写代码的方式。在Andrej Karpathy的博客《Software 2.0》中,他探讨了人工智能如何改变软件开发方式:“Software 2.0代表着我们可以用大量的数据和算力来解决以前需要大量人力和成本来解决的复杂问题。” AI 编码助手则是上述的具体实现。
资料图片来源:GitHub
调查数据显示,AI编码工具不仅提高了整体生产力,还带来了技能提升的机会。75%的开发者表示在使用GitHub Copilot时感到更加充实,在具体的生产数据方面,Copilot能够完成高达46%的代码,帮助开发人员将编程速度提高了 55%。
在代码训练推理领域,实际上并不需要前后的历史知识和上下需要索引人文典故,可以预见的将来大模型会逐渐蒸馏成一个中小型模型,可能是70个亿的参数、10个亿参数或者100亿参数,这种规模就已经非常有效果了。
同时随着生成式 AI 的发展,编程语言之间的差异变得不再那么明显。随之带来的是编程语言的学习门槛降低。目前学习一门新的编程语言,其中一个关键点在于掌握其生态系统,包括语法和库的使用。举个例子,区分成熟的 Java 工程师和专业的 Java 工程师的主要因素之一是对各种库的熟悉程度和使用直觉。
未来,生成式AI的存在可能极大地简化这一过程。例如,当需要进行 JSON 解析时,生成式 AI 可以自动推荐合适的库。这就像有一个助手在一旁,不仅帮助选择合适的工具,还可以解释不熟悉的代码片段。因此,学习新语言将变得更加直观和简单。
这种变化预示着未来编程的重点可能会从对工具的关注转移到提供端到端体验上,开发者可以更加专注于创意和解决方案的实现,而不是编码的具体细节。
面向未来:MoonBit AI应运而生
正是在这样的背景下,MoonBit AI应运而生。MoonBit在2022年10月推出,恰逢ChatGPT刚刚问世。MoonBit平台的出现不仅作为编程语言,更是提供一个完整的开发工具链,包括IDE、编译器、构建系统、包管理器等。MoonBit处在这样一个特殊的位置,使我们有机会去重新构想整个编程语言工具链该如何与AI更好地协作,开启编程与AI结合的新篇章。
同时,我们在ai.moonbitlang.com上设计了一个简单的MoonBit AI demo,非常欢迎你来尝试(这里可以点击文末的阅读原文跳转)!我们期待你的反馈,可以随时通过我们的论坛/微信小助手/用户群等渠道进行反馈,具体的反馈渠道详见文末。
让我们看看下面的视频,更具体地了解使用MoonBit AI进行端到端开发的体验是什么样子:
MoonBit如何设计成一种出色的、对AI友好的编程语言
是什么驱动了MoonBit AI
平坦化设计,适配Transformer架构
MoonBit作为AI时代的开发平台,设计强调清晰和简单,特别强调在顶层(toplevel)和局部(local)定义之间的清晰区分。MoonBit还采用了结构化接口实现(structural interface implementation),在这种方式中,一个类型通过实现其方法来实现一个接口,因此消除了额外嵌套代码块的必要性。
现有的大模型基本都基于自回归的 Transformer 架构。这意味着随着上下文窗口增长,生成单个 token 的复杂度呈 n² 上升。也就是说,大模型的推理会越来越慢。一个没有嵌套的编程语言有着较好的可读性,同时也能够在各个层级(RAG,decoder correction,backtrack)做到 KV 缓存友好,实现更高的推理速度。
让我们一起来看一个例子:
在图1a中所示的例子中,一名程序员正在为类型Llama实现特性Agent中的方法think。他们发现类型Llama缺少在特性LLM中定义的generation方法。由于他们处于一个嵌套代码块中,需要回到顶层来为类型Llama实现特性LLM。然而,在大型语言模型(LLMs)的上下文中,修改几个函数之前的提示会导致相关KV缓存段的无效,这在图中以红色突出显示。经过这样的修改,所有这些函数都要重新评估,这不仅浪费了计算资源,更关键的是,延长了输出的延迟时间。
快速实时的语义补全
MoonBit AI由两种定制的采样算法驱动:局部采样和全局采样。局部采样使用AI生成的代码进行实时调整,以确保代码遵循语法规范,而全局采样进一步验证代码的语义正确性。随着大型语言模型(LLM)生成新的token,MoonBit采样器将从局部和全局收集并利用信息,以确保每个生成的token不仅在语法上正确,而且没有明显的类型错误。这种方法提供了更可靠、更准确的代码生成,减少了后续调试和错误纠正的需要。
例如,当LLM编写程序时,它可能会生成一个不好的token。我们维护一个推测缓冲区来存储最后一个token。一旦token由LLM完成,我们将检查token是否有效。如果有效,我们接受它并将其提交给用户,如果失效,我们就回溯并重试。为了防止LLM重复同样的错误,我们将告知LLM可能的继续操作,以做出更好的选择。
当然,这只是一个开始!
我们目前正在搭建一个包管理器,这对于收集额外数据以微调模型至关重要。未来,我们将持续增强MoonBit AI能力,包括加入代码辅助、审查、问答界面、测试生成和验证机制等功能。同时,我们正计划开发一个快速解释器,在运行时提供实时反馈。这将进一步提高AI生成代码的可靠性。
1. 国产编程语言新拐点:聊聊从 Mojo 到 MoonBit 的思考 | 年度技术盘点与展望https://www.infoq.cn/article/1X5jJEzrsIa5M1HR3RRz
2. Software 2.0
https://karpathy.medium.com/software-2-0-a64152b37c35
MoonBit