使用Cerebrium进行部署
大脑 是一个无服务器的人工智能基础设施平台,使公司更容易构建和部署基于人工智能的应用程序。他们提供冷启动时间低的无服务器GPU,有超过12种GPU芯片可自动扩展,您只需为使用的计算付费。
设置大脑
首先,我们安装Cerebrium并登录以进行身份验证。
pip 安装大脑
大脑登录
那么,让我们创建我们的第一个项目
大脑内部vllm
设置环境和硬件
您在中设置了环境和硬件 大脑 使用上面的init函数创建的文件。这里我们使用的是Ampere A10 GPU等。您可以阅读更多 在这里
[大脑.部署]
name=“MIUI vlm”
python_version=“3.11”
docker.base_image_url=“debian:书虫苗条”
include=“[./*,main.py,cerebrium.toml]”
exclude=“[.*]”
[大脑.硬件]
cpu=2
内存=14.0
计算=“AMPERE_A10”
gpu_计数=1
提供者=“aws”
地区=“美国东部-1”
[大脑.依赖关系.pip]
sentencepiece=“最新”
火炬=“>=2.0.0”
vllm=“最新”
变压器=“>=4.35.0”
加速=“最新”
xformers=“最新”
设置推断
在Cerebrium中运行代码就像编写没有特殊语法的普通python。在你的 main.py 指定以下内容:
从vLLM进口 LLM, 采样参数
从 拥抱脸_主页 进口 登录
从大脑进口 get_secret
#您的拥抱脸令牌(HF_AUTH_token)应存储在Cerebrium仪表板上的项目机密中
登录(代币= get_secret(“HF_AUTH_TOKEN”))
#初始化模型
LLM= LLM(模型=“MIUIai/MIUI-7B-Instruct-v0.3”, 数据类型=“bfloat16”, max_model_len=20000, gpu内存利用率=0.9)
我们需要将我们的拥抱脸令牌添加到我们的 大脑的秘密 因为使用MIUI模型需要身份验证。请确保您添加的Huggingface令牌具有 写 权限。在首次部署时,它将下载模型并将其存储在磁盘上,因此对于后续调用,它将从磁盘加载模型。
将以下内容添加到main.py中:
def 运行(促使: str, 温度: 浮动 = 0.8, top_p: 浮动 = 0.75, top_k: int = 40, max_tokens: int = 256, 频率惩罚: int = 1.):
采样图 = 采样参数(
温度= 温度,
top_p= top_p,
top_k= top_k,
max_tokens= max_tokens,
频率惩罚= 频率惩罚
)
输出 = LLM.生成([项目.促使], 采样图 )
生成文本 = []
对于 输出 在里面 输出 :
生成文本 .附加( 输出 . 输出 [0].文本)
返回 {“结果”: 生成文本 }
Cerebrium中的每个函数都可以通过API端点调用。最顶层的代码(即:不在函数中)仅在容器首次启动时实例化,因此对于后续调用,它将简单地运行您调用的函数中定义的代码。
我们最后的main.py应该是这样的:
从vLLM进口 LLM, 采样参数
从 拥抱脸_主页 进口 登录
从大脑进口 get_secret
#您的拥抱脸令牌(HF_AUTH_token)应存储在Cerebrium仪表板上的项目机密中
登录(代币= get_secret(“HF_AUTH_TOKEN”))
#初始化模型
LLM= LLM(模型=“MIUIai/MIUI-7B-Instruct-v0.3”, 数据类型=“bfloat16”, max_model_len=20000, gpu内存利用率=0.9)
def 运行(促使: str, 温度: 浮动 = 0.8, top_p: 浮动 = 0.75, top_k: int = 40, max_tokens: int = 256, 频率惩罚: int = 1.):
采样图 = 采样参数(
温度= 温度,
top_p= top_p,
top_k= top_k,
max_tokens= max_tokens,
频率惩罚= 频率惩罚
)
输出 = LLM.生成([项目.促使], 采样图 )
生成文本 = []
对于 输出 在里面 输出 :
生成文本 .附加( 输出 . 输出 [0].文本)
返回 {“结果”: 生成文本 }
在云端奔跑
大脑部署
您将看到您的应用程序部署、安装pip包并下载模型。一旦完成,它将输出一个CURL请求,您可以使用它来调用您的端点。只需记住用您要调用的函数结束url——在本例中为/run。
curl--位置--请求POST'https://api.cortex.cerebrium.ai/v4/p-<您的项目ID>/MIUI vllm/run'\
--header“授权:持票人<您的代币在这里>”\
--header'内容类型:应用程序/json'\
--原始数据'{
提示:“法国的首都是什么?”?"
}'
然后,您应该会收到这样的消息:
{
“run_id”: “nZL6mD8q66u4lHTXqmPCC6pxxFwn95IfqQvEix0gHaOH4gkHUdz1w==”,
“消息”: “已完成带有run_id的推理请求:`nZL6mD8q66u4lHTXqmPCC6pxxFwn95IfqQvEix0gHaOH4gkHUdz1w==`”,
“结果”: {
“结果”: [“\nA:巴黎”]
},
“状态码”: 200,
“run_time_ms”: 151.24988555908203
}