当前位置: 首页 > news >正文

大模型微调环境配置

这篇文档主要用于环境、软件的安装,具体的训练方式仅做简单介绍

0.操作环境

操作环境我们选择:AutoDL提供的环境

2. 模型以及数据集下载

模型下载主要有两种途径,一个是魔塔社区,一个是hugging face,我们优先选择魔塔社区,当魔塔社区没有的要找的模型的时候,我们再去hugging face找

1.1 魔塔社区模型下载

先去官网找到想要的模型,然后利用下面的demo模版进行下载

#模型下载 
from modelscope import snapshot_download 
model_dir = snapshot_download('Qwen/Qwen2.5-0.5B-Instruct',cache_dir="/Users/haha/PycharmProjects/PythonProject3/day6/model")

1.2 hugging face模型下载

先去官网找到想要的模型,然后利用下面的demo模版进行下载

#将模型gpt-2下载到本地调用
from transformers import AutoModelForCausalLM,AutoTokenizer#将模型和分词器下载到本地,并制定保存路径
model_name = "Qwen/Qwen2.5-0.5B-Instruct"
cache_dir = "model/Qwen/Qwen2.5-0.5B-Instruct"#下载模型
model = AutoModelForCausalLM.from_pretrained(model_name,cache_dir=cache_dir)#下载分词器
tokenizer = AutoTokenizer.from_pretrained(model_name,cache_dir=cache_dir)#下载完提示
print(f"模型和分词器下载完成,下载路径为:{cache_dir}")

1.3 魔塔社区数据集下载

优先使用魔塔社区下载。
找到对应的数据集,利用命令下载:

在这里插入图片描述
需要配置该数据集中你要下载的文件名称、下载文件位置,替换下面两个集即可:在这里插入图片描述

modelscope download --dataset w10442005/ruozhiba_qa ruozhiba_qaswift.json -
-local /root/autodl-tmp/project/gpt2Demo/data

1.4 hugging face数据集下载

示例如下:

#在线加载数据
dataset = load_dataset(path="lansinuote/ChnSentiCorp", cache_dir="../data/")
print("在线加载的数据集:")
print(dataset)

2. 私有化部署

在私有化部署时,常见的推理框架有三个,提供api接口服务:

  1. Ollama:适合个人用户,比较简单,只支持GGUF格式的模型
  2. vllm:适合企业用户,只适用于算力7.0以上的机器
  3. LMDeploy:适合企业用户,性能比vllm好,只适用于算力7.0以上的机器,我主要用这个

2.1 Ollama推理框架使用

地址:Ollana文档

用户群体:主要针对个人用户

优点:使用简单,对机器没有要求

缺点:只支持GGUF格式的数据,使用它跑模型要么去ollama官网找,要么在别的平台下载GGUF格式的模型。GGUF一般指的是量化之后的模型,比较小,方便个人用户去学习。

安装步骤:

  1. 先创建环境(ollama对python无要求):conda create -n ollama
  2. 激活环境:source activate ollama 或者 conda activate allama
  3. 复制官网下载命令:curl -fsSL https://ollama.com/install.sh | sh
  4. 开启服务;ollama serve
  5. 切换环境:conda activate ollama
  6. 使用ollama list 查看当前是否有模型存在
  7. 搜索模型:在ollama搜索框搜索所需要的模型
  8. 搜到模型之后选择模型的大小,然后复制后面的命令,进行下载

注意:ollama下载极度不稳定,尤其是在AutoDL平台上安装,如果安装不成功,就先放过。

2.2 vllm推理框架使用

使用文档1:vllm中文文档1
使用文档2:vllm中文文档2
按照上述文档进行安装

conda create -n vllm python=3.12 -y
conda activate vllm
pip install vllm

注意事项:

  1. 不要在base环境安装,最好创建环境进行创建。
  2. vllm 对python版本有要求,请在文档中查看

模型启动命令:vllm serve path

适用群体:适合公司级使用

2.3 LMDeploy推理框架使用

教程:LMDeploy使用指南
来源公司(书生浦语):https://internlm.intern-ai.org.cn/
优点:相比vllm来说,显存优化做的更好一些,对量化的支持力度更强一点

使用步骤:

  1. 创建环境:conda create -n lmdeploy
  2. 查看环境是否创建:conda info --envs
  3. 激活环境:source activate lmdeploy
  4. 安装:pip install lmdeploy
  5. 模型推理命令:lmdeploy serve api_server 绝对路径

2.4 模型启动成功后测试demo

记得替换url 、模型地址

#多轮对话
from openai import OpenAI
#定义多轮对话的函数
def multi_turn_conversation(messages):#初始化OpenAI客户端client = OpenAI(base_url="http://localhost:23333/v1",api_key="sk-proj-1234567890")#初始化对话历史conversation_history = []while True:#获取用户输入user_input = input("You:")if user_input.lower() in ["exit","quit"]:print("退出对话")break#更新对话历史conversation_history.append({"role":"user","content":user_input})try:  #调用OpenAI的API进行多轮对话response = client.chat.completions.create(model="/root/autodl-tmp/project/gpt2Demo/model/models--uer--gpt2-chinese-cluecorpussmall",messages=conversation_history)#获取AI的回复ai_response = response.choices[0].message.content.strip()print(f"AI:{ai_response}")#更新对话历史conversation_history.append({"role":"assistant","content":ai_response})except Exception as e:print(f"发生错误:{e}")breakif __name__ == "__main__":#初始化对话历史conversation_history = []#开始多轮对话multi_turn_conversation(conversation_history)

3. 模型微调

模型微调分类:

  • 全量微调
  • 局部微调
  • 增量微调

3.1 LLama_Factory微调框架的使用

3.1.1 LLama_Factory微调框架安装以及启动

文档1:LLama_Factory文档1
文档2:LLama_Factory文档2
来源:国内开发,支持中文

安装步骤:

  1. 下载(上述文档有下载命令):git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  2. 解压下载的llamafactory:unzip llamafactory.zip
  3. 先创建环境:conda create -n llamafactory python==3.10 -y
  4. 激活环境:source activate llamafactory
  5. 安装所需要的包:pip install -e .(一定要安装在创建的环境中哈,操作之前:cd LLaMa_factoty 的目录下)
  6. 启动(使用可视化,在llamafactory根目录下启动):llamafactory-cli webui

如果启动遇到如下情况:在这里插入图片描述

执行:pip install gradio --upgrade -i https://mirrors.cloud.tencent.com/pypi/simple

3.1.2 LLaMA Factory微调数据集制作

不同的框架对于数据格式的要求是不一样的,对于LLaMA Factory而言,其只支持两种数据格式,分别是:单轮对话、多轮对话

详细见:LLaMA_Factorywe文档

单轮示例:

"alpaca_zh_demo.json"
{"instruction": "计算这些物品的总费用。 ","input": "输入:汽车 - $3000,衣服 - $100,书 - $20。","output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
},

多轮示例:

[{"instruction": "人类指令(必填)","input": "人类输入(选填)","output": "模型回答(必填)","system": "系统提示词(选填)","history": [["第一轮指令(选填)", "第一轮回答(选填)"],["第二轮指令(选填)", "第二轮回答(选填)"]]}
]

注意:当拿到的数据集和LLaMA_Factory要求的不一样时,可以借助AI工具写脚本进行转换

制作好的数据集要放到指定的目录下:
在这里插入图片描述

3.1.2 模型微调、合并量化、微调量化、导出

这里不做介绍,后续会写一遍文章专门介绍,会加上对应得链接

LLaMA-Factory微调实操记录


http://www.mrgr.cn/news/96310.html

相关文章:

  • Gateway实战(二)、负载均衡
  • 【云服务器】在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 Minecraft 服务器,并实现远程联机,详细教程
  • Nginx 优化
  • Java基础 3.28
  • C++指针(五)完结篇
  • 刘火良FreeRTOS内核实现与应用学习之6——多优先级
  • 从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档
  • 数据结构与算法:1,选择排序
  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • 基于SpringBoot的“交通旅游订票系统”的设计与实现(源码+数据库+文档+PPT)
  • linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像
  • 5.0 WPF的基础介绍1-Grid,Stack,button
  • flink 分组窗口聚合 与 窗口表值函数聚合 的区别
  • Codeforces Round 1013 (Div. 3)-F
  • 06-SpringBoot3入门-常见注解(简介)
  • 典范硬币系统(Canonical Coin System)→ 贪心算法
  • 【商城实战(93)】商城高并发实战:分布式锁与事务处理深度剖析
  • 如何一键安装所有Python项目的依赖!
  • GenBI 中如何引入 LLM 做意图路由,区分查数据还是闲聊
  • 【C#】Task 线程停止