ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

BentoML Codespaces:在云端 GPU 上用本地 IDE 开发 AI 应用(附 bentoml code 全流程解析)

BentoML Codespaces:在云端 GPU 上用本地 IDE 开发 AI 应用(附 bentoml code 全流程解析) 模型推理服务人工智能后端大模型MLOpsLLMOps【免费下载链接】BentoMLThe easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!项目地址https://gitcode.com/gh_mirrors/be/BentoML点击查看免费下载本篇围绕 BentoML 的 Codespaces 功能展开它是 BentoCloud 上的一种云端开发平台用于解决本地 GPU 资源有限、容器镜像构建拖慢迭代、开发与生产环境不一致这三类典型痛点。读完本文你将掌握如何创建、测试、构建与结束一个 Codespace理解其本地-云端实时热重载的同步机制及其边界并能从源码层面看懂bentoml code背后的监听与推送逻辑。Codespaces 解决什么问题传统 AI 应用开发中三个环节反复消耗开发者的时间本地 GPU 资源有限本地开发机通常无法获得多种高性能 GPU模型调参、推理验证受限迭代周期长每改一次代码都要重新构建容器镜像反馈链条缓慢环境不一致本地与生产环境的依赖、系统包、行为差异导致本地能跑、线上报错。Codespaces 的思路是把开发环境整体搬到云端你的本地 IDE 保持正常使用习惯但应用实际运行在与生产环境一致的 BentoCloud 环境中可以使用云端 GPU。同时本地代码变更会被自动热重载hot-reload同步到云端 Codespace实现快速且可靠的迭代。创建 Codespace前置条件是项目已按 运行环境文档 定义了运行时环境Bento 配置初学阶段可以直接使用 Hello World 示例项目 作为练习对象。基本命令在项目目录下执行bentoml code该命令会跟随交互式提示让你选择创建新 Codespace或附加attach到一个已有的 Codespace。创建完成后可以在 BentoCloud 控制台的Codespaces区块中看到它。结合 Secrets 注入敏感配置如果项目需要 API key 等敏感环境变量推荐先把它们创建为 BentoCloud Secrets参见 密钥与环境变量管理文档再在创建 Codespace 时挂载bentoml secret create huggingface HF_TOKENyour_hf_token bentoml code --secret huggingface命令参数与源码实现从 CLI 命令定义 可以看到bentoml code的完整参数面位置参数bento_dirBento 项目目录默认.必须是存在的可读目录--attach附加到指定名称的已有 deploymentCodespace 本质上是一种devTrue的 deployment而不是新建--env keyvalue传入环境变量可重复--secret name挂载指定名称的 Secrets可重复--cluster指定目标集群其余为build_args_option注入的构建参数。其中有两条值得注意的运行时行为互斥校验--attach不能与--env/--secret同时使用违反时会抛出CLIException(Cannot specify both --attach and --env or --secret)见 deployment.py。可附加的 Codespace 筛选逻辑不带--attach运行时CLI 会拉取当前用户名下状态为Deploying、Running、ScaledToZero或Failed的 dev 型 deployment 供你选择见 deployment.py选择新建时若不提供名称会基于 service 自动生成随机名称然后以devTrue, waitFalse的方式调用create_deployment创建。测试你的应用本地-云端实时同步Codespace 启动后即可通过其暴露的 endpoint URL 直接调用测试。开发期间本地与 Codespace 之间的变更会自动双向可见——本地代码更新会实时反映到远端并触发自动重载。可自动同步的变更BentoML Service 代码包括新增或删除 Service模型文件系统包system packagesPython 依赖requirements无法同步的变更Python 版本Codespaces 当前使用 Python 3.11基础镜像base image与 Docker 选项这一点与源码实现完全对应在 deployment.py 的 watch 方法 中watch_filter明确把监听范围限定为DEFAULT_BENTO_BUILD_FILES即bentofile.yaml与pyproject.toml定义见 bento.py、requirements.txt、setup.sh、post_setup.sh以及bentofile.yaml中 include/exclude 规则匹配的文件——这正是文档所述Service 代码、模型、系统包、Python 依赖的可同步集合而镜像层面的配置不在同步通道内所以换 Python 版本或 base image 需要走常规构建/部署流程。同步机制的底层流程从 watch 方法实现 可以还原出完整的监听-推送循环文件监听使用watchfiles对bento_dir以及 editable 安装场景下的 BentoML 源码目录做变更监听Bento 变更检测每批变更后重新执行ensure_bento(..., reloadTrue)重新构建本地 Bento并用DeepDiff对比新旧 manifest。若 manifest 有差异例如新增/删除了 ServiceCLI 会打印 diff 并标记needs_update随后把新 Bento push 到 BentoCloud并以devTrue更新 deployment 配置触发 Codespace 配置级重载增量文件上传/删除对变更的具体文件逐条处理——存在则上传内容删除则调用delete_filesrequirements.txt的哈希变化会重新生成并上传setup.sh 变化触发重建当setup.sh系统包安装脚本的 MD5 变化时会给 Bento 打一个新 version 并强制走一次完整的配置更新路径从而在远端重新执行系统级安装状态护栏循环中每次都会检查 deployment 状态若落入Failed/Terminated/Terminating/Unhealthy立即终止 watch 并打印中止原因。日志流与调试Codespace 的日志会直接流式打印到你的终端提供实时的应用表现反馈实现上这是由 _tail_logs 完成的它同时维护一个心跳线程周期性请求 endpoint URL用终端提示符的颜色黄/绿反映服务就绪状态。此外可以在 Codespace 详情页使用提供的 endpoint URL 直接调试应用。构建 Bento开发完成后可以直接从 Codespace 构建正式的 Bento在 Codespace 详情页点击Build Bento按钮即可。构建成功后你可以在 Bento 列表中查看该产物并基于它创建 Deployment 进行正式部署。详情页同时还提供了等效的命令行入口bentoml build --push可将当前本地代码构建为 Bento 并推送到 BentoCloud该命令同样出现在 CLI 退出后的 Next steps 提示中见 watch 的 KeyboardInterrupt 分支。结束与重连 Codespace退出本地会话在终端按CtrlC即可退出 Codespace 会话。需要特别注意这不会终止远端 Codespace远端实例仍会继续运行。终止远端 Codespace若要真正停掉远端实例执行bentoml deployment terminate codespace_name对应实现是 deployment terminate 子命令它调用bentoml.deployment.terminate(name, clustercluster, waitwait)--wait选项可让命令阻塞直至实例进入 Terminated 状态。CLI 在 watch 被 CtrlC 中断时也会在终端自动提示这三条后续操作命令重新 attach、bentoml build --push、bentoml deployment terminate见 deployment.py。重连已有 Codespace要重新连接到之前创建的 Codespacebentoml code --attach codespace_name重连时 CLI 会通过bentoml.deployment.get(attach)获取该 deployment然后进入同一套deployment.watch(bento_dir)循环见 codespace 命令因此文档中这会把你当前的本地代码与远端 Codespace 同步的行为是有实现依据的attach 之后首次_init_deployment_files会用 MD5 对比本地文件与远端已有文件只上传有差异的部分见 deployment.py随后进入持续的增量监听。小结Codespaces 把开发机从本地搬到了 BentoCloudbentoml code一行命令即可创建与生产一致的云端开发环境Python 3.11云端 GPU 可用本地 IDE 的每次保存都会经watchfiles监听、manifest diff、增量文件上传三层机制实时同步并重载--secret/--env支持安全注入配置开发完成后一键 Build Bento 转入正式部署流程退出会话与终止实例是两回事分别对应CtrlC与bentoml deployment terminate。理解这些同步边界Python 版本与 base image 不可同步后你可以放心地用它替代改代码-构建镜像-部署的传统循环。赞分享模型推理服务人工智能后端大模型MLOpsLLMOps【免费下载链接】BentoMLThe easiest way to serve AI apps and models - Build Model Inference APIs, Job queues, LLM apps, Multi-model pipelines, and more!项目地址https://gitcode.com/gh_mirrors/be/BentoML点击查看免费下载相关推荐数据科学项目部署全流程Flask、Gradio、BentoML在Perfect-Roadmap中的应用数据科学项目部署全流程Flask、Gradio、BentoML在Perfect Roadmap中的应用 在数据科学领域模型部署是将算法成果转化为实际应用的关教程数据科学教育从像素到矢量diffvg图像矢量化技术详解与refine_svg.py实战案例从像素到矢量diffvg图像矢量化技术详解与refine_svg.py实战案例 diffvgDifferentiable Vector Graphics是图形学深度学习计算机视觉如何在云端IDE中使用Pretty TypeScript Errors提升开发效率GitHub Codespaces等环境配置指南如何在云端IDE中使用Pretty TypeScript Errors提升开发效率GitHub Codespaces等环境配置指南 Pretty TypeSc开发工具上一篇多语言安全评估不再难Sing-Guard-4b跨语言防护能力测试下一篇LaZagne多因素认证分析2FA绕过与会话劫持技术探讨创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表