ARTICLE DETAIL

资讯详情

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

用 SkyPilot SkyServe 跨云部署 Tabby:一份可复用的多副本服务配置指南

用 SkyPilot SkyServe 跨云部署 Tabby:一份可复用的多副本服务配置指南 用 SkyPilot SkyServe 跨云部署 Tabby一份可复用的多副本服务配置指南【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby本指南讲解如何借助 SkyPilot 的模型服务库 SkyServe把自托管 AI 编程助手 Tabby 以容器方式部署到你自己的云账号与 VPC 中实现跨区域/跨云的多副本对外服务。你将掌握从编写tabby.yaml服务配置、启动服务、理解健康检查与就绪探针到通过负载均衡地址接入编辑器扩展的完整链路并了解底层/metrics端点与tabby serve参数的真实实现。为什么选择 SkyPilot / SkyServe 运行 TabbyTabby 本身以tabby serve命令启动一个 HTTP API 服务入口见 main.rs单机部署非常简单。但当你想把 Tabby 稳定地跑在云端、按需扩缩副本时就需要解决三件事GPU 资源调度、多区域/多云分发、对外负载均衡。这正是 SkyPilot 与 SkyServe 的定位SkyPilot是一个面向 LLM、AI 与批处理任务的执行框架支持多家云厂商主打成本优化、GPU 可用性与托管执行。SkyServe即 SkyPilot Serving在其之上提供模型服务能力它接收一个已有的服务框架这里是 Tabby 的容器镜像并将其部署到一个或多个区域/云上由 SkyServe 的负载均衡器统一对外暴露。使用 SkyServe 后所有 Tabby 副本都会无缝运行在你自己的云账号和 VPC 内数据不出租户边界。本文对应的完整可运行配置见 tabby.yaml。第一步编写 SkyServe 服务配置SkyServe 使用一个 YAML 文件描述整个服务其中包含三个关键部分资源需求resources、服务定义service与启动命令run。resources声明 GPU 与端口resources: ports: 8080 accelerators: T4:1 # Or, allow using any of these GPUs to enhance GPU availability. # SkyPilot will auto-select the cheapest and available GPU. # accelerators: {T4:1, L4:1, A100:1, A10G:1}ports: 8080声明容器监听并需要暴露的端口。Tabby 的serve命令默认监听0.0.0.0:8080见 serve.rs 中host与port参数的默认值因此这里与 Docker 端口映射保持一致。accelerators: T4:1指定需要一块 NVIDIA T4 GPU。注释中的备选写法accelerators: {T4:1, L4:1, A100:1, A10G:1}当某类 GPU 在特定云区域缺货时SkyPilot 会自动从候选列表中挑选当前最便宜且可用的 GPU 完成调度从而显著提升 GPU 可用性、避免因单一机型缺货而排队。SkyPilot 支持多家云厂商的 GPU 实例安装 SkyPilot 的详细步骤请参阅官方安装文档。service就绪探针与副本数service: readiness_probe: /metrics replicas: 1SkyServe 需要一个 HTTP 就绪探针来判断副本是否健康、可被纳入负载均衡。Tabby 恰好把健康检查与 Prometheus 指标暴露在同一个端点/metrics上因此可以直接复用它readiness_probe: /metrics这个端点由 axum-prometheus 中间件与路由共同提供。在 routes/mod.rs 中Tabby 创建PrometheusMetricLayer后在/metrics上挂载metrics::metrics处理器处理器本身只是渲染 Prometheus 的指标快照见 routes/metrics.rs。探针请求/metrics只要返回 200即认为副本就绪同时该端点天然承担了 Prometheus 抓取任务方便你在同一地址上做监控告警无需额外暴露端口。replicas: 1定义 Tabby 服务副本数可按需横向扩展为多副本由 SkyServe 的负载均衡器统一分发请求。run真正启动 Tabby 容器的命令run: | docker run --gpus all -p 8080:8080 -v ~/.tabby:/data \ tabbyml/tabby \ serve --model TabbyML/StarCoder-1B --device cuda逐段拆解--gpus all将宿主机全部 GPU 透传给容器供 Tabby 推理使用。-p 8080:8080把容器内 8080 端口映射到宿主机的 8080 端口与resources.ports声明一致。-v ~/.tabby:/data把宿主机的~/.tabby目录挂载为容器内的/data。~/.tabby正是 Tabby 的默认数据根目录TABBY_ROOT当未设置环境变量TABBY_ROOT时路径解析为home_dir().join(.tabby)见 path.rs模型缓存、索引与事件日志都存放在其中。挂载后副本重启或重建时模型与索引无需重新下载避免重复拉取大文件。serve --model TabbyML/StarCoder-1B --device cuda启动 Tabby API 服务。--model指定模型标识此处为 StarCoder-1B首次运行时自动下载--device cuda指定推理设备。关于--device源码中通过 clap 枚举定义了全部可选值cpu、cuda、rocm、metal、vulkan默认值为cpu见 main.rs 与 serve.rs。在 GPU 云实例上应显式指定--device cudaAMD 卡用rocm。此外serve还支持--parallelism默认 1增大可提升并发吞吐但会显著增加 GPU 显存占用等参数见 serve.rs可按模型与显存情况调整。第二步启动服务配置文件就绪后执行sky serve up tabby.yaml -n tabby-n tabby为该服务命名后续日志查看、状态查询都以此名引用。运行成功后你会看到 SkyServe 先启动了一个控制 VMcontrol VM上面运行着该服务的负载均衡器而真正运行 Tabby 的副本实例此时还在预置中。第三步确认副本就绪在副本预置完成前访问负载均衡地址会得到一个明确的服务端错误响应。例如教程中负载均衡地址为http://44.203.34.65:30001时$ curl -L http://44.203.34.65:30001/metrics {detail:No available replicas. Use \sky serve status [SERVICE_NAME]\ to check the replica status.}%这里-L跟随负载均衡器的重定向30001是 SkyServe 对外暴露的服务端口。返回的 JSON 提示当前没有可用副本并指引你用sky serve status tabby查看副本状态。接下来通过查看副本日志来跟踪 Tabby 作业的启动进度# Tailing the logs of replica 1 for the tabby service sky serve logs tabby 1当 Tabby 就绪后日志中会出现类似下面的信息对应教程截图服务版本号、监听地址等启动横幅。此时再次访问http://44.203.34.65:30001/metrics就能正常返回 Prometheus 指标文本说明副本已通过就绪探针并被纳入负载均衡。部署流程中的三个关键节点截图可对照查看启动服务sky serve up执行输出、控制 VM 就绪负载均衡器就绪消息、Tabby 就绪副本日志显示服务开始监听。第四步在编辑器扩展中使用负载均衡地址服务就绪后负载均衡 URL教程中为http://44.203.34.65:30001即为所有 Tabby 客户端可用的服务端地址。把它填入 Tabby 编辑器扩展的服务器配置项即可在 VS Code 扩展中将该地址配置为 Tabby 服务器 URL详见 clients/vscode 的配置说明在 JetBrains 系插件中于设置里填入相同地址见 clients/intellij。由于 SkyServe 会把请求分发到多个区域的副本即使某个区域的副本发生故障负载均衡器也能自动把流量导向健康副本从而获得比单机部署更高的可用性。小结一份可复用的部署清单把上面的内容汇总成一条可复用的操作路径安装 SkyPilot 并完成至少一个云厂商的凭据配置复制 tabby.yaml按需调整accelerators单机型或候选列表、replicas、--model与--device执行sky serve up tabby.yaml -n tabby启动服务用sky serve status tabby与sky serve logs tabby 1跟踪副本状态直到/metrics返回 200将 SkyServe 的负载均衡 URL 填入编辑器扩展即可开始使用。得益于/metrics端点同时承担健康检查与指标暴露的双重职责Tabby 与 SkyServe 的探针机制可以零额外配置地衔接而~/.tabby数据目录的挂载则让副本在重建时免于重复下载模型这两点是让 SkyServe 部署保持稳定与高效的关键细节。【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表