EasyLM 项目介绍
项目概述
EasyLM 是一个专为简化大型语言模型(LLMs)操作而设计的项目。它提供了一站式解决方案,可用于在 JAX/Flax 环境下对 LLMs 进行预训练、微调、评估和服务。得益于 JAX 的 pjit 功能,EasyLM 可以扩展 LLM 的训练规模,最高可扩展到数百个 TPU/GPU 加速器。
搭建在 Huggingface 的 transformers 和 datasets 之上,EasyLM 以简单易用、易于定制的代码库为特色,消除了许多其他框架的复杂性,让用户可以更轻松地训练大型语言模型。
技术背景
EasyLM 依托 JAX/Flax 构建,利用 JAX 的 pjit 实用工具,可以通过在多个加速器间分片模型权重和训练数据,实现对无法在单个加速器上适应的大型模型进行训练。目前,EasyLM 支持单主机内多 TPU/GPU 的训练,同时支持在 Google Cloud TPU Pods 上的多主机训练。
支持的模型
EasyLM 当前支持以下语言模型:
- LLaMA
- LLaMA 2
- LLaMA 3
社区与交流
EasyLM 还运营着一个非官方的 Discord 社区,专注于在 JAX 中训练 LLM 的相关讨论。该服务器设有多个专门频道,供讨论 EasyLM、JaxSeq、Alpa 和 Levanter 等基于 JAX 的 LLM 框架。
使用 EasyLM 训练的模型
OpenLLaMA
OpenLLaMA 是 EasyLM 团队对 LLaMA 的许可证宽松的再现版本,它可用于商业用途。OpenLLaMA 可以在 EasyLM 中作为 LLaMA 权重的替代品使用。
Koala
Koala 是一个基于 LLaMA 微调的新聊天机器人。如果对 Koala 聊天机器人感兴趣,可以查看相关博客及本地运行文档。
安装方法
安装过程根据设备环境的不同而有所不同:
- GPU 主机安装:可以通过 Anaconda 快速配置 GPU 环境。
- Cloud TPU 主机安装:TPU 主机 VM 自带 Python 和 PIP,只需运行提供的脚本即可完成安装。
文档和参考
EasyLM 的详细文档可在项目的文档目录中找到。如果 EasyLM 对您的研究或应用有帮助,请使用提供的 BibTeX 条目进行引用。
致谢
EasyLM 的一些关键实现来源于其他开源项目,如:
- LLaMA 实现借鉴于 JAX_llama
- JAX/Flax GPT-J 和 RoBERTa 实现来自 transformers
- 大部分 JAX 实用程序来源于 mlx
- 整个代码库深受 JAXSeq 的启发
通过 EasyLM,模型训练变得更加高效和轻松,帮助用户更好地探索语言模型的潜力。