ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用 SkyPilot 在自有云或 Kubernetes 上私有部署 Pixtral 12B 多模态模型

用 SkyPilot 在自有云或 Kubernetes 上私有部署 Pixtral 12B 多模态模型 用 SkyPilot 在自有云或 Kubernetes 上私有部署 Pixtral 12B 多模态模型【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot本指南讲解如何使用 SkyPilot 将 Mistral 于 2024 年 9 月发布的首个多模态模型 Pixtral 12B以 vLLM 推理引擎为载体私有部署到自有云账号或 Kubernetes 集群上并对外提供 OpenAI 兼容的/v1/chat/completions接口。你将掌握从环境准备、任务 YAML 配置、单机一键启动到基于 SkyServe 的多副本服务化扩容与端点管理的完整实战链路。Pixtral 12B 与私有化部署的适用场景Pixtral 12B模型标识mistralai/Pixtral-12B-2409是 Mistral AI 于 2024 年 9 月 11 日发布的第一个多模态模型能够同时接受文本与图像输入支持看图说话、图像内容理解等场景。相较调用托管 API把它部署在自己的云账号或 Kubernetes 集群上意味着数据不出租户图像与提示词只经过你自己账号内的 GPU 与网络满足数据合规与隐私要求复用已有资源直接利用你账号下已开通的 GPU 配额、已有 K8s 集群或 Spot 实例降低成本统一编排由 SkyPilot 完成资源调度、环境搭建与端口暴露无需手工在云控制台上创建实例、配安全组和 SSH。仓库中对应的示例位于 llm/pixtral/README.md使用说明与 llm/pixtral/pixtral.yaml可运行的完整任务配置下文将围绕这两份文件逐层展开。前置准备安装 SkyPilot 并检查云端/集群连通性在本地机器你的运维工作站安装 SkyPilot 并检查各云的可用性pip install skypilot[all] sky checkskypilot[all]会一并安装 AWS、GCP、Azure、Kubernetes 等全部云提供商的接入依赖如果你只使用 Kubernetes 或特定单一云可以改为skypilot[kubernetes]等更精简的安装方式详见 agent/INSTALL.md 与 docs/source/getting-started/installation.rst。sky check会探测本地环境中各云账号凭据如~/.aws/credentials、gcloud auth等与 kubeconfig 是否可用并列出已启用enabled的云。确认至少有一个云或 Kubernetes 处于 enabled 状态后即可继续。逐段拆解 pixtral.yaml 部署配置llm/pixtral/pixtral.yaml 是本次部署的唯一任务描述文件包含环境变量、服务规格、资源需求、安装脚本与启动命令五部分envs: MODEL_NAME: mistralai/Pixtral-12B-2409 HF_TOKEN: service: replicas: 2 # An actual request for readiness probe. readiness_probe: path: /v1/chat/completions post_data: model: $MODEL_NAME messages: - role: user content: - type: text text: Are you alive? max_tokens: 1 resources: accelerators: {L40, L40S, A100, A100-80GB} cpus: 2 disk_tier: best ports: 8081 # Expose to internet traffic. setup: | # Requires 0.6.1 for Pixtral support. pip install vllm0.6.1 run: | echo Starting vllm api server... export OMP_NUM_THREADS8 vllm serve $MODEL_NAME --tokenizer_mode mistral \ --limit_mm_per_prompt image4 \ --max_num_batched_tokens 16384 \ --max-model-len 10240 \ --port 8081envs模型标识与鉴权令牌MODEL_NAME: mistralai/Pixtral-12B-2409模型在 Hugging Face 上的仓库标识vLLM 启动时会据此从 HF 拉取权重。HF_TOKEN:默认留空。如果模型仓库需要鉴权私有仓库或受控访问在此填入你的 Hugging Face 访问令牌它会被注入到运行环境中供 vLLM 使用。建议通过sky launch --env HF_TOKEN...等方式传入避免把真实令牌写死在 YAML 中。serviceSkyServe 服务规格仅用于服务化模式service段只在通过sky serve up部署时生效描述的是 SkyServe 的控制面行为replicas: 2固定 2 个副本。SkyServe 会在不同可用区/云之间分配这些副本提高可用性并降低单点故障风险关于副本策略的更多字段如min_replicas、max_replicas、target_qps_per_replica自动扩缩容配置可参考 docs/source/serving/autoscaling.rst。readiness_probe健康检查。这里不是简单 GET 一个路径而是发一次真实的推理请求来确认模型已就绪path: /v1/chat/completions探测目标端点post_dataPOST 请求体向模型发送一段文本Are you alive?并设置max_tokens: 1以最小代价触发一次完整前向推理只有探测通过后副本才会被标记为就绪并接收外部流量。从源码实现看readiness_probe支持更细的配置项initial_delay_seconds副本启动后延迟多久开始探测、timeout_seconds单次探测超时、endpoint_probe_interval_seconds探测间隔、headers自定义请求头以及consecutive_failure_threshold_timeout等这些都在 sky/serve/service_spec.py 的SkyServiceSpec构造参数与 sky/serve/service_spec.py 的 YAML 解析逻辑中定义并给出默认值。resourcesGPU、CPU、磁盘与端口accelerators: {L40, L40S, A100, A100-80GB}花括号语法表示一组候选加速卡SkyPilot 会按价格与可用性自动择优选择其中任意一种即可满足的实例类型。Pixtral 12B 参数量约 12B这些 40GB 显存的卡足以承载其权重与多模态输入。cpus: 2至少 2 个 vCPU。disk_tier: best优先选择 SSD/本地 NVMe 这类高性能磁盘加快模型权重下载与缓存读取。ports: 8081向公网暴露 8081 端口vLLM 的 OpenAI 兼容服务监听该端口sky status --endpoint 8081正是据此查询集群对外地址。setup环境初始化脚本pip install vllm0.6.1关键约束必须使用 vLLM 0.6.1这是首个官方支持 Pixtral 的 vLLM 版本。安装脚本会在实例创建后自动执行保证每个副本都具备一致的推理环境。runvLLM 服务启动参数export OMP_NUM_THREADS8 vllm serve $MODEL_NAME --tokenizer_mode mistral \ --limit_mm_per_prompt image4 \ --max_num_batched_tokens 16384 \ --max-model-len 10240 \ --port 8081--tokenizer_mode mistral使用 Mistral 原生 tokenizer 模式Pixtral 的 tokenizer 需要该模式才能正确分词。--limit_mm_per_prompt image4限制每个 prompt 最多携带4 张图像防止多模态输入放大显存占用。--max_num_batched_tokens 16384单批调度的最大 token 数含图像 token控制吞吐与显存之间的平衡。--max-model-len 10240模型最大上下文长度文本 token 数同时约束了图像经视觉编码器换算后的 token 占用。--port 8081与resources.ports保持一致。方式一单机一键部署sky launch在安装好 SkyPilot 并确认云/K8s 可用后直接在仓库目录下启动sky launch -c pixtral pixtral.yaml-c pixtral为该集群命名后续所有查询命令都复用这个名字SkyPilot 会完成选云 → 建实例/调度 Pod → 执行 setup → 启动 vLLM → 暴露端口的全流程期间无需手工登录云控制台。启动完成后获取对外端点ENDPOINT$(sky status --endpoint 8081 pixtral)sky status --endpoint 端口 集群名会输出该集群上指定端口的公网地址该命令行参数在 sky/client/cli/command.py 中定义同一集群还可配合--endpoints一次性列出所有暴露端口。随后用 OpenAI 兼容格式发起一次多模态推理请求——下面的例子同时向模型发送两张图像请求它分别描述curl http://$ENDPOINT/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer token \ --data { model: mistralai/Pixtral-12B-2409, messages: [ { role: user, content: [ {type : text, text: Describe this image in detail please.}, {type: image_url, image_url: {url: https://s3.amazonaws.com/cms.ipressroom.com/338/files/201808/5b894ee1a138352221103195_A680%7Ejogging-edit/A680%7Ejogging-edit_hero.jpg}}, {type : text, text: and this one as well.}, {type: image_url, image_url: {url: https://www.wolframcloud.com/obj/resourcesystem/images/a0e/a0ee3983-46c6-4c92-b85d-059044639928/6af8cfb971db031b.png}} ] }], max_tokens: 1024 } | jq .要点说明model字段必须与MODEL_NAME一致mistralai/Pixtral-12B-2409文本与图像以content数组混合排列通过{type: text}与{type: image_url, image_url: {url: ...}}交替表达这正是 OpenAI 多模态协议的标准写法image_url.url既支持公网可访问的图片链接也可替换为 base64 data URI 等 vLLM 支持的图片编码Authorization: Bearer token为占位鉴权头vLLM 默认不校验可保持原样或省略。模型返回内容解析版会给出两段详细描述例如对第一张图描述三位在绿荫公园中慢跑的人左男、中女、右女的衣着与神态对第二张图描述一家五口穿红色套装在影棚中合影的细节。原始响应的结构如下{ id: chat-5733a2abfd664a019c7c61e38bb6603c, object: chat.completion, created: 1726103777, model: mistralai/Pixtral-12B-2409, choices: [ { index: 0, message: { role: assistant, content: Sure! Let me describe the images for you. ..., tool_calls: [] }, logprobs: null, finish_reason: stop, stop_reason: null } ], usage: { prompt_tokens: 4457, total_tokens: 4764, completion_tokens: 307 }, prompt_logprobs: null }usage字段值得注意两张图像被视觉编码器换算为约 4400 个 prompt token说明多模态输入的实际 token 开销远大于文本本身这正是--max-model-len 10240与--limit_mm_per_prompt image4需要预留余量的原因。方式二SkyServe 多副本服务化sky serve up单机sky launch适合开发验证若要对外提供稳定服务、需要负载均衡与故障恢复则用 SkyServe 将其服务化sky serve up -n pixtral pixtral.yamlSkyServe 是 SkyPilot 的模型服务组件它会启动一个轻量控制面根据 YAML 中的service段拉起 2 个副本副本可分布在不同区域/云上并自动完成健康检查、负载均衡、扩缩容与故障恢复——所有副本仍运行在你自己的云账号或 Kubernetes 集群内数据不外泄。机制概述可参考 docs/source/serving/sky-serve.rst。查看服务状态sky serve status pixtral输出会展示每个副本的所在位置、健康状态与就绪情况。获取统一入口端点ENDPOINT$(sky serve status --endpoint pixtral)这个端点由 SkyServe 控制面维护命令行提示可在 sky/serve/server/impl.py 中看到sky serve status service [--endpoint]的用法说明请求会被负载均衡地分发到各副本。向服务端点发送推理请求——下面的例子让模型把一张图片 logo 转换为 ASCII 艺术字curl http://$ENDPOINT/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer token \ --data { model: mistralai/Pixtral-12B-2409, messages: [ { role: user, content: [ {type : text, text: Turn this logo into ASCII art.}, {type: image_url, image_url: {url: https://pbs.twimg.com/profile_images/1584596138635632640/HWexMoH5_400x400.jpg}} ] }], max_tokens: 1024 } | jq .模型返回解析版大致如下______ ___// __\____ / __ \ __/ __\ |_\ \_\\___ ____ ___\ \/ \/ \/ \/原始 JSON 响应的usage显示该次请求的 prompt token 仅为 660、completion 56说明单图任务开销远小于上文的两图任务验证了 4 图上限--limit_mm_per_prompt image4的设计余量。服务生命周期运维命令服务化部署后常用运维命令均见 sky/serve/server/impl.py 的提示输出如下命令作用sky serve status pixtral查看服务与各副本状态sky serve status --endpoint pixtral获取服务统一端点sky serve logs pixtral查看副本日志sky serve logs --load-balancer pixtral查看负载均衡器日志sky serve down pixtral销毁服务含全部副本对于sky launch单机模式对应的管理命令是sky status pixtral查看集群与端点、sky logs pixtral查看日志与sky down pixtral释放集群。注意事项与限制vLLM 版本强约束必须使用vllm0.6.1更高或更低版本均可能缺失 Pixtral 的视觉支持或引入兼容问题配置文件 llm/pixtral/pixtral.yaml 中已注明 Requires 0.6.1 for Pixtral support。HF_TOKEN若无法从 HF 下载权重网络受限或模型为受限访问请先在envs.HF_TOKEN配置有效令牌或使用已预置镜像的节点。GPU 适配范围资源配置声明了 L40/L40S/A100/A100-80GB 四类候选卡其他 GPU如 H100、A10G需显存足够方可运行可自行调整accelerators列表。每请求图像上限默认每个 prompt 最多 4 张图更多图像会报错或被截断可通过修改--limit_mm_per_prompt调整但需同时评估显存。SkyServe 处于 beta 阶段官方文档 docs/source/serving/sky-serve.rst 明确提示其适合内部服务与批量推理场景对外生产级服务请评估其成熟度与安全加固需求。占位鉴权示例中的Authorization: Bearer token为占位值如需真实鉴权可参考 docs/source/serving/auth.rst 配置认证。小结通过 llm/pixtral/pixtral.yaml 这一份 YAML你可以在自己的云账号或 Kubernetes 集群上完成 Pixtral 12B 的私有部署sky launch -c pixtral pixtral.yaml一键拉起单机服务并用sky status --endpoint 8081取端点sky serve up -n pixtral pixtral.yaml将其升级为多副本高可用服务并用sky serve status --endpoint取统一入口。整套流程中模型权重、推理流量与日志都停留在你自己的基础设施内而 SkyServe 负责负载均衡、健康检查与副本管理让多模态模型以 OpenAI 兼容接口的方式对外提供可编程、可扩展的服务能力。【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表