物理机运行微调测试理解 #59
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#59
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
经过一系列尝试后发现本电脑的GPU与容器并不兼容(检测到NVIDIA NVIDIA GeForce RTX 4050笔记本电脑GPU,此版本的容器尚不支持该GPU),一开始想继续硬着头皮做,后续出现一系列问题,遂止。这里只能对着现有的课件中的代码以及运行测试结果进行分析和理解。

该数据集是一个知名的开源数据集,最初由 Stanford Alpaca 项目发布,用于训练小型、大规模语言模型,如 LLaMA(Large Language Model Meta AI)的微调。这个数据集是由 Stanford AI 实验室基于 OpenAI 的 GPT 模型生成的,目的是为模型提供更多可用的指令式数据,从而改进指令跟随能力。这个数据集通过 GPT-3 的 API 生成,模拟了类似 InstructGPT 的指令格式,目的在于微调 LLaMA 使其能够更好地理解和执行人类语言中的命令和指令。
Alpaca 数据集 由大约 52,000 个指令样本组成,这些样本覆盖了各种指令类型。每条数据样本包含:
算法下载及微调
mkdir -p /userhome/xtuner-workdir NPROC_PER_NODE=1 xtuner train qwen1_5_0_5b_chat_full_alpaca_e3_copy.py --work-dir /userhome/xtuner-workdir --deepspeed deepspeed_zero3_offload
这个命令是在使用 xtuner 工具进行深度学习模型的训练,具体地是在运行一个名为 qwen1_5_0_5b_chat_full_alpaca_e3_copy.py 的训练脚本,并指定了一些重要参数。
3.1 mkdir -p /userhome/xtuner-workdir
这条命令用于创建一个目录 /userhome/xtuner-workdir,用来存放训练过程中的工作文件。如果目录已经存在,-p 参数会确保不会报错。
3.2 NPROC_PER_NODE=1
这是设置训练过程中使用的每个节点上的进程数。这里指定 NPROC_PER_NODE=1,意味着在训练时每个计算节点只运行一个进程。这个参数通常用于分布式训练来控制并行的进程数量。
3.3 xtuner train qwen1_5_0_5b_chat_full_alpaca_e3_copy.py
xtuner train:xtuner 是一个模型调优工具,train 命令表示开始进行训练。
qwen1_5_0_5b_chat_full_alpaca_e3_copy.py:这是训练的 Python 脚本,里面包含了训练的配置、模型架构以及数据处理逻辑。
3.4 --work-dir /userhome/xtuner-workdir
这个选项指定了工作目录,即训练过程中产生的中间文件、日志、模型检查点等都会存储在 /userhome/xtuner-workdir 目录下。
3.5 --deepspeed deepspeed_zero3_offload
deepspeed_zero3_offload:这是 DeepSpeed 的配置文件或配置名称。zero3 是 DeepSpeed 的一个优化策略,称为 "ZeRO-3",可以极大地减少 GPU 显存的使用。而 offload 通常指的是将部分计算或存储任务从 GPU 内存转移到 CPU 内存或磁盘上,从而进一步减少显存占用。这种策略非常适合在有限的 GPU 资源下训练超大模型。
运行模型部署
这里是使用 FastChat 部署一个支持 OpenAI API 的模型服务,其中包括以下几个步骤:
python -m fastchat.serve.controller --host 0.0.0.0
这个命令启动了 FastChat 的控制器服务,--host 0.0.0.0 意味着允许从外部访问此服务。控制器负责协调多个模型工作进程。python -m fastchat.serve.model_worker --model-path /dataset/Qwen1.5-0.5B-Chat/ --host 0.0.0.0 --num-gpus 1 --max-gpu-memory 20GiB
此命令将加载 Qwen1.5-0.5B-Chat 模型并运行模型的工作进程。--model-path
:模型的路径,此处为 /dataset/Qwen1.5-0.5B-Chat/。--num-gpus
:使用 1 张 GPU。--max-gpu-memory
:将 GPU 内存限制为 20GB,以避免超出显存限制。python -m fastchat.serve.openai_api_server --host 0.0.0.0
此命令启动一个兼容 OpenAI API 的服务,允许你通过 OpenAI 的 API 接口与部署的模型交互。--host 0.0.0.0
表示外部可以访问该服务最后是 用curl 命令发送一个 API 请求给本地服务器。
通过这些步骤,即可完成将 Qwen1.5-0.5B-Chat 模型作为一个 OpenAI API 服务运行,可以通过标准 API 请求与模型进行文本生成的交互。这种方式非常适合在本地或自定义服务器上测试和部署大语言模型。
简而言之:
Qwen/Qwen1.5-0.5B-Chat 是一个已经经过预训练的大模型。预训练过程中,它通过大量的通用数据学习了语言的基本规律和知识。
这里使用 xtuner 和脚本(qwen1_5_0_5b_chat_full_alpaca_e3_copy.py)对这个预训练模型进行微调。这个微调的目的是使模型更好地适应提供的新数据集(如 alpaca 数据集)和特定任务。
在微调过程中,脚本中定义的参数(如学习率、优化器等)和 deepspeed 技术(如零冗余优化)帮助优化训练过程,以提升模型在新任务上的表现。