ModelScope 魔搭社区介绍与大模型微调指南
一、ModelScope 核心介绍
ModelScope(https://modelscope.cn)是阿里巴巴达摩院于 2022 年发起的一站式开源模型社区与服务平台,定位为,为 AI 开发者提供模型托管、获取、微调、部署的全流程服务。
ModelScope 是阿里达摩院推出的开源模型社区,提供模型托管、微调及部署服务。详细介绍其核心优势、SWIFT 微调框架使用及千问 1.5-14B 模型微调全流程(含 QLoRA 配置)。同时对比了 LLaMA Factory、Axolotl、Unsloth 等主流微调工具,分析显存需求与适用场景,为开发者提供从环境搭建到模型导出的完整技术参考。
ModelScope(https://modelscope.cn)是阿里巴巴达摩院于 2022 年发起的一站式开源模型社区与服务平台,定位为,为 AI 开发者提供模型托管、获取、微调、部署的全流程服务。
| 特性 | 详细说明 |
|---|---|
| 模型资源丰富 | 汇聚 1400+ 优质模型,覆盖 NLP、CV、语音、多模态等领域,含通义千问、DeepSeek 等热门开源模型 |
| 国内网络友好 | 无需科学上网,高速下载模型权重与数据集,解决 Hugging Face 访问问题 |
| 工具链完整 | 提供 SWIFT 微调框架、Notebook 云端开发环境、模型评估与部署工具链 |
| 硬件兼容广 | 支持 NVIDIA GPU、国产 Ascend 昇腾、平头哥 PPU 等多种硬件 |
| 免费资源支持 | 提供免费 GPU 算力(8 核 32GB 内存 +24GB 显存,可用 36 小时),降低入门门槛 |
| 生态开放 | 支持自定义模型上传与分享,提供 API 与 SDK 便捷调用 |
| 技术 | 显存需求 | 训练速度 | 实现难度 | 适用场景 |
|---|---|---|---|---|
| 全参数微调 | 极高 (14B 需>80GB) | 慢 | 中 | 追求最优效果,有充足算力 |
| LoRA | 低 (14B 需 10-15GB) | 快 | 低 | 轻量化微调,垂直领域适配 |
| QLoRA | 极低 (14B 需 6-8GB) | 快 | 中 | 单卡消费级 GPU(如 4090) 微调大模型 |
| Prefix Tuning | 中 | 中 | 高 | 特定任务适配,保留模型原有能力 |
SWIFT(Scalable LightWeight Infrastructure for Fine-Tuning)是 ModelScope 官方推出的轻量级、可扩展的大模型微调与部署框架,支持 500+LLM 和 200+ 多模态模型的高效微调、推理、评估与部署。
核心优势:
ModelScope 社区广泛使用的统一微调框架,支持 100+LLM 与 VLMs 模型,提供可视化参数配置面板,内置多种参数模板。
# 创建并激活 conda 环境
conda create -n modelscope python=3.10
conda activate modelscope
# 安装核心依赖
pip install modelscope==1.14.0 ms-swift==1.1.6 torch>=2.0.0 transformers>=4.37.0 accelerate peft bitsandbytes
from modelscope import snapshot_download
# 下载千问 1.5-14B-Chat 模型
model_id = "qwen/Qwen1.5-14B-Chat"
model_dir = snapshot_download(model_id, cache_dir="./models", revision="master")
[{"instruction":"请介绍小分子药物筛选原理","input":"","output":"小分子药物筛选是..."},{"instruction":"解释分子对接技术","input":"","output":"分子对接是..."}]
swift fine-tune \
--model_id qwen/Qwen1.5-14B-Chat \
--dataset /path/to/your/dataset.json \
--dataset_format alpaca \
--tuner qlora \
--learning_rate 2e-4 \
--num_train_epochs 3 \
--output_dir ./output/qwen1.5-14b-finetuned \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4
from swift import Swift, LoRAConfig
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 加载模型与分词器
model = AutoModelForCausalLM.from_pretrained("qwen/Qwen1.5-14B-Chat", load_in_8bit=True,# 8 位量化,降低显存需求 device_map="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen1.5-14B-Chat", trust_remote_code=True)
# 配置 QLoRA
lora_config = LoRAConfig(
r=16,# 秩,控制适配器容量
lora_alpha=32,
target_modules=["q_proj","v_proj"],# 千问模型关键模块
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# 应用 LoRA 并启动训练
model = Swift.prepare_model(model, lora_config)
# 训练代码(省略,使用 transformers.Trainer)
| 参数 | 推荐值 | 说明 |
|---|---|---|
| tuner | qlora | 微调方式,14B 模型推荐 QLoRA |
| learning_rate | 2e-4~5e-4 | 学习率,过大易过拟合,过小收敛慢 |
| batch_size | 4~8 | 单卡 batch 大小,受显存限制 |
| gradient_accumulation_steps | 4~8 | 梯度累积,模拟大 batch 训练 |
| num_train_epochs | 3~5 | 训练轮数,根据数据集大小调整 |
| r | 16~32 | LoRA 秩,r 越大表达能力越强,显存占用越高 |
| target_modules | q_proj, v_proj | 千问模型关键注意力模块 |
--early_stopping_patience 参数,防止无效训练swift export \
--model_id qwen/Qwen1.5-14B-Chat \
--adapters ./output/qwen1.5-14b-finetuned \
--output_dir ./output/qwen1.5-14b-final \
--merge_lora True
from modelscope import AutoModelForCausalLM, AutoTokenizer
from transformers import TextStreamer
# 加载微调后的模型
model = AutoModelForCausalLM.from_pretrained("./output/qwen1.5-14b-final", device_map="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("./output/qwen1.5-14b-final", trust_remote_code=True)
# 流式输出设置
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
# 推理
prompt = "请设计一个小分子药物筛选流程"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, streamer=streamer, temperature=0.7, do_sample=True)
gradient_checkpointing=True,进一步降低显存占用| 问题 | 解决方案 |
|---|---|
| 显存不足 | 1. 切换到 QLoRA;2. 降低 batch_size;3. 启用梯度累积;4. 开启梯度检查点 |
| 训练速度慢 | 1. 使用混合精度训练;2. 增加 gradient_accumulation_steps;3. 升级 GPU |
| 过拟合 | 1. 增加训练数据;2. 降低学习率;3. 增加 dropout;4. 早停机制 |
| 模型生成质量差 | 1. 检查数据质量;2. 调整 LoRA 秩;3. 增加训练轮数;4. 优化 prompt 模板 |
目前生态最完善的低代码大模型微调框架,一站式支持所有主流微调范式(SFT/DPO/RLHF/QA 微调),是专门为「微调」设计的工具,新手友好度拉满。
# 安装
pip install llamafactory[full]
# 启动 LoRA 微调(单 RTX4090,7B 模型,SFT)
llamafactory-cli train \
--model_name_or_path unsloth/llama-3-8b-bnb-4bit \
--stage sft \
--do_train \
--finetuning_type lora \
--dataset alpaca_gpt4_en \
--template llama3 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--learning_rate 2e-4 \
--num_train_epochs 3 \
--output_dir ./llama3-8b-sft-lora \
--fp16 True
YAML 配置驱动的专业化微调框架,专门优化了微调流程的可配置性和扩展性,比 LLaMA Factory 更灵活,适合有一定定制需求的微调场景。
# axolotl_config.yml
base_model: unsloth/llama-3-8b-bnb-4bit
load_in_4bit: true
unsloth: true
lora_r: 16
lora_alpha: 32
lora_target_modules:
- q_proj
- v_proj
- up_proj
- down_proj
finetuning_type: lora
training:
per_device_train_batch_size: 4
learning_rate: 2e-4
num_train_epochs: 3
专门优化微调速度和显存占用的框架,不是通用微调框架,但却是低显存微调的'加速器',常和 LLaMA Factory/Axolotl 搭配使用。
from unsloth import FastLanguageModel
from trl import SFTTrainer
from transformers import TrainingArguments
# 1. 加载 Unsloth 优化的模型(低显存)
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/llama-3-8b-bnb-4bit",
max_seq_length=2048,
load_in_4bit=True,
)
# 2. 添加 LoRA 微调权重(仅训练 1% 参数)
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=32,
lora_dropout=0.05,
target_modules=["q_proj","v_proj"],
bias="none",
use_gradient_checkpointing=True,
)
# 3. 启动 SFT 微调
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=your_dataset,
args=TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
output_dir="./unsloth-llama3-8b-lora",
),
)
trainer.train()
Hugging Face 官方的参数高效微调(PEFT)核心库,是所有微调框架的'底层底座',专门实现 LoRA/IA3/Adapter 等轻量化微调方法。
from transformers import AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
# 加载基础模型(量化)
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B", load_in_4bit=True, bnb_4bit_quant_type="nf4",)
# 配置 LoRA 微调
lora_config = LoraConfig(
r=16,
lora_alpha=32,
lora_dropout=0.05,
target_modules=["q_proj","v_proj"],
task_type="CAUSAL_LM",
)
# 为模型添加 LoRA 适配器(仅训练 LoRA 权重)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
商汤科技开源的轻量化微调框架,专门优化了国产大模型(如 Qwen/GLM/InternLM)的微调体验,轻量、快速、易部署。
微调国产大模型(Qwen/GLM/InternLM)、中文场景微调。
微软开源的分布式微调优化框架,专门解决超大模型(13B+)全量微调的显存和速度问题。
全量微调、超大模型(70B+)分布式微调、企业级大规模微调。
| 场景需求 | 首选框架 | 核心理由 |
|---|---|---|
| 新手入门、低代码微调 | LLaMA Factory | 网页/命令行操作,无需写代码 |
| 配置化、定制化微调 | Axolotl | YAML 灵活配置,适配多范式 |
| 低显存/高速微调 | Unsloth + LLaMA Factory | 速度快、显存省,新手易上手 |
| 国产模型/中文微调 | Xtuner | 专为中文/国产模型优化 |
| 自定义微调逻辑、代码开发 | PEFT + Transformers | 灵活度最高,可控性强 |
| 超大模型/全量微调 | DeepSpeed + PEFT | ZeRO 显存优化,分布式高效 |
ModelScope 提供了从模型获取到微调部署的完整解决方案,特别适合国内开发者和资源有限的研究者进行大模型微调。对于小分子药物筛选研究,建议:
主流框架总结:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online