基于 ROS 的Terraform托管服务轻松部署Qwen-VL-Chat

news2024/9/26 5:21:03

介绍

Qwen-VL是阿里云研发的大规模视觉语言模型(Large Vision Language Model)。Qwen-VL可以以图像、文本、检测框作为输入,并以文本和检测框作为输出。在Qwen-VL的基础上,利用对齐机制打造出基于大语言模型的视觉AI助手Qwen-VL-Chat,它支持更灵活的交互方式,包括多图、多轮问答、创作等能力,天然支持英文、中文等多语言对话,支持多图输入和比较,指定图片问答,多图文学创作等。

资源编排服务(Resource Orchestration Service, ROS)是阿里云提供基于基础设施即代码(Infrastructure as Code, IaC) 理念的自动化部署服务,我们可以通过定义一个 Terraform 模板,轻松部署云上的 Qwen-VL 模型。

⚠️说明:
Qwen-VL-Chat模型依照LICENSE开源,免费商用需填写商业授权申请。您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

部署步骤

  1. 登录ROS控制台 Qwen-VL 部署页面

  2. 配置模板参数:选择 ECS 实例的实例类型、可用区参数

  3. 点击【下一步】,然后点击【创建】进行资源部署。部署完成后,点击资源栈的输出,即可看到 Qwen-VL-Chat 服务的地址。点击链接即可体验 Qwen-VL-Chat 的功能。

  4. 单击Upload(上传文件)上传图片,然后在Input对话框中,输入对话内容,单击Submit(发送),即可开始图片问答、图片检测框标注等。

部署原理

我们可以看到通过 ROS 可以非常快捷地部署阿里云上的各种云资源(比如 VPC、VSwitch、ECS 实例等)和应用程序(比如 Qwen-VL-Chat)。如果想了解是如何做到的,那么可以阅读此章节。

  1. 编写 Terraform 模板。在如下模板中定义了:
  • resource:定义了 vpc、vswitch、ecs、安全组、安全组规则以及安装 Qwen-VL-Chat 的命令执行。
  • variable:定义了常用的参数,比如可用区、ECS实例类型类型。
  • output:定义了自定义输出,比如 Qwen-VL-Chat 服务的地址
variable "zone_id" {
  type        = string
  description = <<EOT
  {
    "AssociationProperty": "ZoneId",
    "Label": {
      "zh-cn": "可用区ID",
      "en": "Zone ID"
    }
  }
  EOT
}

variable "instance_type" {
  type        = string
  description = <<EOT
  {
    "Label": {
        "zh-cn": "实例类型",
        "en": "Instance Type"
    },
    "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
    "AssociationPropertyMetadata": {
      "Constraints": {
        "Memory": [
          64
        ]
      }
    }
  }
  EOT
  default     = "ecs.g8a.4xlarge"
}

resource "alicloud_vpc" "vpc" {
  vpc_name   = "qwen-vl-vpc"
  cidr_block = "192.168.0.0/16"
}

resource "alicloud_vswitch" "vswitch" {
  vpc_id     = alicloud_vpc.vpc.id
  zone_id    = var.zone_id
  cidr_block = "192.168.0.0/24"
}


resource "alicloud_security_group" "group" {
  vpc_id = alicloud_vpc.vpc.id
}

resource "alicloud_security_group_rule" "rule" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "7860/7860"
  priority          = 1
  security_group_id = alicloud_security_group.group.id
  cidr_ip           = "0.0.0.0/0"
}

resource "alicloud_instance" "ecs" {
  availability_zone          = var.zone_id
  security_groups            = alicloud_security_group.group.*.id
  instance_type              = var.instance_type
  system_disk_category       = "cloud_essd"
  image_id                   = "aliyun_3_x64_20G_alibase_20240528.vhd"
  instance_name              = "qwen-vl"
  vswitch_id                 = alicloud_vswitch.vswitch.id
  internet_max_bandwidth_out = 10
  system_disk_size = 100
  password = "Ros12345"
}

locals {
  command         = <<EOF
#!/bin/bash
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
sudo dnf -y install docker-ce --nobest
sudo systemctl start docker
sudo systemctl enable docker
sudo docker pull registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1
sudo docker run -d --name pytorch-amd --net host -v $HOME:/root registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1 sh -c "tail -f /dev/null" &
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20231213/owpj/deploy_qwen-vl-chat_amd-docker.sh
sed -i 's/hwloc / /' deploy_qwen-vl-chat_amd-docker.sh
sed -i 's/"python-einops"/python-einops --skip-broken/' deploy_qwen-vl-chat_amd-docker.sh
sed -i 's/@ 2>\&1/@ > output.log 2>\&1/' deploy_qwen-vl-chat_amd-docker.sh
sudo docker exec -w /root pytorch-amd sh -c '
chmod +x deploy_qwen-vl-chat_amd-docker.sh
./deploy_qwen-vl-chat_amd-docker.sh
pip install -r Qwen-VL/requirements.txt
pip install -r Qwen-VL/requirements_web_demo.txt
pip install -r Qwen-VL/requirements_openai_api.txt
./deploy_qwen-vl-chat_amd-docker.sh
'
EOF
  base_64_command = base64encode(local.command)
}

resource "alicloud_ecs_command" "command" {
  name            = "qwen-vl-command"
  command_content = local.base_64_command
  type            = "RunShellScript"
  timeout         = 7200
  working_dir     = "/root"
}

resource "alicloud_ecs_invocation" "default" {
  command_id  = alicloud_ecs_command.command.id
  instance_id = [alicloud_instance.ecs.id]
  timeouts {
    create = "7200s"
  }
}

output "Url" {
  description = <<EOT
  {
    "Label": "Web 访问地址",
    "Description": "Qwen VL Chat页面访问地址."
  }
  EOT
  value = format("http://%s:7860", alicloud_instance.ecs.public_ip)
}
  1. 在 ROS 控制台中使用此模板创建资源栈。ROS 会自动解析出模板中资源的依赖关系,按照资源依赖顺序创建云资源。如果资源间没有依赖,则会并发创建,从而提升部署效率。ROS 会把这次创建的所有资源存放到一个“资源栈”中,后续可以方便地管理这组资源集合。比如:
  • 将新模板应用到这个“资源栈”中,从而更新里面的资源。
  • 删除这个“资源栈”,从而把所有的资源删掉。

总结

基于 IaC 的理念,通过定义一个模板,使用 ROS 进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 Qwen-VL 模型)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是嵌入式?行业前景如何?

目录 什么是嵌入式&#xff1f; 主要特点 常见应用场景 1. 工业自动化 2. 交通运输 3. 智能家居 4. 消费电子 5. 医疗设备 6. 航空航天 7. 物联网&#xff08;IoT&#xff09; 8. 能源管理 行业前景如何&#xff1f; 市场需求强劲 物联网&#xff08;IoT&#xff09;的爆发 汽车…

vue3的基本使用(步骤,架构模式,调试工具,指令)

1.基本使用步骤 a.导入vue.js的script脚本文件&#xff08;自动为window对象挂载vue构造函数&#xff09; b.在页面中声明一个将要被vue控制的Dom区域 c.创建vue实例对象 <body><div id"app">{{msg}}</div> </body> </html> <s…

树形弹窗选择框/vue2/Element/弹框选择

前言 此类选择器根据vueelementUI实现&#xff0c;使用vue3的可以根据此案例稍作改动即可实现&#xff0c;主要功能有弹出选择、搜索过滤、搜索结果高亮等&#xff0c;此选择器只支持单选&#xff0c;如需多选可在此基础进行改造。 效果图 代码实现 使用时&#xff0c;props-…

文件备份的方法有哪些?应该怎么弄?分享六个高效便捷的电脑文件备份方法

我们的电脑中存储了大量重要文件&#xff0c;如照片、文档、视频以及重要资料等。 然而&#xff0c;面对突如其来的硬件故障、病毒攻击或人为误操作&#xff0c;这些数据仿佛都悬于一线。 虽然说可以选择的恢复方法有很多&#xff0c;但是没有任何一个方法可以做到100%的&…

【Mysql】记录sql在执行过程中很慢

在改之前的测试脚本,之前写了一些sql,这次准备顺手把sql也调整一下,因为虽然sql能用&#xff0c;但是写的十分拉跨 附sql 分析过程: 1. 初步推测慢主要是因为left join了好几张表。 然后我去查了也跟开发求证过sql在执行过程中是"先联表&#xff0c;再执行查询条件"…

SCADA|KingSCADA运行报错:加载网络服务失败

哈喽,你好啊,我是雷工! 今天要运行KingSCADA程序时报错:加载 网络服务失败 ,导致无法运行。 解决问题思路及过程记录如下: 01 问题描述 如下图所示,报加载 网络服务失败 ; 02 处理过程 软件运行信息窗口中会有详细的运行信息,可以先查看软件的信息窗口。 也可以在日…

bluez SPP使用

然后退出bluetoothctl&#xff0c;执行rfcomm listen /dev/rfcomm0 1&#xff0c;如果已被使用&#xff0c;则执行rfcomm release 0(执行该命令会有数据回显&#xff0c;既手机收到开发板发来的相同数据&#xff0c;若要关闭回显需要加上参数-r&#xff0c;开启raw mode) 手机上…

项目中常用注解整理

Mybatis/MybatisPlus TableName //用来将指定的数据库表和 JavaBean 进行映射TableId(type IdType.AUTO) //标记为数据库中的主键TableField(existfalse) //标记为数据库中不存在的字段&#xff0c;防止报错Paramparam标签提供了对某个函数的参数的各项说明&#xff0c;包括参…

CTF 竞赛密码学方向学习路径规划

目录 计算机科学基础计算机科学概念的引入、兴趣的引导开发环境的配置与常用工具的安装Watt Toolkit&#xff08;Steam&#xff09;、机场代理Scoop&#xff08;Windows 用户可选&#xff09;常用 Python 库SageMathLinux小工具 yafuOpenSSL Markdown编程基础Python其他编程语言…

@老板:图纸防泄密方法有哪些?图纸防泄密高招分享

图纸&#xff0c;就像是企业的秘密武器设计图纸&#xff0c;里面藏着产品的精髓和创新的火花。一旦这些图纸落入竞争对手之手&#xff0c;就像是自家的独门秘籍被外人偷学&#xff0c;后果不堪设想。因此&#xff0c;保护图纸不泄密&#xff0c;是每个企业都必须认真对待的大事…

【QT】常用类

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;QT 目录 &#x1f449;&#x1f3fb;QMediaPlayer&#x1f449;&#x1f3fb;QMediaPlaylistsetPlaybackMode &#x1f449;&#x1f3fb;QDir&#x1f449;…

stm32驱动HX711称重传感器 c++代码分享

一、HX711模块介绍 HX711模块是一种专门用于称重传感器的放大器模块。它的主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围。 HX711模块通常配合称重传感器一起使用&#xff0c;例如压力传感器、负载细胞等。它采用24位的模数转换器&#xff08;ADC&#xff09…

交叉熵函数与kl散度的区别

公式上的区别 手动计算的方式展示如何实现这两个损失函数 交叉熵损失函数 import torch import torch.nn.functional as F# 模型的输出 logits 和真实标签 target logits torch.tensor([[2.0, 0.5, 0.1], [0.3, 2.5, 0.8]], requires_gradTrue) target torch.tensor([0, 1])…

测试开发基础——软件测试中的bug

二、软件测试中的Bug 1. 软件测试的生命周期 软件测试贯穿于软件的整个生命周期 需求分析 测试计划 测试设计与开发 测试执行 测试评估 上线 运行维护 用户角度&#xff1a;软件需求是否合理 技术角度&#xff1a;技术上是否可行&#xff0c;是否还有优化空间 测试角度…

某郊到家:互联网时代下的按摩服务革新

在快速发展的时代背景下&#xff0c;一群具有前瞻性的企业家在2018年勇敢地进军了按摩服务行业&#xff0c;引领了一场对传统模式的革新。他们不仅在竞争激烈的市场中站稳脚跟&#xff0c;还成功地在不断变化的市场环境中确立了自己的位置。 创新的商业模式和持续的努力&#x…

【2024】前端学习笔记2-有序列表-无序列表-描述列表

学习笔记 有序列表:ol基本使用:嵌套使用扩展:使用CSS改变序号类型无序列表:ul基本使用扩展:使用CSS改变符号类型扩展:使用CSS定制列表样式描述列表:dl基本使用扩展:使用CSS定制类型格式总结有序列表:ol 有序列表由<ol>标签包裹一组<li>(列表项)标签组成…

区块链之变:揭秘Web3对互联网的全面改变

随着技术的进步&#xff0c;区块链 逐渐从一个相对小众的概念演变为重塑互联网结构的核心力量。特别是 Web3 的兴起&#xff0c;标志着互联网进入了一个新的发展阶段。这一变革不仅仅是技术的升级&#xff0c;更是对互联网功能、数据控制和用户体验的全面重新定义。本文将详细探…

数学建模笔记—— 回归分析

数学建模笔记—— 回归分析 回归分析1. 回归分析的一般步骤2. 一元线性回归分析2.1 具体过程2.1.1 确定回归方程中的解释变量和被解释变量2.1.2 确定回归模型和建立回归方程2.1.3 利用回归直线进行估计和预测2.1.4 对回归方程进行各种检验(补充)1. 回归直线的拟合优度2. 显著性…

哪款提醒软件能清晰展示每日工作任务?

在快节奏的工作环境中&#xff0c;每天的工作任务堆积如山&#xff0c;如何有效地整理和清晰查看这些任务&#xff0c;成为了提高工作效率的关键。一款优秀的提醒软件能够帮助我们将任务条理化&#xff0c;确保每一项工作都能按时完成。 敬业签就是这样一款能够清晰展示每日工…

VR 尺寸美学主观评价-解决方案-现场体验研讨会报名

棣拓科技VR创新解决方案助力尺寸美学所见即所得! 诚邀各位行业专家莅临指导交流 请扫描海报二维码踊跃报名&#xff0c;谢谢 中国上海 2024.10.25 亮点介绍 1、通过精湛渲染技术&#xff0c;最真实展现设计效果&#xff0c;并通过VR设备一比一比例进行展现。 2、设置相关设…