尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MAX 如何部署到 AWS CloudFormation 并用公网 IP 验证 OpenAI 兼容端点

MAX 如何部署到 AWS CloudFormation 并用公网 IP 验证 OpenAI 兼容端点 MAX 如何部署到 AWS CloudFormation 并用公网 IP 验证 OpenAI 兼容端点【免费下载链接】mojoThe Modular Platform (includes MAX Mojo)项目地址: https://gitcode.com/GitHub_Trending/mo/mojo本文解决一个具体任务用 AWS CloudFormation 把 MAX 推理端点部署到 AWS拿到 EC2 实例的公网 IP 后通过curl向 OpenAI 兼容的/v1/chat/completions端点发送请求验证部署结果。文档以modularai/Llama-3.1-8B-Instruct-GGUF模型为例整套流程由仓库内的 IaC 模板和脚本支撑来源是 本地到云端部署教程 与 cloud-configs 配置目录。部署前提GPU 实例规格与必要凭据按文档说明完成本场景需要以下条件GPU 资源云账号中可用的 GPU 资源最低要求24GB 显存支持的 GPU 类型见文档引用的 compatible GPUs 说明。该教程在 AWS 上实测过的实例是g5.4xlargeA10G。Hugging Face 用户访问令牌访问模型需要有效 token并在环境中导出export HF_TOKENhf_...Docker安装 Docker Engine 和 CLI。模板使用的modular/max-nvidia-full:latest是预配置的 GPU 容器包含运行 Llama 3 所需的全部依赖。AWS CLI v2已安装并配置好凭据。AWS CLI 配置命令aws configure使用 SSO 登录时执行aws sso login文档还给出用cat ~/.aws/credentials核对凭据、或以AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量提供凭据的方式。获取 IaC 模板CloudFormation 模板与监控脚本先克隆仓库并进入 AWS 配置目录文档给出的命令使用stable分支git clone -b stable https://github.com/modular/modular cd modular/examples/cloud-configs cd awsaws/目录只有两个文件max-nvidia-aws.yamlCloudFormation 模板notify.sh监控启动日志、确认服务就绪的脚本。模板的关键内容来自 max-nvidia-aws.yamlInstanceType默认g5.4xlargeAllowedValues中仅允许这一种AmiId默认值为us-east-1区域的 Deep Learning Base OSS Nvidia Driver AMIAmazon Linux 2文档注明默认值适用于us-east-1安全组放行 80 端口HTTP和 22 端口SSHUserData安装 CloudWatch agent、Docker 和 NVIDIA Container Toolkit拉取modular/max-nvidia-full:latest并运行容器容器以-p 80:8000映射端口Outputs输出InstanceId和PublicDNS。部署流程分两个阶段阶段 1由模板创建 VM、分配公网 IP、配置安全组并在实例上安装 GPU 运行时、拉取容器阶段 2容器内 MAX 在 80 端口对外提供 OpenAI 兼容端点。注意该教程会把 VM 公网 IP 直接暴露到互联网。文档明确提示这不推荐直接用于生产环境可能暴露模型安全风险。创建 CloudFormation 栈设置区域变量示例值us-east-1来自文档注释export REGIONREGION # example: us-east-1栈名必须唯一多次创建时务必修改STACK_NAME然后执行export STACK_NAMEmax-serve-stack aws cloudformation create-stack --stack-name ${STACK_NAME} \ --template-body file://max-nvidia-aws.yaml \ --parameters \ ParameterKeyInstanceType,ParameterValueg5.4xlarge \ ParameterKeyHuggingFaceHubToken,ParameterValue${HF_TOKEN} \ ParameterKeyHuggingFaceRepoId,ParameterValuemodularai/Llama-3.1-8B-Instruct-GGUF \ --capabilities CAPABILITY_IAM \ --region $REGION参数说明HuggingFaceHubToken对应上面导出的HF_TOKENHuggingFaceRepoId是 Hugging Face 模型仓库 ID想换其他模型时替换为 supported models 中的模型 ID。栈创建耗时因资源准备而异可能需要一些时间。等待栈创建完成并获取实例信息等待栈进入完成状态aws cloudformation wait stack-create-complete \ --stack-name ${STACK_NAME} \ --region ${REGION}随后从栈输出中取InstanceId再查询该实例的公网 IPINSTANCE_ID$(aws cloudformation describe-stacks --stack-name ${STACK_NAME} \ --query Stacks[0].Outputs[?OutputKeyInstanceId].OutputValue \ --output text \ --region ${REGION}) PUBLIC_IP$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} \ --query Reservations[0].Instances[0].PublicIpAddress \ --output text \ --region ${REGION}) echo Instance ID: ${INSTANCE_ID} echo Public IP: ${PUBLIC_IP} aws ec2 wait instance-running --instance-ids ${INSTANCE_ID} --region ${REGION}判断服务是否就绪实例启动后模板的 UserData 会拉取 MAX 容器并启动服务。判断就绪的方式是看到容器日志中出现Server ready on http://0.0.0.0:8000AWS 上查看日志有两种方式在 AWS CloudWatch 控制台查看日志组/aws/ec2/${STACK_NAME}-logs、日志流instance-logs运行仓库提供的监控脚本它会轮询日志、探测健康检查并在服务就绪时输出提示bash notify.sh ${REGION} ${STACK_NAME} ${PUBLIC_IP}notify.sh 的逻辑最多等待 30 分钟每分钟从 CloudWatch 拉取日志一次依次检查镜像是否仍在拉取Pulling from modular/max-nvidia-full、http://$PUBLIC_IP/v1/health健康检查是否通过、日志中是否出现Building/Compiling/Downloading weight files for模型初始化中直到健康检查通过才判定服务就绪超时则报错退出。用公网 IP 验证 OpenAI 兼容端点服务就绪后向公网 IP 发送流式 chat completion 请求curl -N http://$PUBLIC_IP/v1/chat/completions \ -H Content-Type: application/json \ -d { model: modularai/Llama-3.1-8B-Instruct-GGUF, stream: true, messages: [ {role: system, content: You are a helpful assistant.}, {role: user, content: Who won the World Series in 2020?} ] } | grep -o content:[^]* | sed s/content://g | sed s///g | tr -d \n | sed s/\\n/\n/g-N禁用 curl 缓冲以配合stream: true末尾的管道用于从流式响应中提取content字段。请求返回模型生成的文本即表示端点工作正常。文档同时提示服务启动后云厂商暴露公网 IP 可能有短暂延迟请求报错时等待约一分钟再重试。请求体支持的其他 REST 参数可参考文档中引用的 chat completion API 参考。删除云端资源验证完成后为避免持续产生费用删除栈并等待删除完成aws cloudformation delete-stack --stack-name ${STACK_NAME} aws cloudformation wait stack-delete-complete \ --stack-name ${STACK_NAME} \ --region ${REGION}delete-stack会终止该栈创建的全部资源EC2 实例、EBS 卷、安全组、IAM 角色与日志组等执行前确认栈名无误。限制与已知边界模板的InstanceType目前只允许g5.4xlarge默认AmiId是us-east-1区域的 AMI换区域部署时文档未给出对应 AMI 的获取方式需要读者自行核对。教程把公网 IP 直接暴露到互联网文档明确说明这不适用于生产环境直接使用。该文档只覆盖 AWSCloudFormation同目录下的 GCPDeployment Manager与 AzureResource Manager路径使用各自模板不在本文范围内。文档建议用官方定价计算器评估 GPU 实例、网络传输、存储和日志等成本构成本教程未给出具体费用数值。【免费下载链接】mojoThe Modular Platform (includes MAX Mojo)项目地址: https://gitcode.com/GitHub_Trending/mo/mojo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表