使用 VM Builder 在 Azure 上快速部署预装 computervision-recipes 的 Ubuntu DSVM 环境

发布时间:2026/10/8 23:29:24

使用 VM Builder 在 Azure 上快速部署预装 computervision-recipes 的 Ubuntu DSVM 环境 计算机视觉深度学习【免费下载链接】computervision-recipesBest Practices, code samples, and documentation for Computer Vision.项目地址https://gitcode.com/gh_mirrors/co/computervision-recipes点击查看免费下载本篇文章围绕 computervision-recipes 仓库中contrib/vm_builder目录下的 VM Builder 工具展开详细介绍如何通过一条命令在 Azure 上自动创建一台预装完整 Computer Vision 代码与运行环境的 Ubuntu 数据科学虚拟机DSVM并通过 SSH 隧道在本地浏览器中直接使用仓库内的 Jupyter Notebook。读完本文你将掌握该工具的完整交互流程、底层 Azure CLI 调用链、输入校验与配额处理机制以及 VM 的日常维护与成本控制方法。工具定位面向 Computer Vision 工作负载的 DSVM 一键部署脚本contrib/vm_builder是 computervision-recipes 仓库中contrib贡献目录下的一个小型工具项目。根据 contrib/README.md 的说明contrib目录存放的是与仓库目标一致、但不属于主代码库的扩展内容这些代码不参与仓库的 DevOps 流水线测试可能未及时维护使用时需要自行甄别。VM Builder 在contrib的工具列表中定位为帮助用户创建一台带有 GPU 的 Ubuntu Data Science Virtual Machine并预先安装好 computervision-recipes 仓库开箱即可使用。该目录只包含两个文件见 contrib/vm_builderREADME.md使用说明文档本文的原始依据vm_builder.py全部逻辑所在的单文件 Python 脚本约 620 行不依赖任何独立安装包之外的第三方库仅使用prompt_toolkit做交互提示。官方文档明确强调该工具只在 Linux 或 Mac 上运行Windows 用户需要借助其他途径如 Azure 门户或 Azure CLI 手动创建 VM。使用前提在运行脚本之前需要确认以下前提条件一个有效的 Azure 订阅——创建 VM 会产生真实费用脚本源码的欢迎界面中也明确提示需要azure.microsoft.com上注册的订阅。已安装 Azure CLIaz命令——脚本在启动时会通过which(az)检测az是否存在于 PATH 中对应源码 check_az_cli_installed若未安装会直接打印提示并退出。网络与账号权限——执行过程中脚本会调用az login完成身份认证并代表你在订阅中创建资源组、虚拟机与执行远程脚本需要相应权限。快速开始一行命令启动交互式部署官方文档给出的启动方式极其简单在contrib/vm_builder目录下直接运行python vm_builder.py脚本随即进入一个交互式会话interactive session像问答向导一样逐项收集信息并在后台依次完成登录检查 → 列出订阅 → 收集配置 → 创建资源组 → 创建 DSVM → 远程安装仓库 → 输出连接信息。一次完整交互大致包含以下环节均对应源码vm_builder()主流程见 vm_builder.py步骤对应源码函数作用打印欢迎信息print_intro_dialogue说明工具用途、机型规格与注意事项检查 az CLIcheck_az_cli_installed确认az命令存在检查登录状态check_logged_in/log_in未登录则静默执行az login展示订阅列表show_accounts列出当前账号下的订阅收集订阅 IDprompt_subscription_id校验输入是否在订阅列表中收集 VM 名称prompt_vm_name校验命名规则收集区域prompt_region校验是否为合法 Azure 区域选择 GPU/CPUprompt_use_gpu询问是否使用 GPU 机型收集用户名/密码prompt_username/prompt_password校验强度并二次确认配额检查check_quota不足时提示改用 CPU创建资源组create_rgaz group create创建虚拟机create_vmaz vm create获取公网 IPget_vm_ipaz vm show -d远程安装仓库install_repoaz vm run-command invoke输出总结print_exit_dialogue打印连接与维护命令交互式部署流程详解源码级下面按脚本实际执行顺序结合 vm_builder.py 源码逐环节展开。环境检查与 Azure 登录脚本先输出一段欢迎信息说明将创建基于Ubuntu DSVM 镜像的虚拟机并给出两种机型规格详见下文。随后调用check_az_cli_installed()校验 Azure CLI通过后执行check_logged_in()通过探测az account list的 stderr 是否包含az login来判断登录状态。若未登录则静默执行az login --query [?n]|[0]若已登录则打印绿色提示“Looks like youre already logged in.”跳过登录环节。订阅 ID 与区域的校验登录后脚本先执行az account list -o table展示全部订阅然后要求用户粘贴订阅 ID。校验逻辑prompt_subscription_id通过命令az account list --query [].id -o tsv拿到合法 ID 列表用户输入必须精确命中列表中的一项否则会反复提示重试。区域校验prompt_region同理合法区域来自az account list-locations --query [].name -o tsv如果输入非法脚本会提示可自行运行az account list-locations查看全部区域例如典型的eastus。VM 命名规范VM 名称的校验规则定义在 validate_vm_name要点如下长度必须为161 个字符上限 64 减去 3因为脚本会自动以{vm_name}-rg生成资源组名需为-rg后缀预留 3 个字符只能包含字母、数字与连字符正则表达式为^[A-Za-z0-9-]*$。源码注释同时提示了资源组的自动命名约定这一点对后续维护很重要VM 与资源组是一一绑定的删除资源组即可连带清理 VM 及其附属资源。GPU 与 CPU 机型选择脚本允许在 GPU 与 CPU 两种规格间选择两种规格定义在源码顶部的vm_options字典中vm_builder.py选项VM 大小实例族核心数说明来自脚本欢迎界面GPUStandard_NC6s_v3NCSv36配备 NVIDIA Tesla V100 GPU成本更高CPUStandard_DS3_v2DSv24通用计算型成本较低欢迎界面会明确提示 GPU 机型“会带来更高的成本”It will incur a higher cost并询问Do you want to use a GPU-enabled VM [y/n]。选择 GPU 后若配额不足脚本会提供“降级到 CPU”的兜底选项详见下文配额检查。用户名与密码强度校验密码强度由 validate_password 强制校验规则如下长度在12123 个字符之间必须同时包含大写字母与小写字母必须包含数字必须包含特殊字符通过[\W_]正则检测。输入密码时使用prompt(..., is_passwordTrue)隐藏回显并要求二次输入确认两次不一致会提示重试prompt_password。用户名仅要求非空prompt_username。配额检查与 CPU 降级兜底在真正创建 VM 之前脚本会先做一次配额预检check_quota通过命令az vm list-usage --location {region} --query [?contains(localName,{family})].{{max:limit,current:currentValue}}获取所选实例族在当前区域的配额上限与已用量并计算剩余可用核心数get_available_quota。若剩余配额小于所选机型所需核心数脚本会提示配额不足并询问是否改用 CPU 机型Do you want to switch to using a CPU instead? (This will likely solve your out-of-quota problem) [y/n]选择“是”则自动切换为 CPU 规格继续部署选择“否”则直接退出。GPU 配额通常比 CPU 紧张这个兜底设计可以有效避免“配额报错导致流程中断”。底层调用链脚本在云端做了什么确认完所有输入后脚本按以下顺序在 Azure 上执行部署对应的 CLI 命令都定义在源码顶部的命令常量中vm_builder.py。第一步创建资源组az group create --name {vm_name}-rg --location {region}资源组名称固定为{vm_name}-rg。创建成功后脚本会打印绿色成功提示create_rg。第二步创建 Data Science 虚拟机az vm create --resource-group {vm_name}-rg --name {vm_name} --size {size} \ --image microsoft-dsvm:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest \ --admin-username {username} --admin-password {password} --authentication-type password关键参数说明--image使用Ubuntu Data Science Virtual Machine 官方镜像URN 为microsoft-dsvm:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest见源码常量 UBUNTU_DSVM_IMAGE该镜像预装 Anaconda、Jupyter 等数据科学组件--size由上文 GPU/CPU 选择决定Standard_NC6s_v3或Standard_DS3_v2认证方式为密码认证--authentication-type password。创建过程耗时数分钟随后通过az vm show -d查询公网 IPget_vm_ip。第三步远程执行仓库安装脚本VM 就绪后脚本借助az vm run-command invoke在远端执行安装脚本install_repo实际发送到 VM 的 Shell 脚本如下export PATH/anaconda/bin:$PATH conda remove -n cv --all cd /home/{username} rm -rf computervision git clone https://www.github.com/microsoft/computervision chmod 777 computervision cd computervision conda env create -f environment.yml source activate cv python -m ipykernel install --user --name cv --display-name Python (cv) jupyter notebook --port 8899 --allow-root --NotebookApp.token --NotebookApp.password 这段脚本完成了四件事克隆仓库到用户主目录并放开目录权限用仓库根目录的 environment.yml 构建名为cv的 conda 环境。该环境文件固定了一批关键依赖版本例如 Python 3.7.6、PyTorch 1.2.0、torchvision 0.4.0、fastai 1.0.57、Jupyter、ipykernel以及azureml-sdk[notebooks,contrib]、decord、einops等训练与数据处理相关包将cv环境注册为 Jupyter kernel显示名为Python (cv)这样 Notebook 页面中就能直接选择该环境在 8899 端口后台启动 Jupyter Notebook。安装完成后脚本打印“Successfully installed the repo on the machine.”。连接与使用SSH 隧道访问 Jupyter官方文档给出的使用方式是通过 SSH 本地端口转发访问 Jupyter。在本地机器Linux/Mac上执行ssh -L 8899:localhost:8899 usernameip-address将远端 8899 端口映射到本机 8899 端口然后在浏览器中打开http://localhost:8899即可看到已就绪的 computervision-recipes 仓库与各场景 Notebook如scenarios/classification、scenarios/detection等配合前面注册的cvkernel 直接运行。这与 SETUP.md 中描述的本地环境安装步骤conda env create -f environment.ymlpython -m ipykernel install逻辑一致只不过全部由脚本在云端自动完成。VM 生命周期管理与成本控制部署完成后脚本会输出一份“建议保存”的 VM 信息摘要print_exit_dialogue包括 VM 名称、公网 IP、区域、用户名、资源组{vm_name}-rg与订阅 ID并附上四条关键运维命令操作命令停止 VMaz vm stop -g {vm_name}-rg -n {vm_name}启动 VMaz vm start -g {vm_name}-rg -n {vm_name}SSH 连接带端口转发ssh -L 8899:localhost:8899 {username}{vm_ip}删除 VM不可恢复az group delete -n {vm_name}-rg脚本的退出提示会特别强调虚拟机持续产生费用请记得在闲置时停止它以控制成本。若不再需要整个环境直接删除{vm_name}-rg资源组即可一次性清理 VM 及其附属网络、磁盘资源。注意事项与常见问题结合源码实现使用过程中有几点值得特别留意平台限制脚本仅在 Linux/Mac 上运行依赖subprocess调用az与sshWindows 下会失败配额不足GPU 机型配额不足时脚本会引导降级到 CPU 机型若仍失败可联系 Azure 支持提升对应实例族的区域配额密码规则严格必须满足 12123 字符、大小写、数字与特殊字符四类要求且二次输入需一致网络安全提醒由源码推断从安装脚本可见Jupyter 以--allow-root启动且关闭了 token/password 认证--NotebookApp.token这意味着任何能访问 8899 端口的人都可以直接操作 Notebook。脚本依赖 SSH 隧道将服务仅暴露给本机请勿在公网直接开放该端口若需更强的隔离建议部署后自行补充认证或网络安全组NSG配置仓库地址说明安装脚本克隆的是脚本内硬编码的microsoft/computervision仓库地址克隆后的环境与本仓库computervision-recipes的 environment.yml 对应一致如仓库地址变动导致克隆失败可参考 contrib/README.md 的提示改用 Azure 门户或 Azure CLI 手工完成同样的步骤。延伸与 VMSS Builder 的关系在contrib目录中与 VM Builder 定位互补的还有 vmss_builder它基于 Azure 虚拟机规模集VMSS批量创建多台 DSVM并为每台机器配置多个 JupyterHub 用户适用于需要临时为多人准备实验环境如 hands-on / lab 场景的情况。VM Builder 则聚焦单台DSVM 的快速开通适合个人开发或小团队先跑通工作流两者共享“DSVM conda 环境 Notebook 开箱即用”的设计思路。总而言之VM Builder 把“开通 Azure VM、克隆仓库、构建 conda 环境、注册 kernel、启动 Jupyter”这一连串手工操作压缩成了python vm_builder.py一条命令配合交互式校验与配额兜底是快速获得一套可运行 computervision-recipes Notebook 的云端实验环境的低成本方案。赞分享计算机视觉深度学习【免费下载链接】computervision-recipesBest Practices, code samples, and documentation for Computer Vision.项目地址https://gitcode.com/gh_mirrors/co/computervision-recipes点击查看免费下载相关推荐终极DeepLearningPython部署指南在Ubuntu 16.04上配置CUDA环境的完整教程终极DeepLearningPython部署指南在Ubuntu 16.04上配置CUDA环境的完整教程 DeepLearningPython是一个为Pytho5分钟快速部署Web版Ubuntu桌面环境docker-ubuntu-vnc-desktop终极指南5分钟快速部署Web版Ubuntu桌面环境docker ubuntu vnc desktop终极指南 docker ubuntu vnc desktop是一个虚拟化在 Azure 上使用 Packer 与 Terraform 快速搭建 Nomad 集群沙箱环境在 Azure 上使用 Packer 与 Terraform 快速搭建 Nomad 集群沙箱环境 本文是一份基于 Nomad 官方仓库 terraform/az任务调度云原生运维后端上一篇ComfyUI 工作流预设合集拖入 JSON 就能出图的中文工作流仓库下一篇如何通过ReAct模式实现AI Agent的迭代检索从理论到实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/8 23:29:24

openGym导入Strong训练数据:3步带走过往所有记录

openGym导入Strong训练数据:3步带走过往所有记录 【免费下载链接】openGym Self-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNo…

2026/10/8 23:29:24

OpenAkita完整入门:5分钟搭建你的多智能体AI助手终极指南

OpenAkita完整入门:5分钟搭建你的多智能体AI助手终极指南 【免费下载链接】openakita An open-source AI assistant framework with skills and agent architecture 项目地址: https://gitcode.com/gh_mirrors/op/openakita OpenAkita 是一款开源的多智能体 …

2026/10/8 23:24:23

TPS259483+PIC18LF47K40:嵌入式电源路径保护方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑