从GPT2到稳定扩散:Hugging Face进入Elixir社区

Hugging Face进入Elixir社区

非常高兴地宣布,Elixir社区迎来了几个神经网络模型,从GPT2到Stable Diffusion,全都集成到了Elixir中。这要归功于刚刚发布的Bumblebee库,它是纯Elixir实现的Hugging Face Transformers。

为了帮助任何人快速入门这些模型,Livebook团队(一种用于Elixir的计算笔记本平台)创建了一系列“智能单元”,开发人员只需点击3次即可搭建不同的神经网络任务。您可以观看我的视频公告以了解更多信息:

由于Elixir运行在Erlang虚拟机中,具备并发和分布式支持,开发人员可以将这些模型嵌入和提供为现有Phoenix Web应用的一部分,与Broadway的数据处理流程集成,并将它们部署到Nerves嵌入式系统上,无需第三方依赖。在所有场景中,Bumblebee模型都可以编译为CPU和GPU代码。

背景

将机器学习引入Elixir的工作始于近两年前的Numerical Elixir(Nx)项目。Nx项目实现了多维张量以及“数值定义”,这是Elixir的一个子集,可以编译为CPU/GPU代码。Nx并没有重复造轮子,而是使用了Google XLA(EXLA)和Libtorch(Torchx)的绑定来进行CPU/GPU的编译。

Nx倡导的思想还催生了其他几个项目。Axon将函数式可组合的神经网络引入到Elixir中,受到了Flax和PyTorch Ignite等项目的启发。Explorer项目借鉴了dplyr和Rust的Polars,为Elixir社区提供了富有表现力和高性能的数据框架。

Bumblebee和Tokenizers是我们最近发布的项目。我们非常感谢Hugging Face在各个社区和工具之间实现了协作式机器学习,这在推动Elixir生态系统发展方面起到了重要作用。

接下来,我们计划专注于在Elixir中进行神经网络的训练和迁移学习,使开发人员能够根据其业务和应用的需求增强和专门化预训练模型。我们还希望在传统机器学习算法的开发方面发表更多文章。

您的机会

如果您想尝试Bumblebee,您可以:

  • 下载Livebook v0.8,并在笔记本中的“+ Smart”单元菜单中自动生成“神经网络任务”。我们目前正在努力使Livebook在其他平台和Spaces上运行(敬请关注!😉)。

  • 我们还编写了作为示例的单文件Phoenix应用程序,用于在您的Phoenix(+ LiveView)应用程序中集成Bumblebee模型。这些示例应提供了将其作为生产应用程序的一部分进行集成所需的基本组件。

  • 如果您更喜欢实践,可以阅读我们的一些笔记本。

如果您想帮助我们构建Elixir的机器学习生态系统,欢迎查看上述项目并尝试它们。有很多有趣的领域,从编译器开发到模型构建。例如,欢迎提交更多模型和架构到Bumblebee的拉取请求。未来将是并发、分布和有趣的!