零一万物Yi-34B-Chat 微调模型及量化版开源!魔搭社区最佳实践教程!

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 11月24日,零一万物基正式发布并开源微调模型 Yi-34B-Chat,可申请免费商用。同时,零一万物还为开发者提供了 4bit/8bit 量化版模型,Yi-34B-Chat 4bit 量化版模型可以直接在消费级显卡(如RTX3090)上使用。魔搭社区已支持下载、推理训练体验,并推出相关教程,欢迎大家来玩!

导读

11月24日,零一万物基正式发布并开源微调模型 Yi-34B-Chat,可申请免费商用。同时,零一万物还为开发者提供了 4bit/8bit 量化版模型,Yi-34B-Chat 4bit 量化版模型可以直接在消费级显卡(如RTX3090)上使用。魔搭社区已支持下载、推理训练体验,并推出相关教程,欢迎大家来玩!

评测效果

Model

MMLU

CMMLU

C-Eval

(val)

BBH

GSM8k

Yi-34B-Chat

79.11

77.04

51.41

71.65

Yi-6B-Chat

69.44

68.80

39.70

38.44

LLaMA2-70B-Chat

36.10

34.99

42.36

47.08

AquilaChat-34B v1.2

67.51

82.99

20.12

11.52

InternLM-chat-20B

53.55

51.19

42.41

15.69

Qwen-14B-Chat

67.73

66.12

49.65

59.51

Baichuan2-13B-Chat

58.64

56.02

38.81

45.72

LLaMA2-13B-Chat

27.47

27.93

32.90

36.85

在 MMLU 英文知识水平评测集,C-Eval、CMMLU 中文综合考试评测集,以及 GSM8K、BBH 两个常用的评估大模型数学及推理能力的评测集中,Yi-34B-Chat 在开源模型中取得多项优异成绩(评测结果均采用 zero-shot 的方式,结果会受到 prompt 设计的影响,官方使用了相同的 prompt 和生成策略来评测表中所有模型以获得一个较为公正的结果,供大家参考)。

模型效果如下,

文本创作:

image.png

科技话题:

image.png

中文语义理解:

image.png

以下为大家带来魔搭社区推理、微调最佳实践教程:

模型链接和下载

Yi系列模型现已在ModelScope社区开源,包括:

Yi-34B-Chat模型:

https://modelscope.cn/models/01ai/Yi-34B-Chat/summary

Yi-34B-Chat-4bits模型:

https://modelscope.cn/models/01ai/Yi-34B-Chat-4bits/summary

Yi-34B-Chat-8bits模型:

https://modelscope.cn/models/01ai/Yi-34B-Chat-8bits/summary

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir = snapshot_download("01ai/Yi-34B-Chat", revision = "master")
model_dir_int4 = snapshot_download("01ai/Yi-34B-Chat-4bits", revision = "master")
model_dir_int8 = snapshot_download("01ai/Yi-34B-Chat-8bits", revision = "master")

Yi系列模型推理

Yi-34B-Chat:

推理代码

from modelscope import AutoModelForCausalLM, AutoTokenizer
model_dir = '01ai/Yi-34B-Chat'
tokenizer = AutoTokenizer.from_pretrained(model_dir, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    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)
# Model response: "Hello! How can I assist you today? If you have any questions or need information on a specific topic, feel free to ask."
print(response)

资源消耗:

image.png

Yi-34B-Chat-4bits

环境安装

!pip install transformers -U
 !wget https://github.com/casper-hansen/AutoAWQ/releases/download/v0.1.7/autoawq-0.1.7+cu118-cp310-cp310-linux_x86_64.whl
 !pip install autoawq-0.1.7+cu118-cp310-cp310-linux_x86_64.whl

推理代码

from modelscope import AutoModelForCausalLM, AutoTokenizer
model_dir = '01ai/Yi-34B-Chat-4bits'
tokenizer = AutoTokenizer.from_pretrained(model_dir, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    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)
# Model response: "Hello! How can I assist you today? If you have any questions or need information on a specific topic, feel free to ask."
print(response)

资源消耗

image.png

Yi系列模型微调和微调后推理

微调代码开源地址:

https://github.com/modelscope/swift/tree/main/examples/pytorch/llm

clone swift仓库并安装SWIFT(魔搭官方提供的训练推理框架)

# 设置pip全局镜像和安装相关的python包
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .
pip install deepspeed -U
# 下面的脚本需要在此目录下执行
cd examples/pytorch/llm

使用LoRA+DDP+Deepspeed微调的脚本可以查看:

https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/yi_34b_chat/lora_ddp_ds

使用QLoRA微调的脚本可以查看:

https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/yi_34b_chat/qlora

以下具体介绍使用LoRA+DDP+Deepspeed的脚本:

微调脚本

# Experimental environment: 2 * A100
# 2 * 72GB GPU memory
nproc_per_node=2
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
torchrun \
    --nproc_per_node=$nproc_per_node \
    --master_port 29500 \
    llm_sft.py \
    --model_type yi-34b-chat \
    --sft_type lora \
    --tuner_backend swift \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --dataset blossom-math-zh \
    --train_dataset_sample -1 \
    --num_train_epochs 1 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules DEFAULT \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps $(expr 16 / $nproc_per_node) \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --use_flash_attn true \
    --push_to_hub false \
    --hub_model_id yi-34b-chat-lora \
    --hub_private_repo true \
    --hub_token 'your-sdk-token' \

如果显卡显存较低,可以增加如下参数,来支持量化训练:

--quantization_bit 4 \
--bnb_4bit_comp_dtype AUTO \

训练过程也支持本地数据集,需要指定如下参数:

--custom_train_dataset_path xxx.jsonl \
--custom_val_dataset_path yyy.jsonl \

自定义数据集的格式可以参考:

https://github.com/modelscope/swift/blob/main/examples/pytorch/llm/README_CN.md#-%E6%8E%A8%E8%8D%90%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0%E7%9A%84%E5%BD%A2%E5%BC%8F

微调后的推理脚本:

这里的ckpt_dir需要修改为训练生成的checkpoint文件夹:

# Experimental environment: A100
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python llm_infer.py \
    --ckpt_dir "output/yi-34b-chat/vx_xxx/checkpoint-xxx" \
    --load_args_from_ckpt_dir true \
    --eval_human false \
    --max_length 2048 \
    --use_flash_attn true \
    --max_new_tokens 2048 \
    --temperature 0.1 \
    --top_p 0.7 \
    --repetition_penalty 1.05 \
    --do_sample true \
    --merge_lora_and_save false \

微调的可视化结果

训练损失:

image.png

评估损失

image.png

训练后生成样例

[PROMPT]<|im_start|> system
you are a helpful assistant!<|im_end|> 
<|im_start|> user
Jacob的水箱能容纳50升水。Jacob从河里和雨水中收集水来填满他的水箱。他每天可以从雨水中收集800毫升的水,从河里收集1700毫升的水。Jacob需要多少天才能填满他的水箱?<|im_end|> 
<|im_start|> assistant
[OUTPUT]Jacob每天从雨水中收集的水量为800毫升,即0.8升。
Jacob每天从河里收集的水量为1700毫升,即1.7升。
所以,Jacob每天总共收集的水量为0.8 + 1.7 = 2.5升。
要填满50升的水箱,Jacob需要的天数为50 / 2.5 = 20天。
Answer: 20<|im_end|>
[LABELS]每天从雨水和河水中收集到的水总量为800毫升+1700毫升=2500毫升=2.5升。
所以,填满50升水箱需要的天数为50升/2.5升=20天。
Answer: 20
--------------------------------------------------------------------------------
[PROMPT]<|im_start|> system
you are a helpful assistant!<|im_end|> 
<|im_start|> user
依法纳税是每个公民的义务.孙老师月收入2400元,按照个人所得税征收标准,孙老师上月应缴纳个人所得税多少元?(个人所得税按1%)<|im_end|> 
<|im_start|> assistant
[OUTPUT]根据题目中的信息,孙老师的月收入为2400元,个人所得税征收标准为1%。
因此,孙老师上月应缴纳的个人所得税为:
2400元 * 1% = 24元
所以,孙老师上月应缴纳的个人所得税为24元。
Answer: 24<|im_end|>
[LABELS]孙老师月收入为2400元,按照个人所得税征收标准,个人所得税按照1%来计算。
个人所得税 = 收入 × 税率
              = 2400元 × 1%
              = 2400元 × 0.01
              = 24元
所以,孙老师上月应缴纳个人所得税为24元。
Answer: 24

资源消耗:

2 * 70G

image.png

点击直达模型开源卡片:https://www.modelscope.cn/models/01ai/Yi-34B-Chat/summary

相关文章
kde
|
5天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
3071 8
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
567 0
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
832 9
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
本文详细介绍了Maven的项目管理工具特性、安装步骤和配置方法。主要内容包括: Maven概述:解释Maven作为基于POM的构建工具,具备依赖管理、构建生命周期和仓库管理等功能。 安装步骤: 从官网下载最新版本 解压到指定目录 创建本地仓库文件夹 关键配置: 修改settings.xml文件 配置阿里云和清华大学镜像仓库以加速依赖下载 设置本地仓库路径 附加说明:包含详细的配置示例和截图指导,适用于各种操作系统环境。 本文提供了完整的Maven安装和配置
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
【保姆级图文详解】大模型、Spring AI编程调用大模型
【保姆级图文详解】大模型、Spring AI编程调用大模型
347 7
【保姆级图文详解】大模型、Spring AI编程调用大模型
Excel数据治理新思路:引入智能体实现自动纠错【Python+Agent】
本文介绍如何利用智能体与Python代码批量处理Excel中的脏数据,解决人工录入导致的格式混乱、逻辑错误等问题。通过构建具备数据校验、异常标记及自动修正功能的系统,将数小时的人工核查任务缩短至分钟级,大幅提升数据一致性和办公效率。
DeepSeek R1+Open WebUI实现本地知识库的搭建和局域网访问
本文介绍了使用 DeepSeek R1 和 Open WebUI 搭建本地知识库的详细步骤与注意事项,涵盖核心组件介绍、硬件与软件准备、模型部署、知识库构建及问答功能实现等内容,适用于本地文档存储、向量化与检索增强生成(RAG)场景的应用开发。
367 0
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
阿里云推出基于场景的解决方案免费试用活动,新老用户均可领取100点试用点,完成部署还可再领最高100点,相当于一年可获得最高200元云资源。覆盖AI、大数据、互联网应用开发等多个领域,支持热门场景如DeepSeek部署、模型微调等,助力企业和开发者快速验证方案并上云。
303 22
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
FLUX.1 Kontext 的全生态教程来啦!AIGC专区在线试玩!
Flux.1 Kontext [dev] 开源模型大家都用上了吗?小编汇总了3个使用教程,打包送上!
418 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问