ModelScope可以通过token key用Python代码远程访问算力吗?
是的,ModelScope 可以通过 Token 和 Access Key 使用 Python 代码远程访问算力并调用相关服务。以下是详细的实现方式和步骤:
在使用 Python 代码远程访问 ModelScope 的算力之前,需要完成以下准备工作: - 获取服务访问地址(Service URL)和 Token:
在阿里云 EAS(弹性推理服务)中部署模型后,可以通过服务详情页面获取服务的访问地址和 Token。 - 确保环境变量配置正确:
如果使用临时访问凭证(如 AccessKey ID 和 AccessKey Secret),需要确保代码运行环境中设置了相关环境变量。
ModelScope 支持通过 API 接口调用已部署的模型服务,具体实现如下:
对于普通 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 地址作为输入,需确保服务具有公网访问权限。
对于大语言对话模型(如 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,避免泄露导致服务被滥用。
如果需要使用临时访问凭证(如 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 与服务所在地域一致。
通过上述方法,您可以使用 Token 或 Access Key 远程访问 ModelScope 的算力资源,并调用已部署的模型服务。无论是普通 Pipeline 模型还是大语言对话模型,都可以通过 Python 代码实现高效调用。
特别提醒:
- 安全性:请妥善管理 Token 和 Access Key,避免泄露。 - 网络配置:如果使用图片 URL 作为输入,请确保服务具备公网访问权限。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352