TACO-LLM 部署

最近更新时间:2025-01-14 14:51:12

我的收藏

TACO-license 部署

TACO-license 是 TACO-LLM 项目中用于鉴权和记录日志的组件。

公有云及太极客户:

公有云目前支持以下地域:南京、北京、上海、广州。
太极目前对所有客户提供支持。
TACO-license 已经在上述范围生效,客户无需关注 TACO-license 部署。
不在上述范围的公有云客户请进入官方 TACO 团队交流群 咨询使用特殊版本。

TCE/TCS 客户:

如需在 TCE/TCS 上部署 TACO-license,请进入官方 TACO 团队交流群 团队进行对接。

私有化客户:

TACO-license 背景及适用范围

TACO-license 是 TACO-LLM 项目下用于鉴权和记录日志的组件,适用于私有化部署 TACO-LLM。私有化客户需要在集群中部署 server 端,以对 client 端(即 TACO-LLM 本身)的请求进行鉴权。搭建条件如下,本文档中将使用 $your_license_version 来代表实际的版本号,请在代码中进行相应替换:
//搭建环境:需要K8s,server以service的形式部署并提供服务
docker images: taco-license-server:$your_license_version
成功鉴权后,可以正常使用 TACO-LLM 功能。

签发 license

只有被授权并在过期时间之前,在最大同时访问数量(如果设定)的限制下,才能成功鉴权的 GPU 才能使用。最大同时访问数量指的是同时访问 TACO-license 的 GPU 的最大数量,例如:授权10000台 GPU,同时限制最大同时访问的 GPU 数量为10台。
1. 客户将需要签发 license 的 GPU 发送给 TACO 团队,其方法为在所有可能执行 GPU 的机器上执行:
nvidia-smi -L
将结果写入文件(例如 request.txt),多台机器的结果直接按顺序粘贴合并到一个文件中,并提供过期时间以及最大访问数量,交给 TACO 团队以签发许可证。
2. 签发的许可证文件名为 license-taco_xxxxxxx.dat(例如 license-taco_1234-leolingli-20240906104354.dat)。

搭建 taco-license-server

1. 准备好 taco-license-server 的镜像,可以下载到本地或者上传到可供下载的位置。此包由 TACO 团队提供,下载地址为:
wget https://taco-1251783334.cos.ap-shanghai.myqcloud.com/taco-llm/license-server/latest/taco-license-server-latest.tgz
 
#将docker image 解压或放到集群可以下载到的地址,如:
docker load -i taco-license-server-latest.tgz
#docker pull or  docker tag taco-license-server: $your_license_version \\#$your_license_repository/taco-license-server:$your_license_version
2. 使用 Helm Chart 搭建服务,可以参考以下示例:
#install helm first
#wget taco-operator-idc package
wget https://taco-1251783334.cos.ap-shanghai.myqcloud.com/taco-llm/license-server/latest/taco-operator-idc-latest.tgz
 
#假设您的taco-license-server地址为 $your_license_repository/taco-license-server:$your_license_version
helm install --generate-name \\
    --set global.repository="$your_license_repository" \\
   
./taco-operator-idc-latest.tgz
3. 服务将部署在 kube-system 命名空间中,可以通过 curl 命令来验证是否成功搭建,截图如下:




导入 license

将上述签发的 license(license-taco_xxxxxxx.dat)导入集群,使 license 生效:
1. 在集群中执行以下操作以导入许可证。请注意,导入操作将覆盖所有现有的许可证。因此,新签发的许可证需要替代之前的所有许可证:
LICENSE_FILE_NAME=license-taco_xxxxxxxxxxx.dat
 
LICENSE_SERVER_IP=$(kubectl get svc -n kube-system taco-license-server  -o jsonpath="{.spec.clusterIP}")
 
curl -X POST -F "file=@$LICENSE_FILE_NAME" http://${LICENSE_SERVER_IP}:10080/ls
2. 执行上述命令后,可以看到提示,显示 license 已成功导入。



您也可以通过以下方法查看签发的许可证信息:
curl your-service-ip:10080/ls/view


client 端使用

1. 在容器中,只需使用 taco-llm 即可,无需特殊配置。您可以尝试在 pod 中执行以下操作:
curl http://taco-license-server.kube-system.svc.cluster.local:10080
2. 可以看到相同的输出:
taco license server
这意味着客户端可以访问许可证。

特殊情况:自定义 license 地址

说明:
本章节适用于使用非 kube-system 命名空间或希望自定义 qgpu-license-server 部署方式的用户。
Taco-license-server 默认支持两种连接方式,即通过 http://taco-license-server.kube-system.svc.cluster.local:10080 和 http://taco-license-server:10080 访问。这意味着部署在 kube-system 命名空间和与负载 pod 处于同一命名空间的服务地址都可以进行访问。如果用户想在其他命名空间使用,或者由于配置原因无法公开 taco-license-server 地址以允许客户端鉴权,则需要用户自行解决 taco-license-server 的部署问题。这包括部署一个可以访问到 taco-license-server 地址的 pod,并且设置 TACO_LS_ADDR 环境变量为 taco-license-server 的地址。
例如,如果 taco-license-server 可以通过地址 http://10.10.161.72:10080 访问,则应在 pod 的环境变量中添加以下变量:
可以通过配置 YAML 文件中的环境变量来实现。



或在容器中 bashrc 文件中添加变量:
export TACO_LS_ADDR=http://$your_license_addr:10080
Taco-LLM 将尝试通过此地址访问 Taco-License-Server。
注意:
如果要显式设置 TACO_LS_ADDR 的值,请确保将 TACO_LS_ADDR 的值导出为正确的 taco-license-server 地址。尝试访问无效地址会导致鉴权程序等待超时(通常为30秒),从而延迟鉴权启动时间,可能会影响到最初几次鉴权的结果。