大语言模型训练篇:提示词工程【进阶版作业】 #45

Open
opened 2024-11-26 15:27:35 +08:00 by GANGUAGUA · 0 comments

模型调试

一、开发环境准备

准备算法

创建notebook

设置网络环境

准备数据集

下载数据

huggingface-cli download jtjt520j/CSpider_sql_create_context --repo-type dataset --revision main --local-dir-use-symlinks False --local-dir code/huggingface-cache/datasets/jtjt520j/CSpider_sql_create_context/

这个命令使用 Hugging Face 的 huggingface-cli 工具来下载一个名为 b-mc2/sql-create-context 的数据集。以下是命令各部分的详细解释:

  1. huggingface-cli download:这是调用 huggingface-cli 工具的命令,用于下载模型、数据集或其他资源。
  2. b-mc2/sql-create-context:这是要下载的数据集的名称。在 Hugging Face 上,数据集通常由用户名和数据集名组成,这里 b-mc2 可能是用户名或组织名,而 sql-create-context 是数据集的具体名称。
  3. --repo-type dataset:这个参数指定要下载的资源类型是数据集(dataset)。
  4. --revision main:这个参数指定要下载的版本或分支。在这里,main 通常指的是主分支或主版本。
  5. --local-dir-use-symlinks False:这个参数设置为 False,意味着在本地目录中不会使用符号链接(symlinks)。如果设置为 True,则可能会在本地目录中创建指向数据集文件的符号链接,而不是复制文件。
  6. --local-dir /dataset/datasets/b-mc2___sql-create-context/:这个参数指定了数据集下载到本地的目录路径。在这个例子中,数据集将被下载到 /dataset/datasets/b-mc2___sql-create-context/ 目录下。

总结来说,这个命令的作用是从 Hugging Face 的数据集仓库中下载 b-mc2/sql-create-context 数据集的主版本到本地指定的目录 /dataset/datasets/b-mc2___sql-create-context/,并且在下载过程中不会使用符号链接。

检查数据集及位置

准备模型

由于本次使用的是云平台上一下载好的模型,所以只需要打开训练文件llama2_7b_chat_qlora_sql_e3_copy.py(此文件位于code目录下),确认使用的模型及其路径。同时,也检查数据集的路径是否正确。

二、本地开源模型部署

使用FastChat部署codellama-7b-hf模型

# 按顺序依次执行
# 新建终端,输入如下命令
python -m fastchat.serve.controller --host 0.0.0.0
# 新建终端,输入如下命令
python -m fastchat.serve.model_worker --model-path /dataset/CodeLlama-7b-hf/ --host 0.0.0.0 --num-gpus 4 --max-gpu-memory 15GiB
# 新建终端,输入如下命令
python -m fastchat.serve.openai_api_server --host 0.0.0.0

终端一:

终端二:

终端三:

模型调用

根据数据修改prompt;然后打开新的终端,将其粘贴到终端里

curl -X POST http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "CodeLlama-7b-hf",
    "prompt": "You are a powerful text-to-SQL model. Your job is to answer questions about a database. You are given a question and context regarding one or more tables. You must output the SQL query that answers the question. ### Input: 出生在“浙江”州以外的人的名字是什么? ### Context: CREATE TABLE head (born_state VARCHAR, name VARCHAR) ### Response:",
    "max_tokens": 41,
    "temperature": 0.5
  }'

终端四:

模型给出回答

三、微调训练

设置环境

获取master IP地址

用ifconfig查看主节点IP地址

启动训练

先转到code目录下

cd code

在第一台notebook中输入:

NPROC_PER_NODE=4 NNODES=2 PORT=12345 ADDR=10.244.241.125 NODE_RANK=0 xtuner train llama2_7b_chat_qlora_sql_e3_copy.py --work-dir /code/xtuner-workdir --deepspeed deepspeed_zero3_offload

在第二台notebook中输入:

NPROC_PER_NODE=4 NNODES=2 PORT=12345 ADDR=10.244.241.125 NODE_RANK=0 xtuner train llama2_7b_chat_qlora_sql_e3_copy.py --work-dir /code/xtuner-workdir --deepspeed deepspeed_zero3_offload

四、训练后测试

转换模型格式

测试

这里我测试了两条数据。

测试1:

修改测试文件

执行测试文件

测试2:

修改测试文件

执行测试文件

训练管理

一、开发环境准备

准备算法

准备notebook

设置环境

下载数据集

修改算法/训练文件

在code目录下打开llama2_7b_chat_qlora_sql_e3_copy.py文件

二、微调训练

在训练管理里创建新的训练任务:

输入以下命令,开启训练:

训练开始

训练完毕

三、训练后测试

查看模型保存位置

查看训练后模型被保存的位置

转换模型格式

从pth格式转到hf格式

测试1:

修改模型路径及提示词

执行测试文件

测试2 :

修改模型路径以及提示词

执行测试文件

# 模型调试 ## 一、开发环境准备 ### 准备算法 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732264704742-6340eb14-4036-4e65-9333-2c7b174f6c52.png) ### 创建notebook ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732264835621-b4497d9b-d38e-470f-be5a-5459b9bceb3b.png) ### 设置网络环境 ### ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732266508244-f3aad31f-32f9-448c-9e89-c425fbad7afb.png) ### ### ### 准备数据集 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732603304784-af5ab43e-7bd1-4ec0-91d7-0340f1d0458f.png) #### 下载数据 ```plain huggingface-cli download jtjt520j/CSpider_sql_create_context --repo-type dataset --revision main --local-dir-use-symlinks False --local-dir code/huggingface-cache/datasets/jtjt520j/CSpider_sql_create_context/ ``` <font style="color:rgb(6, 6, 7);">这个命令使用 Hugging Face 的 </font>`huggingface-cli`<font style="color:rgb(6, 6, 7);"> 工具来下载一个名为 </font>`b-mc2/sql-create-context`<font style="color:rgb(6, 6, 7);"> 的数据集。以下是命令各部分的详细解释:</font> 1. `huggingface-cli download`<font style="color:rgb(6, 6, 7);">:这是调用 </font>`huggingface-cli`<font style="color:rgb(6, 6, 7);"> 工具的命令,用于下载模型、数据集或其他资源。</font> 2. `b-mc2/sql-create-context`<font style="color:rgb(6, 6, 7);">:这是要下载的数据集的名称。在 Hugging Face 上,数据集通常由用户名和数据集名组成,这里 </font>`b-mc2`<font style="color:rgb(6, 6, 7);"> 可能是用户名或组织名,而 </font>`sql-create-context`<font style="color:rgb(6, 6, 7);"> 是数据集的具体名称。</font> 3. `--repo-type dataset`<font style="color:rgb(6, 6, 7);">:这个参数指定要下载的资源类型是数据集(dataset)。</font> 4. `--revision main`<font style="color:rgb(6, 6, 7);">:这个参数指定要下载的版本或分支。在这里,</font>`main`<font style="color:rgb(6, 6, 7);"> 通常指的是主分支或主版本。</font> 5. `--local-dir-use-symlinks False`<font style="color:rgb(6, 6, 7);">:这个参数设置为 </font>`False`<font style="color:rgb(6, 6, 7);">,意味着在本地目录中不会使用符号链接(symlinks)。如果设置为 </font>`True`<font style="color:rgb(6, 6, 7);">,则可能会在本地目录中创建指向数据集文件的符号链接,而不是复制文件。</font> 6. `--local-dir /dataset/datasets/b-mc2___sql-create-context/`<font style="color:rgb(6, 6, 7);">:这个参数指定了数据集下载到本地的目录路径。在这个例子中,数据集将被下载到 </font>`/dataset/datasets/b-mc2___sql-create-context/`<font style="color:rgb(6, 6, 7);"> 目录下。</font> <font style="color:rgb(6, 6, 7);">总结来说,这个命令的作用是从 Hugging Face 的数据集仓库中下载 </font>`b-mc2/sql-create-context`<font style="color:rgb(6, 6, 7);"> 数据集的主版本到本地指定的目录 </font>`/dataset/datasets/b-mc2___sql-create-context/`<font style="color:rgb(6, 6, 7);">,并且在下载过程中不会使用符号链接。</font> <font style="color:rgb(6, 6, 7);"></font> ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732517179682-7e440c1d-f978-4677-816e-a78976f66773.png) #### 检查数据集及位置 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732517371774-2be80bf8-2f25-4b15-a40e-a3c897fb848b.png) ### 准备模型 由于本次使用的是云平台上一下载好的模型,所以只需要打开训练文件llama2_7b_chat_qlora_sql_e3_copy.py(此文件位于code目录下),确认使用的模型及其路径。同时,也检查数据集的路径是否正确。 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732518991991-87cd5028-5ff2-4629-8351-cff5655ec6de.png) ## 二、本地开源模型部署 ### 使用FastChat部署codellama-7b-hf模型 ```plain # 按顺序依次执行 # 新建终端,输入如下命令 python -m fastchat.serve.controller --host 0.0.0.0 # 新建终端,输入如下命令 python -m fastchat.serve.model_worker --model-path /dataset/CodeLlama-7b-hf/ --host 0.0.0.0 --num-gpus 4 --max-gpu-memory 15GiB # 新建终端,输入如下命令 python -m fastchat.serve.openai_api_server --host 0.0.0.0 ``` 终端一: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732519948906-72146de5-1d83-407b-a061-35de2cca3f6c.png) 终端二: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732519971851-a3cde07a-937f-4f9e-9809-81290feb0aca.png) 终端三: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732520002287-a626ab43-0ba9-401f-8022-c5a88aed1d5c.png) ### 模型调用 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732519712110-8752861b-a1df-4152-85f0-dd28163a1142.png) 根据数据修改prompt;然后打开新的终端,将其粘贴到终端里 ```plain curl -X POST http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "CodeLlama-7b-hf", "prompt": "You are a powerful text-to-SQL model. Your job is to answer questions about a database. You are given a question and context regarding one or more tables. You must output the SQL query that answers the question. ### Input: 出生在“浙江”州以外的人的名字是什么? ### Context: CREATE TABLE head (born_state VARCHAR, name VARCHAR) ### Response:", "max_tokens": 41, "temperature": 0.5 }' ``` 终端四: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732521354596-e5798e17-fab1-4527-a3ed-eb4d0ab5398f.png) 模型给出回答 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732521314639-ed5067ad-cc5f-44dd-9afe-018be6333a25.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732524122259-1aa1a9f5-a8ae-42ef-8f9b-a370572debd1.png) ## 三、微调训练 ### 设置环境 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732525573618-54bbc871-ddb4-4175-b36b-07fcc8d10609.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732525702140-865305d8-b1e4-45fd-aa76-6e3df2aa5ab7.png) ### 获取master IP地址 用ifconfig查看主节点IP地址 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732524778679-b0618511-9afc-450f-bf30-731582e7a361.png) ### 启动训练 先转到code目录下 ```plain cd code ``` ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732526588242-659c8b89-5206-4ceb-88a5-e5b76a2fbc82.png) 在第一台notebook中输入: ```plain NPROC_PER_NODE=4 NNODES=2 PORT=12345 ADDR=10.244.241.125 NODE_RANK=0 xtuner train llama2_7b_chat_qlora_sql_e3_copy.py --work-dir /code/xtuner-workdir --deepspeed deepspeed_zero3_offload ``` ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732526671840-a500ae79-579d-4880-bef0-6b60c07ea46a.png) 在第二台notebook中输入: ```plain NPROC_PER_NODE=4 NNODES=2 PORT=12345 ADDR=10.244.241.125 NODE_RANK=0 xtuner train llama2_7b_chat_qlora_sql_e3_copy.py --work-dir /code/xtuner-workdir --deepspeed deepspeed_zero3_offload ``` ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732526714516-2bd00689-8555-49b0-9111-0e843a145345.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732527195901-f468789e-cb27-4061-8e40-7747a0e8d5da.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732533865763-fff997ec-da0e-44fb-9f72-7a1893c595a3.png) ## 四、训练后测试 ### 转换模型格式 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732535643616-be5e1e6e-5c09-4512-a86d-30fda61e3a68.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732535392414-80cd9cb7-ef3e-4f51-a43b-27d32f8077c2.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732535728196-38893d5d-6caf-46cf-9e59-5f531cd12709.png) ### 测试 这里我测试了两条数据。 #### 测试1: ##### 修改测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732535925871-459d0099-7267-453e-8515-001b7a65267c.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590276541-9a046119-3820-4ca5-9c09-8ba9b38037ab.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_1500%2Climit_0) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732592688557-fd137385-3c9d-4565-8e72-797c88f41b46.png) ##### 执行测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732592397209-044f0f61-00e5-4085-a100-720812127938.png) #### 测试2: ##### 修改测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590276541-9a046119-3820-4ca5-9c09-8ba9b38037ab.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_1500%2Climit_0) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732592469421-c36cca68-0e0b-4c4d-aa6c-302b24d3be9b.png) ##### 执行测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732592593367-ef0fe7d2-fb04-414c-a8da-d7d0f31c6e50.png) # 训练管理 ## 一、开发环境准备 ### 准备算法 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732605120493-95a1917c-f58c-46f8-bccc-747f2d20594f.png) ### 准备notebook ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732527616088-7eb8d17d-2246-4d28-95b1-87a33209ec55.png) ### 设置环境 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732527914585-52fdd42b-e431-416e-aed0-b2fe7406d8bd.png) ### 下载数据集 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732528100762-12fdc77f-5d14-469b-8bf2-07687a7bac1e.png) ### 修改算法/训练文件 在code目录下打开llama2_7b_chat_qlora_sql_e3_copy.py文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732527785219-769d4cf6-2e5a-4924-8dfc-b9505f82a6e9.png) ## 二、微调训练 在训练管理里创建新的训练任务: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732528230713-de486b72-cae2-4436-9d6d-b12366137eff.png) 输入以下命令,开启训练: ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732528287523-785eeeb9-d0ad-4557-a819-dc181c3e6817.png) 训练开始 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732536191046-7bdb4e09-22af-4bb9-8392-0f2e6c0c7d06.png) 训练完毕 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732536141096-7933d36c-1bff-471d-bf3e-788b47feec58.png) ## 三、训练后测试 ### 查看模型保存位置 查看训练后模型被保存的位置 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732589290894-3821c615-25ba-4c6a-a46c-f2ba931ab17d.png) ### 转换模型格式 从pth格式转到hf格式 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732589418688-4016772b-205a-4311-83ec-48fbafd58e69.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732589463049-981956b8-da4c-4d2d-9be7-aa9b4e4bcda6.png) ### 测试1: #### 修改模型路径及提示词 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590276541-9a046119-3820-4ca5-9c09-8ba9b38037ab.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590710443-ee30d6e0-9b93-46b2-9e4c-afbb0e2232ad.png) #### 执行测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590637464-304505ec-b2e7-48e7-9148-a114f435a3c2.png) ### 测试2 : #### 修改模型路径以及提示词 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590867330-fdb70eed-93c1-4ff8-b351-ecffea436aa4.png) ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732591073692-1cac6b8c-1780-4e0d-ab26-a378c79429da.png) #### 执行测试文件 ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1732590815561-4fc5c42b-feda-47f0-b3e9-0ca55dce58b8.png)
GANGUAGUA changed title from 大语言模型训练篇:提示词工程【进阶作业】 to 大语言模型训练篇:提示词工程【进阶版作业】 2024-11-26 15:27:50 +08:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_share#45
No description provided.