Yi 开源双语大模型全栈实践指南:从本地推理、量化部署到微调
2026/9/16 22:05:27 网站建设 项目流程

Yi 开源双语大模型全栈实践指南:从本地推理、量化部署到微调

【免费下载链接】YiA series of large language models trained from scratch by developers @01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi

本指南以 01.AI 开源的 Yi 系列大语言模型为核心,系统讲解其模型体系、五种本地部署路径(pip、Docker、conda-lock、llama.cpp、Web Demo)以及微调与量化落地方法,并下沉到本仓库的脚本与源码级实现,帮助你在真实硬件约束下把 Yi 模型跑起来、调起来、用起来。读完本文,你将掌握从环境准备、权重下载、Chat/Base 模型推理,到 SFT 微调、GPTQ/AWQ 量化与软硬件选型的完整闭环。

Yi 系列模型是什么

Yi 系列是由 01.AI)。

在模型体系上,Yi 分为Chat(对话)Base(基座)两大类,并提供 4-bit(AWQ 量化)与 8-bit(GPTQ 量化)版本,量化模型可直接部署在消费级 GPU(如 3090、4090)上。

模型清单与下载渠道

Chat 模型:

模型说明
Yi-34B-Chat34B 对话模型
Yi-34B-Chat-4bitsAWQ 4-bit 量化版
Yi-34B-Chat-8bitsGPTQ 8-bit 量化版
Yi-6B-Chat6B 对话模型
Yi-6B-Chat-4bitsAWQ 4-bit 量化版
Yi-6B-Chat-8bitsGPTQ 8-bit 量化版

Base 模型:

模型说明
Yi-34B34B 基座模型
Yi-34B-200K上下文窗口扩展至 200K(约相当于 40 万汉字)
Yi-9B以 Yi-6B 为基础继续训练,额外使用 0.8T tokens
Yi-9B-200KYi-9B 的 200K 长上下文版本
Yi-6B6B 基座模型
Yi-6B-200K6B 的 200K 长上下文版本

官方权重可从 Hugging Face(01-ai 组织)、ModelScope(01ai 组织)与 WiseModel 三个渠道下载。若需回退到 2023-11-05 发布的旧版 Yi-34B-200K 权重,可在下载目录执行git checkout 069cd341d60f4ce4b07ec394e82b79e94f656cf

各尺寸定位与训练数据

模型系列定位默认上下文窗口预训练 tokens训练数据截止
6B 系列适合个人与学术用途4K3T2023 年 6 月
9B 系列Yi 系列中代码与数学能力最强4KYi-6B 基础上续训 0.8T2023 年 6 月
34B 系列适合个人、学术及商业(尤其中小企业),性价比高且具备涌现能力4K3T2023 年 6 月

提示:Chat 模型经过 SFT 训练,回答多样性更高,更适合创意类等下游任务;但这种多样性也可能放大幻觉、重新生成时的不确定性以及多步任务中的累积误差。若需要更连贯一致的输出,建议调整temperaturetop_ptop_k等生成参数。

快速开始:先选择你的路径

Yi 官方提供了一张部署路线决策图,帮助你根据硬件条件快速定位合适的方式(assets/img/quick_start_path.png):

  • 本地部署 + 资源充足(如 NVIDIA A800 80GB):选择 pip、Docker 或 conda-lock;
  • 本地部署 + 资源有限(如 MacBook Pro):选择 llama.cpp 运行量化模型;
  • 不想本地部署:可通过在线 API(官方 Yi API、Replicate)或 Playground 体验;
  • 只想聊天:可直接使用 Hugging Face 上的 Yi-34B-Chat Space 等在线服务。

方式一:pip 本地推理(以 A800 跑 Yi-34B-Chat 为例)

Step 0:前置条件

  • 安装 Python 3.10 或更高版本;
  • 如需运行其他 Yi 模型,请参考下文"部署软硬件要求"核对显存。

Step 1:准备环境

git clone <你的 Yi 仓库地址> cd Yi pip install -r requirements.txt

仓库根目录的 requirements.txt 锁定了核心依赖,其中包括transformers>=4.36.2gradio>=4.13.0torch==2.0.1acceleratesentencepiecedeepspeeddatasetsprotobuf>=4.25.1等,覆盖推理、Web Demo 与微调所需组件。

Step 2:下载模型权重

从 Hugging Face、ModelScope 或 WiseModel 下载对应模型的权重与 tokenizer 文件。

Step 3:执行推理

3.1 Chat 模型推理

创建quick_start.py

from transformers import AutoModelForCausalLM, AutoTokenizer model_path = '<your-model-path>' tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False) # 自 transformers 4.35.0 起,GPTQ/AWQ 量化模型可直接用 AutoModelForCausalLM 加载 model = AutoModelForCausalLM.from_pretrained( model_path, device_map="auto", torch_dtype='auto' ).eval() # Prompt content: "hi" 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) # Model response: "Hello! How can I assist you today?" print(response)

运行:

python quick_start.py

预期输出:

Hello! How can I assist you today?

要点说明:

  • use_fast=False与 Yi 的 tokenizer 配置匹配,避免 fast tokenizer 兼容问题;
  • apply_chat_template将消息列表渲染为 Chat 模型的对话格式并追加生成提示符(add_generation_prompt=True);
  • 解码时通过input_ids.shape[1]:截断输入部分,只保留新生成的 token。
3.2 Base 模型推理(Yi-34B)

Base 模型推理步骤与 Chat 模型类似,但直接使用仓库提供的现成脚本 demo/text_generation.py:

python demo/text_generation.py --model <your-model-path>

该脚本通过argparse暴露了完整参数(见 demo/text_generation.py):

  • --model:本地模型路径或 Hugging Face 模型名,默认01-ai/Yi-6B
  • --max-tokens:最大生成 token 数,默认 256;
  • --streaming:开启流式输出(内部使用TextStreamer);
  • --prompt:起始提示词;
  • --cpu:仅用 CPU 运行(此时device_map="cpu",否则为"auto")。

脚本内部还预留了do_samplerepetition_penaltyno_repeat_ngram_sizetemperaturetop_ktop_p等生成参数的注释开关(demo/text_generation.py),可按需取消注释。

3.3 Base 模型推理(Yi-9B)
from transformers import AutoModelForCausalLM, AutoTokenizer MODEL_DIR = "01-ai/Yi-9B" model = AutoModelForCausalLM.from_pretrained(MODEL_DIR, torch_dtype="auto") tokenizer = AutoTokenizer.from_pretrained(MODEL_DIR, use_fast=False) input_text = "# write the quick sort algorithm" inputs = tokenizer(input_text, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_length=256) print(tokenizer.decode(outputs[0], skip_special_tokens=True))

方式二:Docker 部署

在 A800 或 4×4090 上运行 Yi-34B-Chat 的步骤:

Step 0 前置条件:安装 Docker 与 nvidia-container-toolkit。

Step 1 启动容器

docker run -it --gpus all \ -v <your-model-path>:/models ghcr.io/01-ai/yi:latest

也可以从registry.lingyiwanwu.com/ci/01-ai/yi:latest拉取镜像。仓库根目录的 Dockerfile 显示,镜像基于 NVIDIA CUDA 11.8(ubuntu22.04)构建,内部通过 micromamba 依据 conda-lock.yml 创建名为yi的 conda 环境并安装全部依赖,工作目录为/home/yi/workspace/Yi

Step 2 执行推理

  • Chat 模型:步骤同 pip 方式,唯一区别是model_path需改为容器内的模型挂载路径<your-model-mount-path>
  • Base 模型:同样将--model参数改为挂载路径。

方式三:conda-lock 可复现环境

如需完全可复现的 conda 环境,可基于仓库根目录的 conda-lock.yml(内含各依赖的精确版本)创建环境:

  1. 按 micromamba 官方文档安装 micromamba;
  2. 执行:
micromamba install -y -n yi -f conda-lock.yml

该命令会创建名为yi的环境并安装全部锁定版本依赖。

方式四:llama.cpp 在低资源设备上运行量化模型

以下教程(完整版见 docs/README_llama.cpp.md)演示如何在 16GB 内存的 MacBook Pro(Apple M2 Pro)上运行 2-bit 量化模型Yi-chat-6B-2bits(GGUF 格式)。

Step 0 前置条件:安装 git-lfs。

Step 1 克隆 llama.cpp

git clone git@github.com:ggerganov/llama.cpp.git

Step 2 下载 Yi 量化模型(先仅拉取指针,再按需拉取单个 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

Step 3 推理,有两种方式:

  • 终端方式(默认 completion 模式;更多生成参数见./main -h):
make -j4 && ./main -m /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf -p "How do you feed your pet fox? Please answer this question in 6 simple steps:\nStep 1:" -n 384 -e
  • Web 方式(启动本地服务后浏览器访问http://0.0.0.0:8080):
cd llama.cpp ./server --ctx-size 2048 --host 0.0.0.0 --n-gpu-layers 64 --model /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf

启动日志中可以看到freq_base = 5000000.0(对应 Yi 的长上下文 RoPE 基数)、ggml_metal_init: found device: Apple M2 Pro等关键信息,说明 Metal 后端成功加载、KV cache 与计算缓冲均已分配完毕(docs/README_llama.cpp.md 中有完整日志示例):

随后在输入框提问"如何用 6 步喂食宠物狐狸"等自然语言问题,即可获得流式回答(对应截图见 assets/img/yi_llama_cpp2.png)。

方式五:Web Demo 聊天界面

Yi 官方为Chat 模型提供了基于 Gradio 的 Web UI(注意:Base 模型不支持该场景)。前置步骤同"pip 方式"的 Step 1、Step 2,然后执行:

python demo/web_demo.py -c <your-model-path>

将控制台输出的地址粘贴到浏览器即可打开聊天界面:

从源码看(demo/web_demo.py),该 Demo 具备以下工程细节:

  • 支持多轮对话:predict将历史消息组装为role: user/assistant结构,通过apply_chat_template渲染(demo/web_demo.py);
  • 自定义StopOnTokens停止条件:遇到<|endoftext|><|im_start|><|im_end|><|im_sep|>等特殊 token 即停止生成(demo/web_demo.py);
  • 流式输出:使用TextIteratorStreamer配合后台线程实现 token 级流式渲染;
  • 可调参数:Maximum length(最大长度,0~32768)、Top P(默认 0.8)、Temperature(默认 0.6),并内置repetition_penalty=1.2
  • 命令行参数:-c/--checkpoint-path(默认01-ai/Yi-6B-Chat)、--cpu-only--share--inbrowser--server-port(默认 8111)、--server-name(默认 127.0.0.1)。

微调:基于 SFT 定制专属模型

仓库在 finetune 目录下提供了完整的 SFT 微调实现,一行命令即可上手:

bash finetune/scripts/run_sft_Yi_6b.sh

微调完成后,可对比基座模型与微调模型的回答效果:

bash finetune/scripts/run_eval.sh

准备自定义数据集

默认使用 BAAI/COIG 的示例数据集,也可按如下jsonl格式准备自己的数据(一条记录即一个 prompt 与参考答案):

{ "prompt": "Human: Who are you? Assistant:", "chosen": "I'm Yi." }

仓库内置的示例数据集位于 finetune/yi_example_dataset/data,包含train.jsonleval.jsonl两个文件。

两种运行环境

方式 A:Docker 挂载(挂载自定义数据与输出目录):

docker run -it \ -v /path/to/save/finetuned/model/:/finetuned-model \ -v /path/to/train.jsonl:/yi/finetune/data/train.json \ -v /path/to/eval.jsonl:/yi/finetune/data/eval.json \ ghcr.io/01-ai/yi:latest \ bash finetune/scripts/run_sft_Yi_6b.sh

方式 B:本地 conda 环境

conda create -n dev_env python=3.10 -y conda activate dev_env pip install torch==2.0.1 deepspeed==0.10 tensorboard transformers datasets sentencepiece accelerate ray==2.7

硬件要求

  • Yi-6B:推荐单节点 4 卡,单卡显存 > 60GB;
  • Yi-34B:由于 zero-offload 技术会大量消耗 CPU 内存,务必用CUDA_VISIBLE_DEVICES限制 GPU 数量(finetune/scripts/run_sft_Yi_34b.sh 中已设置为0,1,2,3)。典型配置为 8 卡节点(运行限 4 卡)、单卡显存 > 80GB、总 CPU 内存 > 900GB。

脚本参数解读

以 finetune/scripts/run_sft_Yi_6b.sh 为例,脚本基于 DeepSpeed 训练:

cd "$(dirname "${BASH_SOURCE[0]}")/../sft/" deepspeed main.py \ --data_path ../yi_example_dataset/ \ --model_name_or_path /base_model \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --max_seq_len 4096 \ --learning_rate 2e-6 \ --weight_decay 0. \ --num_train_epochs 4 \ --training_debug_steps 20 \ --gradient_accumulation_steps 1 \ --lr_scheduler_type cosine \ --num_warmup_steps 0 \ --seed 1234 \ --gradient_checkpointing \ --zero_stage 2 \ --deepspeed \ --offload \ --output_dir ./finetuned_model

关键参数说明:

  • --data_path:训练/验证数据目录,需包含train.jsonleval.jsonl
  • --model_name_or_path:基座模型路径(6B/34B);
  • --max_seq_len 4096:与 Yi 默认 4K 上下文对齐;
  • --learning_rate 2e-6:SFT 常用低学习率;
  • --training_debug_steps 20:每 20 步输出一次调试信息;对 6B 基座配合num_train_epochs=4约 20 分钟即可产出 Chat 模型;
  • --zero_stage 2+--offload:DeepSpeed ZeRO-2 并启用 CPU offload;
  • --gradient_checkpointing:梯度检查点,显著降低显存占用;
  • --output_dir:微调产物输出目录。

注意:Yi-34B 初始化阶段耗时较长属正常现象,请耐心等待。

评估微调效果

cd finetune/scripts bash run_eval.sh

该脚本(finetune/scripts/run_eval.sh)调用 finetune/sft/prompt_eval.py,同时加载基座模型(--model_name_or_path_base)与微调模型(--model_name_or_path_finetune),以中文提示词对比二者回答。

量化:GPTQ 与 AWQ

Yi 对两种主流 PTQ(训练后量化)方案均提供了一键脚本与评测脚本,量化后模型精度损失小,同时降低显存占用、可能带来推理加速。

GPTQ 量化

python quantization/gptq/quant_autogptq.py \ --model /base_model \ --output_dir /quantized_model \ --trust_remote_code

量化完成后评估:

python quantization/gptq/eval_quantized_model.py \ --model /quantized_model \ --trust_remote_code

从源码看(quantization/gptq/quant_autogptq.py),量化流程基于 transformers 集成的GPTQConfig

  • --bits:量化位宽,默认 4;--group_size:量化分组大小,默认 128(对应 README 中--bits 4 --group_size 128的推荐组合);
  • 校准数据集使用wikitext2disable_exllama=False表示启用 exllama 内核;
  • 加载模型时将model_config.max_position_embeddings设置为 4096 以避免量化阶段 OOM(quantization/gptq/quant_autogptq.py);
  • 产物通过save_pretrained(..., safe_serialization=True)保存为安全格式。

AWQ 量化

python quantization/awq/quant_autoawq.py \ --model /base_model \ --output_dir /quantized_model \ --trust_remote_code

评估:

python quantization/awq/eval_quantized_model.py \ --model /quantized_model \ --trust_remote_code

AWQ 是一种高效的 INT3/4 低比特权重量化方法,同样支持--bits 4 --group_size 128等参数(对应 quantization/awq/quant_autoawq.py)。

量化后性能差异主要取决于量化方法与具体使用场景:从 Benchmark 看可能仅有几个百分点的轻微下降;但在逻辑推理等主观场景下,哪怕 1% 的波动也可能影响输出准确性。

部署软硬件要求

软件要求

  • 4-bit 量化模型:需要安装 AutoAWQ 与 CUDA;
  • 8-bit 量化模型:需要安装 AutoGPTQ 与 CUDA。

硬件要求:Chat 模型

模型最小显存推荐 GPU 示例
Yi-6B-Chat15 GB1×RTX 3090/4090/A10/A30(24 GB)
Yi-6B-Chat-4bits4 GB1×RTX 3060(12 GB)/ RTX 4060(8 GB)
Yi-6B-Chat-8bits8 GB1×RTX 3070/4060(8 GB)
Yi-34B-Chat72 GB4×RTX 4090(24 GB)/ 1×A800(80 GB)
Yi-34B-Chat-4bits20 GB1×RTX 3090/4090/A10/A30(24 GB)/ A100(40 GB)
Yi-34B-Chat-8bits38 GB2×RTX 3090/4090(24 GB)/ 1×A800(40 GB)

不同 batch 下的最小显存明细:

模型batch=1batch=4batch=16batch=32
Yi-6B-Chat12 GB13 GB15 GB18 GB
Yi-6B-Chat-4bits4 GB5 GB7 GB10 GB
Yi-6B-Chat-8bits7 GB8 GB10 GB14 GB
Yi-34B-Chat65 GB68 GB76 GB> 80 GB
Yi-34B-Chat-4bits19 GB20 GB30 GB40 GB
Yi-34B-Chat-8bits35 GB37 GB46 GB58 GB

硬件要求:Base 模型

模型最小显存推荐 GPU 示例
Yi-6B15 GB1×RTX 3090/4090/A10/A30(24 GB)
Yi-6B-200K50 GB1×A800(80 GB)
Yi-9B20 GB1×RTX 4090(24 GB)
Yi-34B72 GB4×RTX 4090(24 GB)/ 1×A800(80 GB)
Yi-34B-200K200 GB4×A800(80 GB)

常见问题(FAQ)

微调选 Base 还是 Chat?取决于数据量与任务需求:数据量大(如超过 1 万条样本)优先 Base 模型;数据量有限时 Chat 模型更合适;通常建议两个都微调并对比效果后择优。

Yi-34B 与 Yi-34B-Chat 全量微调有何区别?Chat 模型采用 SFT 方式训练,回答更接近人类对话风格;Base 模型微调更通用、性能天花板更高。数据质量有保障可优先 Base,追求对话风格或对数据质量存疑则优先 Chat。

量化模型与原版性能差距多大?取决于量化方法与场景,AWQ 官方模型在 Benchmark 上通常仅损失几个百分点;但在逻辑推理等场景,1% 的波动也可能影响结果。

哪里找微调问答数据集?可参考 Hugging Face 上的 m-a-p/COIG-CQIA 等公开数据集,以及 LLaMA-Factory 等微调框架内置的数据集。

Yi-34B FP16 微调显存需求?全参数微调约需 8×80GB GPU;LoRA 等低成本方案可显著降低需求;优先考虑 BF16 而非 FP16 以优化性能。

生态、基准与学习资源

上游兼容性

Yi 模型以 Llama 模型格式保存,可直接用LlamaForCausalLMLlamaTokenizer加载(见 README.md 的 Upstream 小节),因此可复用 Llama 生态的既有工具链,例如:

from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("01-ai/Yi-34b", use_fast=False) model = AutoModelForCausalLM.from_pretrained("01-ai/Yi-34b", device_map="auto")

基准表现

  • Chat 模型:Yi-34B-Chat 在 MMLU、CMMLU、BBH、GSM8k 等基准上表现出色(评估图见 assets/img/benchmark_chat.png)。评估方法:除 TruthfulQA 外均同时采用 zero-shot 与 few-shot,Chat 模型更多采用 zero-shot,并对生成文本进行答案抽取(评估方法说明见 README.md 的 Benchmarks 小节)。
  • Base 模型:Yi-34B 与 Yi-34B-200K 在 MMLU、CMMLU、常识推理、阅读理解等维度表现突出(评估图见 assets/img/benchmark_base.png)。评估遵循 Llama2 的方法论:常识推理使用 PIQA、SIQA、HellaSwag、WinoGrande、ARC、OBQA、CSQA;阅读理解使用 SQuAD、QuAC、BoolQ;数学与代码引入 GSM8K(8-shot@1)、MATH(4-shot@1)、HumanEval(0-shot@1)、MBPP(3-shot@1),且统一采用 greedy decoding 与一致的提示词/后处理策略。
  • Yi-9B:在同尺寸开源模型中综合表现突出,尤其擅长代码、数学、常识推理与阅读理解(各维度对比图见 assets/img/Yi-9B_benchmark_details.png、assets/img/Yi-9B_benchmark_overall.png、assets/img/Yi-9B_benchmark_code.png、assets/img/Yi-9B_benchmark_math.png、assets/img/Yi-9B_benchmark_text.png)。

学习资源

  • 中英文双语教程与可运行示例位于仓库 Cookbook 目录(中文见 Cookbook/cn,英文见 Cookbook/en),覆盖 RAG、Function Calling、本地部署(llama.cpp / LM Studio / Ollama / MLX)、量化、推理框架(Transformers / vLLM / lmdeploy / Swift)等主题;
  • 微调示例与数据集模板见 finetune/yi_example_dataset;
  • 视觉语言模型 Yi-VL 的代码位于 VL 目录,内含命令行推理、OpenAI 兼容 API 与 Web Demo。

使用许可

Yi 系列模型的代码与权重以 Apache 2.0 协议分发(LICENSE),个人、学术与商业使用均免费。若基于该模型创建衍生作品,建议在衍生作品中加入如下署名声明:

This work is a derivative of [The Yi Series Model You Base On] by 01.AI, used under the Apache 2.0 License.

需要说明的是:虽然训练过程中使用了数据合规性检查算法,但由于数据的复杂性与语言模型使用场景的多样性,模型仍可能在个别场景下产生不正确或不合理的输出,使用时请注意规避相关风险(完整免责声明见 README.md 的 Disclaimer 小节)。

【免费下载链接】YiA series of large language models trained from scratch by developers @01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询