在PAI平台https://pai.console.aliyun.com/的“快速开始”页面部署大模型最简单。
找到ChatGLM,进入详情页,进行部署,注意选中试用资源。
模型部署按钮
试用活动
部署成功。
Running
web页面进行交互
测试问答,速度很快。
还可以点击langchain标签,上传本地文件到大语言模型,然后进行问答。
上传文件后,记得点击按钮“vectorstore knowledge”来向量化文档。
根据上传文档内容进行测试:
荣誉测试
最高荣誉判断
API方式进行推理inference
PAI-EAS支持使用通用公网对服务进行公网地址调用,通用公网调用又包括使用官方的Python SDK、Java SDK及自行实现调用逻辑三种方式。本文介绍详细介绍每种调用方式的实现方法。
在PAI-EAS部署模型服务后,系统会自动生成一个公网调用的服务地址。您可以在PAI EAS模型在线服务页面,单击待调用服务服务方式列下的调用信息,查看公网访问地址调用文档链接和Token。通过该调用信息可以进行调用测试,示例如下。
执行如下curl,在Windows可能返回错误“Authorization failed.curl: (3) URL rejected: Bad hostname”,可以在Linux服务器执行如下命令:
curl http://quickstart-chatglm.13151033***14358.cn-hangzhou.pai-eas.aliyuncs.com/ -H 'Authorization: MTI2NTg2MjkwNzY4Zjk1NGQ3NmMwNGE0O*******yZmE1Ng==' -d '2024年春节是哪天?'
返回信息:
{"response":"2024年春节是2024年1月22日(农历己亥年正月初一)。","history":[["2024年春节是哪天?","2024年春节是2024年1月22日(农历己亥年正月初一)。"]],"usage":{"usage":null,"finish_reason":"stop"}}
使用python代码流式输出:
import argparse
import json
from typing import Iterable, List
import requests
def clear_line(n: int = 1) -> None:
LINE_UP = '\033[1A'
LINE_CLEAR = '\x1b[2K'
for _ in range(n):
print(LINE_UP, end=LINE_CLEAR, flush=True)
def post_http_request(prompt: str,
system_prompt: str,
history: list,
host: str,
authorization: str,
max_new_tokens: int = 2048,
temperature: float = 0.95,
top_k: int = 1,
top_p: float = 0.8,
langchain: bool = False,
use_stream_chat: bool = False) -> requests.Response:
headers = {
"User-Agent": "Test Client",
"Authorization": f"{authorization}"
}
if not history:
history = [
(
"2024年春节是哪天?",
"正月初一"
)
]
pload = {
"prompt": prompt,
"system_prompt": system_prompt,
"top_k": top_k,
"top_p": top_p,
"temperature": temperature,
"max_new_tokens": max_new_tokens,
"use_stream_chat": use_stream_chat,
"history": history
}
if langchain:
pload["langchain"] = langchain
response = requests.post(host, headers=headers,
json=pload, stream=use_stream_chat)
return response
def get_streaming_response(response: requests.Response) -> Iterable[List[str]]:
for chunk in response.iter_lines(chunk_size=8192,
decode_unicode=False,
delimiter=b"\0"):
if chunk:
data = json.loads(chunk.decode("utf-8"))
output = data["response"]
history = data["history"]
yield output, history
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--top-k", type=int, default=4)
parser.add_argument("--top-p", type=float, default=0.8)
parser.add_argument("--max-new-tokens", type=int, default=2048)
parser.add_argument("--temperature", type=float, default=0.95)
parser.add_argument("--prompt", type=str, default="2024年多少天?")
parser.add_argument("--langchain", action="store_true")
args = parser.parse_args()
prompt = args.prompt
top_k = args.top_k
top_p = args.top_p
use_stream_chat = True
temperature = args.temperature
langchain = args.langchain
max_new_tokens = args.max_new_tokens
host = "http://quickstart-chatglm.1315103301214358.cn-hangzhou.pai-eas.aliyuncs.com/"
authorization = "MTI2NTg2MjkwNzY4Zjk1NGQ3NmMwNGE0OWM4NDZkOThhZjUyZmE1Ng=="
print(f"Prompt: {prompt!r}\n", flush=True)
system_prompt = "Act like you are programmer with \
5+ years of experience."
history = []
response = post_http_request(
prompt, system_prompt, history,
host, authorization,
max_new_tokens, temperature, top_k, top_p,
langchain=langchain, use_stream_chat=use_stream_chat)
for h, history in get_streaming_response(response):
print(
f" --- stream line: {h} \n --- history: {history}", flush=True)
网友评论