使用数据科学和 AI 快速操作在 GPU 上微调和部署开源 LLM
简介
本教程将指导您使用 Oracle Cloud Infrastructure (OCI) Data Science 服务,使用 Data Science 提供的 AI Quick Actions 功能微调开源 LLM。通过轻松点击,您将使用 AI Quick Actions 对 Hugging Face 提供的 Mistral LLM 进行微调,并根据 NVIDIA 发布的常见问题对该 LLM 进行微调。然后,AI Quick Actions 用于在 A10 GPU 配置的 OCI 中部署该优化模型。然后,在 Jupyter 笔记本中运行的 Python 代码用于表明调优模型的输出具有与 NVIDIA 训练数据相似的所需样式和语调。
目标
- 在 OCI 中启动数据科学记事本会话。
- 下载 NVIDIA 常见问题解答。
- 使用 AI 快速操作根据该常见问题解答对拥抱面 LLM 进行微调,并对 OCI 中的 GPU 配置执行微调。
- 使用 AI 快速操作来抽查微调模型的学习曲线,以确认优化的 LLM 适用于部署。
- 使用 AI 快速操作在 GPU 上部署经过微调的 LLM。
- 使用代码调用已部署模型的端点。
- 使用 OCI 日志监视到该部署模型端点的流量。
- 在数据科学的 Jupyter 记事本中使用 python 来评估已部署模型的质量。
Prerequisites
- 熟悉 OCI Data Science。
- 访问具有 A10 或更高 GPU 配置的区域中的 OCI 租户。
- OCI 策略允许您启动数据科学记事本并使用 AI 快速操作在 GPU 上微调和部署 LLM;有关策略的详细指导,请参见 https://github.com/oracle-samples/oci-data-science-ai-samples/tree/main/ai-quick-actions/policies。
- OCI 资源主用户已启用,您可以将文件写入 OCI 对象存储桶。
- 启用 OCI 资源主用户,以便您可以与 OCI 中部署的模型进行交互。
- 具有活动令牌的 Hugging Face 帐户。
任务 1:预配数据科学记事本会话
-
使用 OCI 控制台创建数据科学项目。
-
导航到该项目并创建具有两个或更多 ECPU 的数据科学记事本会话。
-
打开该记事本会话,然后单击扩展。
-
在数据科学中启动终端会话。
-
使用该终端克隆包含将由本教程使用的 Jupyter 记事本的 github 资料档案库:
git clone https://github.com/oracle-nace-dsai/quick-actions-demo-archive.git -
克隆 NVIDIA 常见问题解答:
git clone https://huggingface.co/datasets/ajsbsd/nvidia-qa -
将 NVIDIA 常见问题解答复制到第一个存储库的数据目录
cp nvidia-qa/NvidiaDocumentationQandApairs.csv quick-actions-demo-archive/data/. -
安装并激活
General Machine Learning for CPUs on Python 3.11conda:odsc conda install -s generalml_p311_cpu_x86_64_v1 conda activate /home/datascience/conda/generalml_p311_cpu_x86_64_v1 -
每 https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/ai-quick-actions/model-deployment-tips.md#using-python-sdk-without-streaming 安装 LangChain
pip install langgraph "langchain>=0.3" "langchain-community>=0.3" "langchain-openai>=0.2.3" "oracle-ads>2.12"
任务 2:设置拥抱面帐户
-
在 https://huggingface.co. 创建 Hugging Face 帐户
-
导航到您的 Hugging Face 帐户 > Access Tokens(访问令牌),并创建选中了以下权限的新用户访问令牌:
- 读取您的个人名称空间下所有存储库的内容
- 读取您可以访问的所有公共网关系统信息库的内容
-
使用数据科学终端会话通过拥抱面记录您的用户访问令牌:
git config --global credential.helper store huggingface-cli login
任务 3:创建对象存储存储桶
在数据科学记事本所在的区域和区间中创建对象存储桶。
- 选择启用对象版本控制
任务 4:设置日志记录
创建日志组,然后创建定制日志
- 对于创建代理配置,选择
Add configuration later
任务 5:使用数据科学的 AI 快速操作在 A10 GPU 配置上部署 LLM,无需微调
-
导航到数据科学记事本 > 启动器 > AI 快速操作
a.搜索
Mistral模型
b。单击mistralai/Mistral-7B-Instruct-v0.3磁贴
c。单击选择了以上日志的部署 -
模型部署大约需要 15 分钟。您可以通过选择在终端中打开日志来监视部署日志。
-
模型部署完成后,导航到部署 > < 您的刚刚部署的模型 > > 测试您的模型,并使用简单的问题(例如:
Who wrote the Harry Potter book series? -
一些简单的 LLM 无法正确回答以下测试问题,但是
Mistral-7B-Instruct-v0.3在回答这些问题时做得相当不错:A bat and a ball cost $1.10 in total. The bat costs $1.00 more than the ball. How much does the ball cost? Every cat has four legs. My pet has four legs. Is my pet a cat? Who is President of the United States?
任务 6:与已部署模型的端点交互
-
导航到部署 > < 刚刚部署的模型 > 调用您的模型以查看已部署模型的端点。然后,使用数据科学终端将该端点存储为 shell 变量。例如:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
将提示发送到已部署模型的端点:
prompt="Who is President of the United States?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
使用此 bash 循环在十秒内调用模型的端点 100 次:
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
导航到 Deployments(部署) > <your just-deployed model> > Log(日志)以查看刚刚发送到模型端点的流量。

任务 7:使用 AI 快速操作微调 LLM
以前的任务部署了不进行微调的 Mistral LLM。此任务将进行微调,然后部署相同的 LLM。任务 9 将比较两个模型的输出,优化和未优化。此任务和下一个任务还使用从此代码归档下载的两个 Jupyter 记事本。
-
使用 Data Science 记事本的文件浏览器导航到
quick-actions-demo-archive文件夹并打开prep_data.ipynbJupyter 记事本。 -
选择
generalml_p311_cpu_x86_64_v1内核。 -
修改记事本的第二个到最后一个段落,使其引用您的租户/名称空间和对象存储桶。
-
执行
prep_data.ipynbJupyter 笔记本,这将:- 阅读文件
data/NvidiaDocumentationQandApairs.csv中的 NVIDIA 常见问题解答 - 将 CSV 常见问题重塑为 JSON 记录,其中包含 AI Quick Actions 预期的
prompt和completion字段。 - 将数据 90:10 分割成 train:test 样本。
- 将训练样例推送到对象存储中的文件
quick_actions/tuning_data/tune_sample.jsonl中。
- 阅读文件
-
导航到 AI 快速操作 > 模型 >
mistralai/Mistral-7B-Instruct-v0.3。然后,使用以下设置单击微调:- 对象存储路径 =
quick_actions/tuning_data/tune_sample.jsonl - 验证拆分 =
20% - 结果对象存储路径 =
quick_actions/tuning_results - 配置 =
BM.GPU.A10.4(如果存在可用性)。否则使用10.2或10.1配置 - 选择日志组和日志
- 对象存储路径 =
-
使用以下设置启用显示高级配置:
batch_size = 64sequence_len = 256learning_rate = 0.000025epochs = 12
-
在 A10.2 上微调大约需要 60 分钟,因此单击在终端中打开日志可监视微调作业的日志。
-
在度量部分中查看经过微调的模型的学习曲线。一个经过良好调整的模型将有一个验证损失曲线,该曲线会随着时代的增加而下降,然后是高原。

任务 8:部署经过微调的 LLM
-
使用以下设置导航到 AI 快速操作 > 优化模型 > < 刚刚优化的模型 > > 部署:
- 计算配置 =
VM.GPU.A10.1 - 选择日志组和日志
- 计算配置 =
-
单击在终端中打开日志以监视部署日志
任务 9:测试精细优化的 LLM 部署
-
模型部署完成后,导航到部署 > < 您的刚刚优化的模型 > > 测试您的模型,然后使用
prep_data.ipynb记事本中显示的测试示例问题中的问题进行测试,例如:What benefits does Unified Memory bring to complex data structures and classes? -
将模型端点复制/粘贴到终端会话的 shell 变量中:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
将提示发送到已部署模型的端点:
prompt="What benefits does Unified Memory bring to complex data structures and classes?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
使用此 bash 循环可调用模型端点 100 次:
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
单击经过微调/部署的模型的日志以查看进入该模型端点的最新流量
-
打开
compare_models.ipynbJupyter 记事本并更新第 [8] 段,以引用两个模型的端点(已优化和未优化)。 -
执行该笔记本,这将:
- 阅读常见问题记录的测试示例。
- 使用 python 将五个测试问题输入微调和未调优模型的端点,并比较其响应。
-
注意第 [10] 段,其中说明了如何使用 python 调用已部署模型的端点,这非常简单:

-
查看本测试的主要发现:
- 经过微调的 LLM 响应的语调、样式和长度与实际 NVIDIA 编写的常见问题解答相当相似。
- 未经过优化的 LLM 响应更为详细,并且包含许多可能不正确的无关语句。
- 优化的 LLM 与未优化的 LLM 的响应通常不正确,大致相同。
- 对更大的数据集进行微调可能会提高其响应的准确性。
任务 10:删除资源
-
导航到 AI Quick Actions > Deployments(部署)并删除模型部署。
-
导航到 AI 快速操作 > 模型 > 优化模型并删除。
-
使用 OCI 控制台页面导航到 Data Science 记事本会话和终止。
-
单击作业并删除微调作业。
-
删除数据科学项目。
-
使用 OCI 控制台页面导航到您的对象存储桶并删除它。
-
使用 OCI 控制台删除日志和日志组。
相关链接
确认
- 作者 — joe.hahn@oracle.com,高级数据科学家 Joe Hahn
- 贡献者 — Kevin Ortiz,kevin.ortiz@oracle.com 高级云架构师
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Fine-Tune & Deploy an Open Source LLM on GPU using Data Science and AI Quick Actions
G42936-02