ModelScope可以通过token key用Python代码远程访问算力吗?

ModelScope可以通过token key用Python代码远程访问算力吗?

展开
收起
小小爱吃香菜 2024-02-14 08:53:11 73 分享 版权
阿里云 AI 助理回答

是的,ModelScope 可以通过 TokenAccess Key 使用 Python 代码远程访问算力并调用相关服务。以下是详细的实现方式和步骤:


1. 准备工作

在使用 Python 代码远程访问 ModelScope 的算力之前,需要完成以下准备工作: - 获取服务访问地址(Service URL)和 Token
在阿里云 EAS(弹性推理服务)中部署模型后,可以通过服务详情页面获取服务的访问地址和 Token。 - 确保环境变量配置正确
如果使用临时访问凭证(如 AccessKey ID 和 AccessKey Secret),需要确保代码运行环境中设置了相关环境变量。


2. 通过 Token 调用模型服务

ModelScope 支持通过 API 接口调用已部署的模型服务,具体实现如下:

(1)普通 Pipeline 模型调用

对于普通 Pipeline 模型(如图像处理模型),可以使用以下代码进行调用:

import requests
import json

# 配置服务访问地址和 Token
service_url = 'YOUR_SERVICE_URL'  # 替换为实际的服务访问地址
token = 'YOUR_SERVICE_TOKEN'     # 替换为实际的服务 Token

# 构造请求数据
request_data = {
    "input": {
        "text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"
    }
}

# 发送 POST 请求
response = requests.post(
    service_url,
    headers={"Authorization": token},
    data=json.dumps(request_data)
)

# 输出结果
print(response.text)

注意
- 对于图像类模型,输入数据可以是图片的 Base64 编码或图片的 URL 地址。如果使用 URL 地址作为输入,需确保服务具有公网访问权限。


(2)大语言对话模型调用

对于大语言对话模型(如 ChatGLM 系列模型),可以通过以下代码实现连续对话:

import requests
import json

# 配置服务访问地址和 Token
service_url = 'YOUR_SERVICE_URL'  # 替换为实际的服务访问地址
token = 'YOUR_SERVICE_TOKEN'     # 替换为实际的服务 Token

# 第一轮对话
request_1 = {
    "prompt": "浙江的省会是哪里?",
    "history": []
}
response_1 = requests.post(
    service_url,
    headers={"Authorization": token},
    data=json.dumps(request_1)
)
result_1 = json.loads(response_1.text)
print(result_1['response'])  # 输出:浙江的省会是杭州。

# 第二轮对话
request_2 = {
    "prompt": "江苏呢?",
    "history": result_1['history']
}
response_2 = requests.post(
    service_url,
    headers={"Authorization": token},
    data=json.dumps(request_2)
)
result_2 = json.loads(response_2.text)
print(result_2['response'])  # 输出:江苏的省会是南京。

重要提示
- history 字段:用于保存对话历史,支持连续对话功能。每次调用时需将上一轮对话的结果传递到下一轮。 - Token 安全性:请妥善保管 Token,避免泄露导致服务被滥用。


3. 通过 Access Key 使用临时凭证访问

如果需要使用临时访问凭证(如 STS Token),可以通过以下方式创建客户端并调用服务:

import os
from alibabacloud_imm20200930.client import Client as ImmClient
from alibabacloud_sts20150401.client import Client as StsClient
from alibabacloud_tea_openapi.models import Config

# 初始化 STS 客户端
sts_config = Config(
    access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
    access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
sts_config.endpoint = "sts-share.cn-hangzhou.aliyuncs.com"
sts_client = StsClient(sts_config)

# 获取临时凭证
assume_role_request = {
    "DurationSeconds": 3600,
    "RoleSessionName": "immtest",
    "RoleArn": "acs:ram::xxxxxxx:role/imm-test-role-for-amp"
}
response = sts_client.assume_role(assume_role_request)
credential = response.body.get("Credentials", {})

# 使用临时凭证初始化 IMM 客户端
imm_config = Config(
    access_key_id=credential["AccessKeyId"],
    access_key_secret=credential["AccessKeySecret"],
    security_token=credential["SecurityToken"]
)
imm_config.endpoint = "imm.cn-hangzhou.aliyuncs.com"
imm_client = ImmClient(imm_config)

# 调用服务示例
response = imm_client.detect_image_faces({
    "SourceUri": "oss://your-bucket-name/your-path/test.jpg",
    "ProjectName": "immtest"
})
print(response.body.to_map())

注意
- STS Token 有效期:默认为 3600 秒(1 小时),可根据需求调整。 - Endpoint 配置:确保 Endpoint 与服务所在地域一致。


4. 总结

通过上述方法,您可以使用 TokenAccess Key 远程访问 ModelScope 的算力资源,并调用已部署的模型服务。无论是普通 Pipeline 模型还是大语言对话模型,都可以通过 Python 代码实现高效调用。

特别提醒
- 安全性:请妥善管理 Token 和 Access Key,避免泄露。 - 网络配置:如果使用图片 URL 作为输入,请确保服务具备公网访问权限。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352

还有其他疑问?
咨询AI助理