检查 Azure 机器学习架构

已完成

azure_ai 扩展的 azure_ml 架构允许数据库与自定义生成的机器学习模型的功能进行交互。 利用 azure_ml 架构,可以将 PostgreSQL 数据库与 Azure 机器学习服务无缝集成。 通过此集成,可以直接从数据库部署和提供机器学习模型,使实时推理变得高效且可缩放。

使用 azure_ml 架构进行实时推理

Azure 机器学习是基于云的平台,可简化端到端机器学习工作流。 在 Azure 机器学习内,使用 PyTorch 和 TensorFlow 等常见框架开发模型。 训练后,这些模型将部署为终结点、可请求预测的稳定 URL。

借助提供实时推理的在线终结点,Azure 机器学习与 azure_ai 扩展集成,使你能够直接从数据库进行准确的预测。 此架构中的 inference 函数旨在使用通过 Azure 机器学习训练而来的模型进行预测或生成输出。 部署模型时,推理函数允许你调用模型并获取对新数据的预测。

  • azure_ml.inference(jsonb,integer,boolean,text)

inference() 函数需要以下输入参数:

参数 类型 默认 说明
input_data jsonb 包含与 Azure 机器学习模型交互所需的 input_data 对象的 JSON 对象。
deployment_name text NULL::text (可选)针对指定的 Azure 机器学习终结点的模型部署的名称。
timeout_ms integer NULL::integer 超时...
throw_on_error boolean true 描述...
max_attempts integer 1 在发生故障时重新调用 Azure OpenAI 服务的尝试次数。
retry_delay_ms integer 1000 尝试重新调用 Azure OpenAI 服务终结点之前等待的时间(以毫秒为单位)。

Azure 机器学习推理终结点需要 JavaScript 对象表示法 (JSON) 对象作为输入。 但是,此对象的结构取决于基础模型。 例如,在给定邻近区域、邮政编码、卧室数、浴室数等特定输入的情况下,经过训练的用于预测西雅图、华盛顿地区短租房的每日租金价格的回归模型具有以下形状:

{
  "input_data": {
    "columns": [
      "host_is_superhost",
      "host_has_profile_pic",
      "host_identity_verified",
      "neighbourhood_group_cleansed",
      "zipcode",
      "property_type",
      "room_type",
      "accommodates",
      "bathrooms",
      "bedrooms",
      "beds"
    ],
    "index": [0],
    "data": [["False", "False", "False", "Central Area", "98122", "House", "Entire home/apt", 4, 1.5, 3, 3]]
  }
}

可以通过检查与已部署终结点关联的 Swagger 定义来检索预期的输入对象结构。 此定义指定 ServiceInputServiceOutput 结构,可使用这两个结构确定输入和输出。

配置与 Azure 机器学习的连接

在使用 azure_ml.inference() 函数执行实时推理之前,必须为扩展配置 Azure 机器学习评分终结点和密钥。 azure_ml.scoring_endpoint 的值是已部署模型的 REST 终结点。 azure_ml.endpoint_key 的值可以是此终结点的主密钥或辅助密钥。

SELECT azure_ai.set_setting('azure_ml.scoring_endpoint', '{endpoint}');
SELECT azure_ai.set_setting('azure_ml.endpoint_key', '{api-key}');