Yi:从零训练的双语开源大语言模型实战指南
【免费下载链接】YiA series of large language models trained from scratch by developers @01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi
Yi 是 01.AI 从零开始训练的双语(中英)开源大语言模型,覆盖 6B、9B、34B 等参数规模,并提供了 Base、Chat 以及 200K 长上下文三类变体。仓库不仅托管模型权重,还内置推理演示、SFT 微调与 AWQ/GPTQ 量化的可运行脚本。本文面向有 Python 基础、准备在本地部署或二次开发 Yi 的开发者,带你从安装一路做到微调与量化。
一、快速上手 🚀
先确认运行环境:
- Python 3.10 及以上;
- 资源充足(例如单卡 A800 80GB)可用 pip、Docker 或 conda-lock 方式部署;
- 资源有限(例如 16GB 内存的 MacBook Pro)建议走 llama.cpp 量化路线。
克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/yi/Yi cd Yi pip install -r requirements.txt模型权重与 tokenizer 可从 Hugging Face(01-ai 组织页)、ModelScope、WiseModel 三个渠道获取。装好后创建quick_start.py跑一遍聊天推理,终端出现类似Hello! How can I assist you today?的输出,即代表环境就绪。
二、能力清单 📋
| 模型类别 | 覆盖型号 | 定位 | 关键参数 |
|---|---|---|---|
| Base 模型 | Yi-6B / 9B / 34B | 预训练底座,供微调 | 默认上下文 4K |
| Chat 模型 | Yi-6B-Chat / 34B-Chat | 对话推理,SFT 训练 | 回复风格更多样 |
| 长文本模型 | 各系列 200K 版 | 长文档理解 | 约 40 万汉字 |
| 量化版本 | 4bits(AWQ)/ 8bits(GPTQ) | 消费级 GPU 部署 | 3090、4090 可用 |
| 多模态 | Yi-VL-6B / 34B | 图文理解 | 仓库VL/目录 |
- 6B 系列适合个人与学术使用;9B 系列在 Yi 家族中代码与数学能力最强(由 6B 继续训练 0.8T tokens 得到);34B 系列对个人、学术和中小企业商用都友好。
- 全量模型显存门槛较高:例如 Yi-34B-Chat 最低 72GB,Yi-34B-200K 最低 200GB;量化后显著降低,Yi-6B-Chat-4bits 最低仅需 4GB。
三、生成流程
从输入到输出的核心链路只有三步:
提示词(prompt) → AutoTokenizer 分词;Chat 模型先经 apply_chat_template 套对话模板 → model.generate() 在 GPU 上生成 → tokenizer.decode() 还原为文本回复- Chat 模型:输入按
role/content消息列表组织,add_generation_prompt=True会自动补上生成引导。 - Base 模型:输入为纯文本 prompt,走续写(completion)模式。
- 超长输入可开启张量并行,把模型切分到多张卡上推理。
四、核心用法
Chat 模型本地推理
最小可运行的quick_start.py(A800 80GB 上跑 Yi-34B-Chat):
from transformers import AutoModelForCausalLM, AutoTokenizer model_path = '<your-model-path>' # 替换为你下载的权重路径 tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False) model = AutoModelForCausalLM.from_pretrained( # transformers 4.35.0 起可直接加载 GPTQ/AWQ 量化模型 model_path, device_map="auto", torch_dtype='auto' ).eval() messages = [{"role": "user", "content": "hi"}] # 多轮对话在此追加消息 input_ids = tokenizer.apply_chat_template( conversation=messages, tokenize=True, add_generation_prompt=True, return_tensors='pt' ) output_ids = model.generate(input_ids.to('cuda')) response = tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokens=True) print(response)运行python quick_start.py即可看到模型回复。
Base 模型文本生成
仓库demo/目录自带脚本,直接调用即可:
python demo/text_generation.py --model <your-model-path> # --prompt 可更换提示词输入超长序列时可用双卡张量并行加速,避免显存不足:
torchrun --nproc_per_node 2 \ demo/text_generation_tp.py \ --model 01-ai/Yi-6B \ --max-tokens 512 --eos-token $'\n' --streamingWeb 演示界面
仅 Chat 模型支持该功能(Base 模型不支持)。启动后按控制台输出的网址打开浏览器:
python demo/web_demo.py -c <你的模型路径>llama.cpp 本地低配运行
适合 MacBook Pro(16GB、M2 Pro 这类设备)运行量化后的 Yi-chat-6B-2bits。前提是先装好git-lfs:
# 只拉取仓库指针,再单独下载 GGUF 权重 GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/XeIaso/yi-chat-6B-GGUF git-lfs pull --include yi-chat-6b.Q2_K.gguf编译 llama.cpp 后,终端推理:
make -j4 && ./main -m <模型文件路径>/yi-chat-6b.Q2_K.gguf -p "你的问题" -n 384 -e也可以起一个 Web 聊天服务,浏览器访问http://0.0.0.0:8080:
./server --ctx-size 2048 --host 0.0.0.0 --n-gpu-layers 64 \ --model <模型文件路径>/yi-chat-6b.Q2_K.gguf五、进阶特性 🛠️
SFT 微调 Base 模型
- 触发条件:拿到 Base 模型权重,并准备
jsonl格式数据集,每行形如{"prompt": "Human: Who are you? Assistant:", "chosen": "I'm Yi."};示例数据在 finetune/yi_example_dataset/。 - 硬件参考:Yi-6B 建议 4 卡、每卡显存大于 60GB;Yi-34B 建议 8 卡 80GB 节点,用
CUDA_VISIBLE_DEVICES=0,1,2,3限制实际参与训练的卡数,CPU 内存大于 900GB。 - 运行:Docker 方式挂载自定义数据后执行 SFT 脚本;本地方式可先建 conda 环境(
torch==2.0.1 deepspeed==0.10 tensorboard transformers datasets sentencepiece accelerate ray==2.7)。
bash finetune/scripts/run_sft_Yi_6b.sh # 6B 约 20 分钟产出 Chat 模型 bash finetune/scripts/run_eval.sh # 对比 Base 与微调后的回复AWQ 与 GPTQ 量化
- 触发条件:拿到 Base 模型权重,使用 quantization/ 下的脚本;两者都属于后训练量化(PTQ),AWQ 走 INT3/INT4 权重量化,GPTQ 侧重省显存与提速。
- 支持的入口:
quantization/awq/quant_autoawq.py(AWQ)、quantization/gptq/quant_autogptq.py(GPTQ),量化后用同目录的eval_quantized_model.py评估。 - 代码片段:
python quantization/awq/quant_autoawq.py \ --model /base_model --output_dir /quantized_model \ --bits 4 --group_size 128 --trust_remote_code python quantization/awq/eval_quantized_model.py \ --model /quantized_model --trust_remote_codeGPTQ 侧把脚本换成quantization/gptq/quant_autogptq.py与对应的eval_quantized_model.py即可,参数一致。量化模型部署还需安装 AWQ 或 GPTQ 的推理依赖(含 CUDA)。
Yi-VL 多模态推理
- 触发条件:下载 Yi-VL-6B 或 Yi-VL-34B 权重,进入 VL/ 目录配置环境。
- 支持项:单图问答(
single_inference.py)、命令行对话(cli.py)、Web 演示(web_demo.py)、OpenAI 风格 API(openai_api.py)。 - 代码片段:
cd VL export PYTHONPATH=$PYTHONPATH:$(pwd) pip install -r requirements.txt CUDA_VISIBLE_DEVICES=0 python single_inference.py \ --model-path <Yi-VL 权重路径> \ --image-file images/cats.jpg \ --question "Describe the cats and what they are doing in detail."六、目录速览
Yi/ ├── demo/ # 文本生成与 Web 演示脚本 ├── finetune/ # SFT 微调脚本、示例数据与工具模块 ├── quantization/ # AWQ / GPTQ 量化与评估脚本 ├── VL/ # Yi-VL 多模态推理:single_inference / cli / web_demo / openai_api ├── Cookbook/ # 中英文教程与 Notebook(RAG、函数调用、本地部署) ├── docs/ # llama.cpp 本地部署教程 ├── requirements.txt # 依赖清单 ├── Dockerfile # 官方镜像构建 ├── conda-lock.yml # 可复现 conda 环境 ├── LICENSE # Apache 2.0 └── MODEL_LICENSE_AGREEMENT.txt # 模型社区许可七、延伸阅读
- finetune/README.md:微调数据准备、硬件配置与评估的完整说明。
- quantization/awq/README.md:AWQ 量化的逐步教程。
- quantization/gptq/README.md:GPTQ 量化的逐步教程。
- docs/README_llama.cpp.md:llama.cpp 本地部署量化模型的完整教程。
- Cookbook/README_cn.md:Yi Cookbook 中文教程索引(含 RAG、函数调用、本地运行)。
- VL/README.md:Yi-VL 多模态推理与 API 用法。
- MODEL_LICENSE_AGREEMENT.txt:模型权重许可条款;代码遵循 LICENSE(Apache 2.0)。
性能方面可参考仓库 README 中的结论:Yi-34B-Chat 曾在 AlpacaEval 排行榜位列第二(仅次于 GPT-4 Turbo),Yi-34B 在 C-Eval 等基准上中英双语均居当时开源模型首位。更完整的训练细节与评测方法见 Yi 技术报告(arXiv:2403.04652)。
【免费下载链接】YiA series of large language models trained from scratch by developers @01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考