资讯动态

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

发布时间:2026/9/16 22:05:28 来源:尧图企业网站定制
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-bitAWQ 量化与 8-bitGPTQ 量化版本量化模型可直接部署在消费级 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 tokensYi-9B-200KYi-9B 的 200K 长上下文版本Yi-6B6B 基座模型Yi-6B-200K6B 的 200K 长上下文版本官方权重可从 Hugging Face01-ai 组织、ModelScope01ai 组织与 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 训练回答多样性更高更适合创意类等下游任务但这种多样性也可能放大幻觉、重新生成时的不确定性以及多步任务中的累积误差。若需要更连贯一致的输出建议调整temperature、top_p、top_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 锁定了核心依赖其中包括transformers4.36.2、gradio4.13.0、torch2.0.1、accelerate、sentencepiece、deepspeed、datasets、protobuf4.25.1等覆盖推理、Web Demo 与微调所需组件。Step 2下载模型权重从 Hugging Face、ModelScope 或 WiseModel 下载对应模型的权重与 tokenizer 文件。Step 3执行推理3.1 Chat 模型推理创建quick_start.pyfrom transformers import AutoModelForCausalLM, AutoTokenizer model_path your-model-path tokenizer AutoTokenizer.from_pretrained(model_path, use_fastFalse) # 自 transformers 4.35.0 起GPTQ/AWQ 量化模型可直接用 AutoModelForCausalLM 加载 model AutoModelForCausalLM.from_pretrained( model_path, device_mapauto, torch_dtypeauto ).eval() # Prompt content: hi messages [ {role: user, content: hi} ] input_ids tokenizer.apply_chat_template(conversationmessages, tokenizeTrue, add_generation_promptTrue, return_tensorspt) output_ids model.generate(input_ids.to(cuda)) response tokenizer.decode(output_ids[0][input_ids.shape[1]:], skip_special_tokensTrue) # Model response: Hello! How can I assist you today? print(response)运行python quick_start.py预期输出Hello! How can I assist you today?要点说明use_fastFalse与 Yi 的 tokenizer 配置匹配避免 fast tokenizer 兼容问题apply_chat_template将消息列表渲染为 Chat 模型的对话格式并追加生成提示符add_generation_promptTrue解码时通过input_ids.shape[1]:截断输入部分只保留新生成的 token。3.2 Base 模型推理Yi-34BBase 模型推理步骤与 Chat 模型类似但直接使用仓库提供的现成脚本 demo/text_generation.pypython 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_mapcpu否则为auto。脚本内部还预留了do_sample、repetition_penalty、no_repeat_ngram_size、temperature、top_k、top_p等生成参数的注释开关demo/text_generation.py可按需取消注释。3.3 Base 模型推理Yi-9Bfrom transformers import AutoModelForCausalLM, AutoTokenizer MODEL_DIR 01-ai/Yi-9B model AutoModelForCausalLM.from_pretrained(MODEL_DIR, torch_dtypeauto) tokenizer AutoTokenizer.from_pretrained(MODEL_DIR, use_fastFalse) input_text # write the quick sort algorithm inputs tokenizer(input_text, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_length256) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))方式二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.8ubuntu22.04构建内部通过 micromamba 依据 conda-lock.yml 创建名为yi的 conda 环境并安装全部依赖工作目录为/home/yi/workspace/Yi。Step 2 执行推理Chat 模型步骤同 pip 方式唯一区别是model_path需改为容器内的模型挂载路径your-model-mount-pathBase 模型同样将--model参数改为挂载路径。方式三conda-lock 可复现环境如需完全可复现的 conda 环境可基于仓库根目录的 conda-lock.yml内含各依赖的精确版本创建环境按 micromamba 官方文档安装 micromamba执行micromamba install -y -n yi -f conda-lock.yml该命令会创建名为yi的环境并安装全部锁定版本依赖。方式四llama.cpp 在低资源设备上运行量化模型以下教程完整版见 docs/README_llama.cpp.md演示如何在 16GB 内存的 MacBook ProApple M2 Pro上运行 2-bit 量化模型Yi-chat-6B-2bitsGGUF 格式。Step 0 前置条件安装 git-lfs。Step 1 克隆 llama.cppgit clone gitgithub.com:ggerganov/llama.cpp.gitStep 2 下载 Yi 量化模型先仅拉取指针再按需拉取单个 GGUF 文件GIT_LFS_SKIP_SMUDGE1 git clone https://huggingface.co/XeIaso/yi-chat-6B-GGUF git-lfs pull --include yi-chat-6b.Q2_K.ggufStep 3 推理有两种方式终端方式默认 completion 模式更多生成参数见./main -hmake -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 -eWeb 方式启动本地服务后浏览器访问http://0.0.0.0:8080cd 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_penalty1.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: Im Yi. }仓库内置的示例数据集位于 finetune/yi_example_dataset/data包含train.jsonl与eval.jsonl两个文件。两种运行环境方式 ADocker 挂载挂载自定义数据与输出目录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 python3.10 -y conda activate dev_env pip install torch2.0.1 deepspeed0.10 tensorboard transformers datasets sentencepiece accelerate ray2.7硬件要求Yi-6B推荐单节点 4 卡单卡显存 60GBYi-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.jsonl与eval.jsonl--model_name_or_path基座模型路径6B/34B--max_seq_len 4096与 Yi 默认 4K 上下文对齐--learning_rate 2e-6SFT 常用低学习率--training_debug_steps 20每 20 步输出一次调试信息对 6B 基座配合num_train_epochs4约 20 分钟即可产出 Chat 模型--zero_stage 2--offloadDeepSpeed 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 与 AWQYi 对两种主流 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_exllamaFalse表示启用 exllama 内核加载模型时将model_config.max_position_embeddings设置为 4096 以避免量化阶段 OOMquantization/gptq/quant_autogptq.py产物通过save_pretrained(..., safe_serializationTrue)保存为安全格式。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_codeAWQ 是一种高效的 INT3/4 低比特权重量化方法同样支持--bits 4 --group_size 128等参数对应 quantization/awq/quant_autoawq.py。量化后性能差异主要取决于量化方法与具体使用场景从 Benchmark 看可能仅有几个百分点的轻微下降但在逻辑推理等主观场景下哪怕 1% 的波动也可能影响输出准确性。部署软硬件要求软件要求4-bit 量化模型需要安装 AutoAWQ 与 CUDA8-bit 量化模型需要安装 AutoGPTQ 与 CUDA。硬件要求Chat 模型模型最小显存推荐 GPU 示例Yi-6B-Chat15 GB1×RTX 3090/4090/A10/A3024 GBYi-6B-Chat-4bits4 GB1×RTX 306012 GB/ RTX 40608 GBYi-6B-Chat-8bits8 GB1×RTX 3070/40608 GBYi-34B-Chat72 GB4×RTX 409024 GB/ 1×A80080 GBYi-34B-Chat-4bits20 GB1×RTX 3090/4090/A10/A3024 GB/ A10040 GBYi-34B-Chat-8bits38 GB2×RTX 3090/409024 GB/ 1×A80040 GB不同 batch 下的最小显存明细模型batch1batch4batch16batch32Yi-6B-Chat12 GB13 GB15 GB18 GBYi-6B-Chat-4bits4 GB5 GB7 GB10 GBYi-6B-Chat-8bits7 GB8 GB10 GB14 GBYi-34B-Chat65 GB68 GB76 GB 80 GBYi-34B-Chat-4bits19 GB20 GB30 GB40 GBYi-34B-Chat-8bits35 GB37 GB46 GB58 GB硬件要求Base 模型模型最小显存推荐 GPU 示例Yi-6B15 GB1×RTX 3090/4090/A10/A3024 GBYi-6B-200K50 GB1×A80080 GBYi-9B20 GB1×RTX 409024 GBYi-34B72 GB4×RTX 409024 GB/ 1×A80080 GBYi-34B-200K200 GB4×A80080 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 GPULoRA 等低成本方案可显著降低需求优先考虑 BF16 而非 FP16 以优化性能。生态、基准与学习资源上游兼容性Yi 模型以 Llama 模型格式保存可直接用LlamaForCausalLM与LlamaTokenizer加载见 README.md 的 Upstream 小节因此可复用 Llama 生态的既有工具链例如from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer AutoTokenizer.from_pretrained(01-ai/Yi-34b, use_fastFalse) model AutoModelForCausalLM.from_pretrained(01-ai/Yi-34b, device_mapauto)基准表现Chat 模型Yi-34B-Chat 在 MMLU、CMMLU、BBH、GSM8k 等基准上表现出色评估图见 assets/img/benchmark_chat.png。评估方法除 TruthfulQA 外均同时采用 zero-shot 与 few-shotChat 模型更多采用 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数学与代码引入 GSM8K8-shot1、MATH4-shot1、HumanEval0-shot1、MBPP3-shot1且统一采用 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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价