從 GPT2 到 Stable Diffusion:Elixir 社區(qū)迎來了 Hugging Face

上周,Elixir 社區(qū)向大家宣布,Elixir 語言社區(qū)新增從 GPT2 到 Stable Diffusion 的一系列神經(jīng)網(wǎng)絡(luò)模型。這些模型得以實(shí)現(xiàn)歸功于剛剛發(fā)布的 Bumblebee 庫(kù)。Bumblebee 庫(kù)是使用純 Elixir 語言實(shí)現(xiàn)的 Hugging Face Transformers 庫(kù)。
查看 Elixir 社區(qū)的發(fā)布文章:
https://news.livebook.dev/announcing-bumblebee-gpt2-stable-diffusion-and-more-in-elixir-3Op73O
為了幫助大家使用開始這些模型,Livebook—— 用于 Elixir 語言的計(jì)算 notebook 平臺(tái)團(tuán)隊(duì)創(chuàng)建了「智能單元」集合,讓開發(fā)者可以僅用三次點(diǎn)擊即搭建各種神經(jīng)網(wǎng)絡(luò)模型任務(wù)。
由于 Elixir 運(yùn)行在支持并發(fā)和分布式的 Erlang 虛擬機(jī)上,開發(fā)者可以將這些模型嵌入 Phoenix Web 應(yīng)用,作為他們現(xiàn)有 Phoenix Web 應(yīng)用的一部分,集成在使用 Broadway 的數(shù)據(jù)處理管道中,將模型和 Nerves 嵌入式系統(tǒng) 一起部署,而無需依賴第三方軟件。在所有場(chǎng)景中,Bumblebee 模型都會(huì)編譯到 CPU 和 GPU 中。
背景
將機(jī)器學(xué)習(xí)模型引入 Elixir 的努力始于大約 2 年前的 Numerical Elixir (Nx) 項(xiàng)目計(jì)劃。Nx 項(xiàng)目實(shí)現(xiàn) Elixir 多維張量和「數(shù)值定義」,作為可編譯到 CPU/GPU 的 Elixir 子集。Nx 項(xiàng)目沒有重造輪子,而是使用 Google XLA 綁定 (EXLA) 和 Libtorch (Torchx) 進(jìn)行 CPU/GPU 編譯。
Nx 項(xiàng)目的倡議還催生了其他幾個(gè)項(xiàng)目。Axon 項(xiàng)目從其他項(xiàng)目,如 Flax 和 PyTorch Ignite 項(xiàng)目中獲得啟發(fā),為 Elixir 引進(jìn)了可進(jìn)行功能組合的神經(jīng)網(wǎng)絡(luò)。Explorer 項(xiàng)目借鑒了 dplyr 和 Rust's Polars,為 Elixir 社區(qū)引進(jìn)了富有表現(xiàn)力和高性能的數(shù)據(jù)框 (DataFrame)。
Bumblebee 和 Tokenizers 是我們最新發(fā)布的庫(kù)函數(shù)。我們感謝 Hugging Face 對(duì)機(jī)器學(xué)習(xí)領(lǐng)域跨社區(qū)和跨工具協(xié)作的支持,以及 Hugging Face 在加速 Elixir 生態(tài)建設(shè)中起的關(guān)鍵作用。
Bumblebee:
https://github.com/elixir-nx/bumblebeeTokenizers:
https://github.com/elixir-nx/tokenizers
下一步,我們計(jì)劃專注于使用 Elixir 進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練和遷移學(xué)習(xí),讓開發(fā)者可以根據(jù)業(yè)務(wù)和應(yīng)用的需求,增強(qiáng)和專注于預(yù)訓(xùn)練模型。我們同時(shí)也希望發(fā)布更多有關(guān)傳統(tǒng)機(jī)器學(xué)習(xí)算法的進(jìn)展。
上手實(shí)踐
如果你想嘗試使用 Bumblebee 庫(kù),你可以:
下載 Livebook v0.8,從 Notebook 中的 "+ Smart" 單元菜單自動(dòng)生成 "Neural Networks Tasks",我們目前正致力于在其他平臺(tái)和空間上運(yùn)行 Livebook (敬請(qǐng)期待!??)
我們同時(shí)也提供了 Bumblebee 模型在 Phoenix (+ LiveView) apps 中的應(yīng)用示例:?jiǎn)挝募?Phoenix 應(yīng)用程序。這些示例為將它們集成到您的生產(chǎn)應(yīng)用程序中提供了必要的構(gòu)建模塊
想獲取更多的實(shí)踐方法,詳閱 Notebooks:
https://github.com/elixir-nx/bumblebee/tree/main/notebooks
如果你想幫助我們構(gòu)建 Elixir 機(jī)器學(xué)習(xí)生態(tài)系統(tǒng),歡迎嘗試使用以上的項(xiàng)目,并提供一些建議。這里有許多有趣的領(lǐng)域,從編譯開發(fā)到模型構(gòu)建。我們非常歡迎你可以參與進(jìn)來,一起為 Bumblebee 帶來更多的模型和模型架構(gòu)。Elixir 社區(qū)的未來發(fā)展方向是并發(fā)式、分布式和趣味性的。

客座文章,原作者為 Elixir 編程語言創(chuàng)始人: José Valim
英文原文發(fā)表在 Hugging Face 官方博客:?
https://hf.co/blog/elixir-bumblebee
譯者: Slinae Lin (林珊)
加入我們成為翻譯志愿者:
https://bit.ly/3vioxWa