作者 | Annie Xu
采访 | CSDN&Boolan 首席顾问 卢威
责编 | 何苗
出品 | GOSIM 开源创新汇
从小热衷于到场乐高全球呆板人竞赛的 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 有些独道见解:
- 在性能尤其是推理引擎方面,Llama3-70B 与 GPT-4 非常靠近,能够在 Groq 上运行。Groq 速度与GPT 系列模型一样,都非常快,且性能远超 ChatGPT。因此,这是一条非常风趣的捷径,而且微调的资源基本上是免费的。
- 约束生成是构建大语言模型中的一个非常紧张的特性。它将模型的性能,即提示输出的准确性,从 20%提高到了 90%。这是一个工程标题,而非数学标题。我们正试图在重新发现任何新的数学规律前,通过精良的工程找到所有可能的优化点。
- 中国的用户并不拘泥于 MacBook Pro 和 iOS,而有许多可供选择的设备宁静台,开辟者也对于 Dioxus 有浓厚的爱好。相反在美国,70%的用户都使用 iPhone。
- Android、iOS 的分布现状表明美国的操作体系市场存在垄断,导致大量资金投入这些不同的开辟框架和生态体系建设中。Dioxus 致力于成为将来所有平台之间的中间地带。
- 一个结构体或类的方法是有限的,如果举行微调或以某种方式修改权重,改变处理 tokens 的方式,举行结构化生成,理论上这种生成方式速度更快,质量更高。
以下是本次采访的主要内容:
Dioxus 的诞生:偶尔的灵感迸发
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。随后,在旧金山筹集了一些风险投资,建立了一家创业公司。
GOSIM:所以它早先并不是一个正式项目?
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 之间。由于模型现实上是在本地而非云端运行的,我们也尝试压缩提示以减小其所占空间。
GOSIM:你使用的模型有多大?
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开辟的将来
GOSIM:Python 是大语言模型的原生语言,而 JavaScript 的表现虽然不如 Python,但比其他的要好。如果没有特殊的微调,Code Llama 在 Rust 上的表现如何?
Jonathan Kelley:大语言模型在生成 Rust 代码方面表现一样平常。幸运的是,我们与 React 很靠近,因此可以举行一些 React 代码的转换,比如点击变乱处理器。JavaScript 代码可以轻松转换为 Rust,这种转换并不完善,但大多数 UI 代码都很简单,因此处理起来并不复杂。
我们的 AI 体系也由 Rust 编写,如推理引擎。同时,结构化生成、约束生成等也都是在 Rust 中实现的。
GOSIM:我们也尝试提高 Code Llama 或其他代码元素在 C++ 或其他特定语言上的表现,要使其在性能上达到与 Python 同等的水平并不轻易。
Jonathan Kelley:是的。
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:我们的某些项目中既有 AI 职员,也有编程职员,他们的思考方式不同,这有点像集成标题。
Jonathan Kelley:是的,约束生成是构建大语言模型中一个非常紧张的特性。它将模型的性能,即提示输出的准确性,从 20% 提高到了 90%。这是一个工程标题,而非数学标题。我们正试图在重新发现任何新的数学规律前,通过精良的工程找到所有可能的优化点。
面向国际化的 Dioxus
GOSIM:我留意到你们的项目中有一些中国开辟者。你觉得西方开辟者和中国开辟者之间有何不同?
Jonathan Kelley:我确实很惊奇这个项目国际化的程度。当查察它的下载者和贡献者时,我们发现中国社区为 Dioxus 做出了许多贡献。人们非常热衷于翻译。我只擅长英语,但我很高兴看到各人热衷于把 Dioxus 推向更广泛的受众。我们看到了来自每个人的热情,人们在探索新的功能和组件库,这很棒。我很开心看到这个项目是国际性的,而不仅仅是美国的。
GOSIM:你们也有来自欧洲的开辟者吗?
Jonathan Kelley:重新西兰到西班牙,再到中国和日本,我们的开辟者分布很广。中国也许多对项目感爱好的开辟者。他们并不拘泥于 MacBook Pro 和 iOS,有许多可供选择的设备宁静台。在这种情况下,跨平台性能变得非常紧张。而在美国,由于 iPhone 覆盖了 70%的用户,人们要么使用 React Native,要么使用 Flutter,乃至偶然只写 iOS 应用。
GOSIM:在我看来,AI 的话题在美国和中国非常热门,但在欧洲相对冷淡。
Jonathan Kelley:从我的履历来看,那些对 AI 感爱好的欧洲人每每会来美国,我猜这可能与态度、监管、文化,大概恐惧有关。美国确实有人担心会被 AI 代替工作,但同时,工程和开辟社区对 AI 解锁的潜力非常兴奋。我不知道中国的态度如何,但我交谈过的每个人都对 AI 和将来充满热情。
GOSIM:你认为在不远的将来,你们的项目工作有可能通过自己练习的模型实现完全自动化吗?
Jonathan Kelley:我们编写了各种各样的自动化工具,我希望一切都能自动化。当我必要亲身处理某些事情时,它会分散我对自己想做事情的留意力。我认为我们很快能实现简单设计的自动化。
比较明显的是阅读文档,并确保它与代码相匹配。我们经常收到关于某个函数的诉苦,文档上描述的功能与函数的现实参数不匹配——这些都是可以由大语言模型处理的简单任务。以此为起点,进而修复 bug、添加功能。我认为这个领域潜力巨大。
GOSIM:我问这个标题是由于大多数大语言模型模型的评估都是与人类相比较的,但这在开源项目中可能并不现实。在一些大型企业中,有些工作被外包给了不知名——我不确定,可能是分布在印度大概中国——的团队。这项工作的某些部分是否已经可以通过模型自动化生成了呢?
Dioxus 是否也采用了这种头脑方式呢?一些轻易的任务由自动化的语言模型解决,而不是所有的事情都必须由程序员或用户完成。
Jonathan Kelley:是的。
GOSIM:你对 Dioxus 项目将来的功能和运行方式有什么计划?你对将来有什么愿景?
Jonathan Kelley:我认为美国的平台太少了,Android、iOS 的应用现状表明存在垄断。将来,我们想成为将来所有平台之间的中间地带,无论是汽车照旧物联网,无论是手机照旧增强现实,希望 Dioxus 可以在任何地方运行。
今天人们不得不面对平台锁定的标题,如果能在一个平台实现所有功能体验感会更好。用户在 Dioxus 上发布产品,由我们负责处理所有与 Swift UI 或 Android 工具链等平台之间令人烦恼的中间环节。人们可以信托我们作为中间平台。
这种方式非常简单。你使用 Dioxus 创建一个新应用,拖拽小部件组合在一起,使用提示输入来添加新功能,几乎就像一个无代码的解决方案。但生成的 Rust 代码是你能找到的最强大的代码。
久远来看,我们还计划推出云服务,你的团队可以一起迭代应用程序,实现实时协作。我们可以通过 Dioxus 做许多风趣的事情。
GOSIM:那太好了,感谢 Jonathan 分享的见解和讨论,感谢所有开辟者的观看。本次采访到此竣事,我们下次再见!
相关阅读:
《双嘉宾登台的超人气演讲!两位创始人深入解读Dioxus架构演进思绪:关注开辟者体验,打造APP开辟将来》
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |