作者
| Annie Xu
采访 | CSDN&Boolan 首席顾问 卢威
从小热衷于参加乐高全球机器人竞赛的 Jonathan Kelly 对编程的探索欲十分强烈,他时常将脑海中有趣的项目写出来并分享在 Github 上。灵光乍现下,他用 Rust 编程语言构建出跨平台应用开源框架 Dioxus,
项目迅速走红,短短两三天便在 GitHub 上收获了 3,000 颗 Star。
如今,Dioxus 的
Star 数
已接近 20,000,并被许多初创企业以及知名大型公司如空客(Airbus)和欧洲航天局(ESA)采用。
本期
GOSIM 独家对话栏目 Open AGI Forum
由
CSDN&Boolan 首席顾问卢威担任主持,
与 Dioxus 实验室创始人、Rust 前端框架 Dioxus 的创建者 Jonathan Kelley 面对面,揭秘一鸣惊人的 Dioxus 项目从诞生到逐渐壮大的故事。
对 AI 助力多平台 APP 搭建方面,Kelly 有些独特见解:
以下是本次采访的主要内容:
GOSIM:
大家好,
欢迎来到 Open AGI Forum。我是来自 CSDN 的卢威,我们现在在荷兰德尔夫特 GOSIM 欧洲站进行现场直播。我们非常荣幸地邀请到了来自旧金山 Dioxus 实验室的 Jonathan Kelly。他有许多值得分享的传奇故事,欢迎 Jonathan。
请先向
观众简短介绍一下自己
?
Jonathan Kelley:
我是 Jonathan Kelly,用 Rust 编程语言构建跨平台应用开源框架 Dioxus 的创建者。在创建 Dioxus 前,我曾在 Cloudflare 工作,再之前是美国宇航局兰利研究中心。
GOSIM:
你能分享一下你是如何对科技知识和编程产生兴趣的吗?以及你是如何开始编程的?为什么选择了 Rust?
Jonathan Kelley:
我对编程的兴趣始于小
时候。我所在的地区会举办 FFL(乐高全球机器人竞赛),
我很喜欢
参加乐高小型 Mindstorms 机器人编程比赛。从一开始学习拖拽式的编程语言,循序渐进地,我最终掌握了了 C 和 C++,进行了很
多物理模拟。
我在 NASA 工作过一段时间,那里面包含很多物理学的内容。然后,我接触到了 Rust。Rust 速度很快,性能也很好,非常适合高性能的物理模拟。自此,我开始构建应用程序。
GOSIM:
截至目前,Dioxus 在开发者中产生了巨大的影响力——在 GitHub 上收获了近 20,000 颗 Star。你能分享一下启动和管理一个成功开源项目的经验吗?
Jonathan Kelley:
我从未预料到 Dioxus 会在 GitHub 上能斩获 20,000 颗 Star,变得如此受欢迎。对我来说,它最初只是我在夏天随手做的一个业余项目。它发布后,在一个偶然的周末变得非常流行,两三天内就在 GitHub 上收获了 3,000 颗 Star,这让我很惊喜。
直到现在,它已经推出近两年了。我们借此加入了 GitHub 加速器计划,并与其他一些非常酷的项目合作,全职搭建 Dioxus。随后,在旧金山筹集了一些风险投资,成立了一家创业公司。
Jonathan Kelley:
我喜欢动手实践,把脑海中的想法付诸实践,然后发布,观察人们是否喜欢它。并非我所做的每一件事都能取得成功,有些事情看起来很酷,但人们并不感兴趣,但 Dioxus “一鸣惊人”。
GOSIM:
Rust 最特别的地方是速度,那它与其他语言或工具相比还有其他特别之处吗?
Jonathan Kelley:
我原本是学物理的,
要进行很多 Python 模拟,因此
写了很多 Python 代码。有时启动和运行 Python 是一件很有挑战性的事情,我在弄清 Python 安装上花的时间比在 Rust 上花的时间还多。
Rust 编程语言有点难,但你可以用它解锁很多有趣的项目。比如,一个 Dioxus 应用可以在一个小小的树莓派上运行,也可以部署在超级计算集群上,甚至可以用于 AI 项目。
Rust 也非常灵活,其他语言可能擅长某些特定任务,但不能处理所有事情。
Rust 学习起来可能稍显困难,但它几乎能够胜任各种任务,虽然可能并不是那么完美,写起来也不那么容易,不过我们正在努力改进。
GOSIM:
你本次的演讲主题与 AI 有关吗?请简要介绍一下。
Jonathan Kelley:
我们构建并微调了一个 Llama 模型,同时也对一个 Phi 模型进行了微调。很少有专门基于特定项目对大语言模型进行微调,
微软新推出的专注于编码的 AI 模型是其中之一,我们
也基于
Dioxus 代码对其模型进行了微调
。
所以我们的 Llama 模型可以做很多有趣的事情
,比如编写代码组件。如果用户需要搭建一个新的博客组件或作品集组件,只需给出一个简单的提示,就能得到对应的代码。
我们生成了大量合成数据,并将自己的项目投入其中,创建和测试组件。同时,
模型有一个相对应的代理模式,
可以浏览网站并对搭建的应用程序提供反馈
。它可以评估布局、可访问性、样式等内容。并且,我们即将推出新功能:直接创建修复这些问题的拉取请求,即在构建应用的过程中,代理可以直接修复创建中存在的所有 bug(错误)。
GOSIM:
令人印象深刻。
实际上,我也在从事这种大语言模型或 AI 编码助手的工作。
请问你用了大约多少 Dioxus 代码库的 tokens 来微调 Llama?
Jonathan Kelley:
有趣的是,我们没有使用太多 Dioxus 代码,实际上并没有数百万个组件,由人编写的公开组件大概只有两到三万个,但这些组件的质量是未知的。
因此,我们决定创建一个合成数据集——
这也是演讲的主题,即
如何构建一个高质量的合成数据集
。
我们生成了大约 100,000 个prompts,之后缩减到大约 10,000 个非常好的prompts。
根据具体的提示内容,这些提示的长度大约在 500 到 2,000 个 tokens 之间。
由于模型实际上是在本地而非云端运行的,我们也尝试压缩提示以减小其所占空间。
Jonathan Kelley:
我们对两个模型进行了微调。
如果你有一台配置较高的机器,你可以使用
Llama AP
,它的输出质量优于 Phi 模型,但它需要有 5 到 6GB 的 GPU 显存——并非每台笔记本电脑都有这么高的配置。
如果你拥有一台配置较低或更便携的设备,也可以使用微调过的
Phi-3 模型
——大概只需要 2GB 显存。
GOSIM:
对于相对较少的数据量,你有什么看法?
有人建议不要进行微调,而是使用 IG 或其他解决方案。
你怎么看?
你曾经尝试过比较微调和 Phi 的性能吗?
Jonathan Kelley:
显然有很多方法可以处理这些问题,有些模型的上下文窗口非常大。
由于
Dioxus 以 HTML 作为主要语法,
能够参考其
大量
经过训练的数据语料库。
因此,只需要稍作调整,就能
创建一个非常好的合成数据集
。
我认为,我们需要一个更大的数据集,需要更多的 Dioxus 组件供模型生成。
鉴于 HTML 与 Dioxus 间相似的映射关系,可以基于 HTML 微调,将 HTML tokens 转换为 Dioxus tokens。
《Dioxus Al:APP 开发的未来》演讲视频
GOS
IM:
Python 是大语言模型的原生语言,而 JavaScript 的表现虽然不如 Python,但比其他的要好。
如果没有特殊的微调,Code Llama 在 Rust 上的表现如何?
Jonathan Kelley:
大语言模型在生成 Rust 代码方面表现一般。
幸运的是,我们与 React 很接近,因此可以进行一些 React 代码的转换,比如点击事件处理器。
JavaScript 代码可以轻松转换为 Rust,
这种转换并不完美,但大多数 UI 代码都很简单,因此处理起来并不复杂。
我们的 AI 系统也由 Rust 编写,如推理引擎。同时,
结构化生成、约束生成等也都是在 Rust 中实现的。
GOSIM:
我们也尝试提高 Code Llama 或其他代码元素在 C++ 或其他特定语言上的表现,要使其在性能上达到与 Python 同等的水平并不容易。
GOSIM:
我认为如何实现代码生成模型对各种编程语言的支持是一个很好的研究主题。
Jonathan Kelley:
我认为这非常有意义,我们也对你在演讲中提到的 RAG 检索感兴趣。我们一直在考虑是否可以
使用 Rust 的类型系统来生成合成数据集
,以非常有限的方式限制 tokens 的搜索空间。一个结构体或类的方法是有限的,如果进行微调或以某种方式修改权重,改变处理 tokens 的方式,进行结构化生成,理论上这种生成方式速度更快,质量更高。
Rust 比 Python 复杂。幸运的是,UI 代码相当简单,而我们主要生成的是 HTML,而 HTML 并不是一种图灵完备语言。因此,生成 HTML 比生成高质量的 C++ 要简单得多。
GOSIM:
你使用什么模型来合成数据?是 GPT-4 吗?
Jonathan Kelley:
Llama 模型相当不错,我们使用的是 Meta 最近发布的开源模型 Llama3-70B 进行数据生成。
GOSIM:
它是否能满足数据生成的需求?
Jonathan Kelley:
在性能尤其是推理引擎方面,
Llama3-70B
与 GPT-4 非常接近。
我们能够在 Groq 上运行它,且 Groq 的性能远超 ChatGPT。
Groq 速度与
GPT 系列模型一样,
非常快。
因此,这是一条非常有意思的捷径,并且微调的成本几乎是免费的。鉴于
我们有一些积分和其他支持,可能只需要 5 到 10 美元。
GOSIM:
在你启动 Dioxus 项目时,是否从一开始就计划了这些 AI 功能,还是在后来几年里才考虑到的?
Jonathan Kelley:
我们一直希望构建小部件和 UI 设计变得更容易。
大语言模型支持本地运行且性能非常好,给我们打开了一个全新应用世界的大门。
一年前,这一切难以
想象
。
GOSIM:
现在你们的研究人员、教授、博士,或者是程序员是否已经进行 AI 相关的事情?
Jonathan Kelley:
我们的 AI 主管为 Rust 编写了一个 AI 元框架
Kalosm
。
它能做很多很酷的事情。它可以在本地运行大语言模型,支持 OCR,能够读取图片内容,还支持语音转文本等功能。
在构建这个项目的过程中,他积累了很多关于大语言模型的经验。
看起来这确实像一个可以轻松入门的领域。
随着研究的
深入
,它显然涉及到更多数学问题。
深入模型内
部
需要吸收更多知识,但到目前为止,还没到必须是博士才解决的地步。
GOSIM: