1 引言
Qwen2.5是Qwen大型语言模型系列的最新成果。对于Qwen2.5,通义千问团队发布了从0.5到720亿参数不等的基础语言模型及指令调优语言模型。Qwen2.5相比Qwen2带来了以下改进:
- 显著增加知识量,在编程与数学领域的能力得到极大提升,这得益于我们在这些领域的专业专家模型。
- 在遵循指令、生成长文本(超过8K个token)、理解结构化数据(例如,表格)以及生成结构化输出特别是JSON方面有显著提升。对系统提示的多样性更具韧性,增强了聊天机器人中的角色扮演实现和条件设定。
- 支持长上下文处理,上限为128K个token,并能生成最多8K个token。
- 支持超过29种语言的多语言功能,包括中文、英语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
2 环境准备
2.1 安装Ascend CANN Toolkit和Kernels
安装方法请参考安装教程或使用以下命令。
# 请替换URL为CANN版本和设备型号对应的URL
# 安装CANN Toolkit
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run
bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install
# 安装CANN Kernels
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run
bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install
# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
2.1 安装openMind Library以及openMind Hub Client
- 安装openMind Hub Client
pip install openmind_hub
- 安装openMind Library,并安装PyTorch框架及其依赖。
pip install openmind[pt]
更详细的安装信息请参考openMind官方的环境安装章节。
- 安装llama-factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch-npu,metrics]"
3 模型链接和下载
Qwen2.5-7B模型系列由社区开发者在魔乐社区贡献,包括:
- Qwen2.5-7B:modelers.cn/models/AI-R…
- Qwen2.5-7B-Instruct:modelers.cn/models/AI-R…
通过Git从魔乐社区下载模型的repo,以Qwen2.5-7B-Instruct为例:
首先保证已安装git-lfs(https://git-lfs.com)
git lfs install
git clone https://modelers.cn/AI-Research/Qwen2.5-7B-Instruct.git
4 模型推理
用户可以使用openMind Library或者LLaMa Factory进行模型推理,以Qwen2.5-7B-Instruct为例,具体如下:
- 使用openMind Library进行模型推理
新建推理脚本 inference_qwen2.5_7b_chat.py ,推理脚本内容为:
import argparse
from openmind import AutoModelForCausalLM, AutoTokenizer
from openmind_hub import snapshot_download
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to model",
default=None,
)
args = parser.parse_args()
return args
def main():
args = parse_args()
if args.model_name_or_path:
model_path = args.model_name_or_path
else:
model_path = snapshot_download("AI-Research/Qwen2.5-7B-Instruct", revision="main", resume_download=True,
ignore_patterns=[" .h5", " .ot", "*.mspack"])
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
prompt = '你是谁'
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
if __name__ == "__main__":
main()
执行推理脚本:
python inference_qwen2.5_7b_chat.py
推理结果如下:
- 使用LLaMa Factory与模型交互
在LLaMa Factory路径下新建examples/inference/qwen2.5_7b_chat.yaml推理配置文件,文件内容为:
model_name_or_path: xxx # 当前仅支持本地加载,填写Qwen2.5-7B-Instruct本地权重路径
template: qwen
使用以下命令与模型进行交互:
llamafactory-cli chat examples/inference/qwen2.5_7b_chat.yaml
交互结果如下:
5 模型微调
5.1 数据集
使用Llama-Factory集成的identity数据集
5.2 微调
新建examples/train_lora/qwen2.5_7b_lora_sft.yaml 微调配置文件,微调配置文件如下:
### model
model_name_or_path: xxx/xxx # 预训练模型路径
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
### dataset
dataset: identity
template: qwen
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
### output
output_dir: ./saves/qwen2.5_7b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 10.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
使用以下命令进行微调:
llamafactory-cli train examples/train_lora/qwen2.5_7b_lora_sft.yaml
5.3 微调可视化
- 训练Loss可视化:
5.4 微调后推理
5.4.1 模型推理
修改examples/inference/qwen2.5_7b_chat.yaml推理配置文件,文件内容为:
model_name_or_path: xxx # 当前仅支持本地加载,填写Qwen2.5-7B-Instruct本地权重路径
adapter_name_or_path: ./saves/qwen2.5_7b/lora/sft
template: qwen
使用以下命令进行推理:
llamafactory-cli chat examples/inference/qwen2.5_7b_chat.yaml
5.4.2推理结果
6 结语
在之前的华为全联接大会2024上,了解到openMind应用使能套件在AI生态社区中发挥的技术能力。此次Qwen模型的微调经验,也让人看到了openMind在AI模型调优和推理能力。openMind是AI开发者的强有力的助手,它让微调过程变得更加高效和直观。希望每一位开发者都来尝试它,一起交流经验,更好地提升它的能力。
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
五、大模型面试题大全
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。