当前位置: 首页 > news >正文

使用Docker进行模型部署

一、常见的模型部署场景

  1. 实时的、小数据量的预测应用
    部署方式:采用python-httpserve应用部署(如flask, fastApi, django),缺点是可能需要跨环境,从Java跨到Python环境
  2. 实时的、大数据量的预测应用
    部署方式:将训练好的模型转换成PMML,把模型封装成一个类,用Java调用这个类来预测
  3. 离线预测、D+1天的预测
    部署方式:可以简单的使用Python脚本进行预测,使用shell的crontab做定时调用

⭐️多个项目部署到一个服务器上的部署方式:使用Docker将项目封装在独立的容器中

补充:Linux配置

由于大部分服务器使用Linux做服务器,所以这里补充一下Linux虚拟机安装
Linux虚拟机安装(Ubuntu 20)

配置常见问题:

  1. 【解决】vmware虚拟机安装时提示 Intel VT-x 处于禁用状态:进入BIOS打开Intel Virtualization Technology
  2. 【解决】VMWare Workstation 17报错(2784):关闭虚拟机的3D加速功能
  3. 【解决】VMWare虚拟机安装Ubuntu时页面显示不全:VMware虚拟机安装Ubuntu时页面显示不全的解决方法

二、Docker

Docker是一种开源的容器化平台,可以简化应用程序的部署和管理过程。通过使用Docker,可以将应用程序及其所有依赖项封装在一个称为容器的独立单元中。
Docker部署的优点:

  1. 轻量和快速:Docker容器是轻量级的,因为它们与宿主机共享操作系统内核。这使得容器的启动和停止非常迅速,使您的应用程序能够快速部署和扩展。
  2. 可移植性:Docker容器提供了一个一致的运行时环境,无论在哪个主机上部署,容器内的应用程序和依赖项都将以相同的方式运行。这消除了由于不同主机之间的差异而导致的部署问题,使得应用程序在不同环境中更易于迁移和部署。
  3. 隔离性和安全性:Docker使用容器来隔离应用程序和其依赖项,确保它们在相互之间和宿主机上运行时相互独立。这种隔离性提供了更高的安全性,使得即使应用程序存在漏洞或问题,也不会对宿主机或其他容器造成影响。
  4. 简化的管理和部署:Docker提供了一套强大的工具和命令行界面,使得管理和部署应用程序变得简单。您可以使用Dockerfile来定义应用程序的构建过程,使得部署过程可重复和可自动化。此外,Docker还提供了监控、日志记录和扩展等功能,帮助您更好地管理和维护应用程序。

2.1 Docker 安装

Windows

官网下载Docker Desktop:Docker Desktop for Windows
测试是否安装成功:运行命令 docker run hello-world,显示"Hello from Docker!"则代表安装成功

Linux(ubuntu 20)

使用安装脚本安装docker

  1. 首先下载脚本
$ curl -fsSL https://get.docker.com -o get-docker.sh
  1. 以root权限运行脚本
sudo sh get-docker.sh
  1. 验证安装是否成功
sudo docker run hello-world

2.2 Docker部署python项目(Windows)

建立容器

  1. 在python项目里新建一个名为Dockerfile的文件,填写创建容器的指令配置。例:
# 使用适当的基础镜像
FROM python:3.9# 设置工作目录
WORKDIR /app# 复制本地项目文件到容器中
COPY . /app# 安装项目依赖库(如果有)
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 设置入口命令
CMD ["python", "./main.py"]
  1. 在终端里cd到python项目的位置,运行docker命令创建容器。例:
# 创建一个名为psql的容器
docker build -t psql .
  1. 在终端里使用docker命令运行项目。例:
docker run -p 9999:9999 psql

进入容器运行项目

  1. 启动容器并进入容器的交互式终端。例:
docker run -it psql bash
  1. 运行项目
python main.py

2.3 将容器打包部署到其他设备或服务器上

  1. 查询本地仓库的所有镜像
docker images
  1. 导出容器。例:
docker save <容器id> > <保存容器的路径>\<容器文件名称>.tar
  1. 将容器文件导入到其他设备或服务器的docker里(这里演示在ubuntu里加载容器)

cd到容器文件的文件夹里,打开终端,输入命令

sudo docker load --input <容器文件名称>.tar
  1. 打开终端,验证容器是否成功导入
  • 查询本地仓库所有镜像
sudo docker images
  • 如果看到加载的镜像没有tag和镜像名,则手动打tag:
docker tag {image_id} {image_name}:{image_tag}
  • 进入镜像
sudo docker run -it <image_name> bash
  • 运行项目
python main.py

相关文章:

使用Docker进行模型部署

一、常见的模型部署场景 实时的、小数据量的预测应用 部署方式&#xff1a;采用python-httpserve应用部署&#xff08;如flask, fastApi, django&#xff09;&#xff0c;缺点是可能需要跨环境&#xff0c;从Java跨到Python环境实时的、大数据量的预测应用 部署方式&#xff1…...

第59步 深度学习图像识别:误判病例分析(TensorFlow)

基于WIN10的64位系统演示 一、写在前面 本期内容对等于机器学习二分类系列的误判病例分析&#xff08;传送门&#xff09;。既然前面的数据可以这么分析&#xff0c;那么图形识别自然也可以。 本期以mobilenet_v2模型为例&#xff0c;因为它建模速度快。 同样&#xff0c;基…...

【Vue框架】基本的login登录

前言 最近事情比较多&#xff0c;只能抽时间看了&#xff0c;放几天就把之前弄的都忘了&#xff0c;现在只挑着核心的部分看。现在铺垫了这么久&#xff0c;终于可以看前端最基本的登录了&#x1f602;。 1、views\login\index.vue 由于代码比较长&#xff0c;这里将vue和js…...

Python21天打卡Day16-内置方法map()

在 Python 中&#xff0c;map() 方法是一个内置的函数&#xff0c;用于将函数应用于可迭代对象&#xff08;如列表、元组等&#xff09;中的每个元素&#xff0c;返回一个包含结果的迭代器。 map() 方法的语法如下&#xff1a; map(function, iterable)function&#xff1a;表…...

伦敦银和伦敦金的区别

伦敦银河伦敦金并称贵金属交易市场的双璧&#xff0c;一般投资贵金属的投资者其实不是交易伦敦金就是交易伦敦银。相信经过一段时间的学习和投资&#xff0c;不少投资者都能分辨二者的区别。下面我们就来谈谈伦敦银和伦敦金有什么异同&#xff0c;他们在投资上是否有差别。 交易…...

【从零学习python 】92.使用Python的requests库发送HTTP请求和处理响应

文章目录 URL参数传递方式一&#xff1a;使用字典传递参数URL参数传递方式二&#xff1a;直接在URL中拼接参数获取响应头信息获取响应体数据a. 获取二进制数据b. 获取字符数据c. 获取JSON数据 进阶案例 URL参数传递方式一&#xff1a;使用字典传递参数 url https://www.apiop…...

Python requests实现图片上传接口自动化测试

最近帮别人写个小需求&#xff0c;需要本地自动化截图&#xff0c;然后图片自动化上传到又拍云&#xff0c;实现自动截图非常简单&#xff0c;在这里就不详细介绍了&#xff0c;主要和大家写下&#xff0c;如何通过Pythonrequests实现上传本地图片到又拍云服务器。 话不多说&a…...

【LeetCode-面试经典150题-day13】

目录 141.环形链表 2.两数相加 21.合并两个有序链表 138.复制带随机指针的链表 92.反转链表Ⅱ 141.环形链表 题意&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;…...

taro.js和nutui实现商品选择页面

1. 首先安装 Taro.js 和 NutUI: npm install -g tarojs/cli npm install taro-ui 2. 创建 Taro 项目并进入项目目录&#xff1a; taro init myapp cd myapp 3. 选用 Taro 模板一并安装依赖&#xff1a; npm install 4. 在页面目录中创建商品选择页&#xff1a; taro cre…...

数据结构--算法的时间复杂度和空间复杂度

文章目录 算法效率时间复杂度时间复杂度的概念大O的渐进表示法计算实例 时间复杂度实例 常见复杂度对比例题 算法效率 算法效率是指算法在计算机上运行时所消耗的时间和资源。这是衡量算法执行速度和资源利用情况的重要指标。 例子&#xff1a; long long Fib(int N) {if(N …...

Vue中使用element-plus中的el-dialog定义弹窗-内部样式修改-v-model实现-demo

效果图 实现代码 <template><el-dialog class"no-code-dialog" v-model"isShow" title"没有收到验证码&#xff1f;"><div class"nocode-body"><div class"tips">请尝试一下操作</div><d…...

MySQL 主从配置

环境 centos6.7 虚拟机两台 主&#xff1a;192.168.23.160 从&#xff1a;192.168.23.163 准备 在两台机器上分别安装mysql5.6.23&#xff0c;安装完成后利用临时密码登录mysql数据修改root的密码&#xff1b;将my.cnf配置文件放至/etc/my.cnf&#xff0c;重启mysql服务进…...

上海亚商投顾:创业板指反弹大涨1.26% 核污染概念股午后全线走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日集体反弹&#xff0c;沪指午后冲高回落&#xff0c;创业板指盘中涨超2%&#xff0c;尾盘涨幅也有所收…...

Mysql数据库管理

一、数据库基本概念 数据 使用一些介质进行存储&#xff0c;例如文字存在文档中 数据库可以完成数据持久化保存快速提取 那么想要实现以上功能&#xff0c;需要编写一系列的规则--》SQL语句 SQL语句 按功能分类: 增删改查 数据库类型&#xff1a;关系型数据库、非关系型数据库…...

【java安全】FastJson反序列化漏洞浅析

文章目录 【java安全】FastJson反序列化漏洞浅析0x00.前言0x01.FastJson概述0x02.FastJson使用序列化与反序列化 0x03.反序列化漏洞0x04.漏洞触发条件0x05.漏洞攻击方式JdbcRowSetImpl利用链TemplatesImpl利用链**漏洞版本**POC漏洞分析 【java安全】FastJson反序列化漏洞浅析 …...

pytestx重新定义接口框架设计

概览 脚手架&#xff1a; 目录&#xff1a; 用例代码&#xff1a; """ 测试登录到下单流程&#xff0c;需要先启动后端服务 """test_data {"查询SKU": {"skuName": "电子书"},"添加购物车": {"sk…...

【文生图系列】Stable Diffusion原理篇

文章目录 Stable Diffusion的组成什么是扩散扩散是如何工作的去噪声绘制图像将文本信息添加到图像生成器中参考 “文生图”&#xff0c;或者AI绘画&#xff0c;最近异常火爆&#xff0c;输入一些描述性的语句&#xff0c;AI就能够生成相应的画作。甚至引发了一个问题&#xff1…...

ARM-汇编指令

一&#xff0c;map.lds文件 链接脚本文件 作用&#xff1a;给编译器进行使用&#xff0c;告诉编译器各个段&#xff0c;如何进行分布 /*输出格式&#xff1a;32位可执行程序&#xff0c;小端对齐*/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm",…...

Java相关知识对应leetcode

力扣账号&#xff1a;华为邮箱 类知识点力扣链接Integer转为String Character 判断字符是否是字母或者数字转为小写字母 不可修改 String 转为字符串数组 是否包含某个字符或者字符位置 可修改 StringBuffer 单个字符获取 string转为StringBufferStringBuffer转为String字符…...

js中?.、??、??=的用法及使用场景

上面这个错误&#xff0c;相信前端开发工程师应该经常遇到吧&#xff0c;要么是自己考虑不全造成的&#xff0c;要么是后端开发人员丢失数据或者传输错误数据类型造成的。因此对数据访问时的非空判断就变成了一件很繁琐且重要的事情&#xff0c;下面就介绍ES6一些新的语法来方便…...

SQL调优实战手册:索引、并行、参数调优一站式解决方案

做企业级业务开发久了&#xff0c;都会碰到同一个难题&#xff1a;数据量越积越多&#xff0c;原本跑得顺畅的SQL慢慢开始变慢&#xff0c;轻则接口响应延迟&#xff0c;重则整个系统卡顿&#xff0c;甚至影响核心业务流转。尤其是用KingbaseES这款国产企业级数据库&#xff08…...

Qwen3-ASR-1.7B在数学建模竞赛中的语音数据处理应用

Qwen3-ASR-1.7B在数学建模竞赛中的语音数据处理应用 数学建模竞赛&#xff0c;听起来是不是有点“高大上”&#xff1f;其实说白了&#xff0c;就是给你一个现实世界的问题&#xff0c;让你用数学和计算机的方法去解决。这几年&#xff0c;竞赛题目越来越贴近生活&#xff0c;…...

Qt 串口编程实战:keySight 34401A 万用表数据采集与存储

1. 项目背景与硬件准备 keySight 34401A 数字万用表是实验室常见的六位半高精度测量设备&#xff0c;支持GPIB和RS-232两种通信接口。在实际工业测量场景中&#xff0c;RS-232串口连接因其布线简单、成本低廉的特点&#xff0c;成为许多开发者的首选方案。我最近接手的一个电池…...

Ostrakon-VL-8B效果展示:AI识别货架商品、检查消防通道真实案例

Ostrakon-VL-8B效果展示&#xff1a;AI识别货架商品、检查消防通道真实案例 1. 零售行业的视觉智能革命 走进任何一家超市或餐厅&#xff0c;你都会看到员工忙碌地进行各种检查&#xff1a;商品是否摆放整齐、货架是否需要补货、消防通道是否畅通。这些看似简单的工作&#x…...

从H5到uni-app:迁移‘滚动菜单高亮’功能时,我踩过的3个关键差异点

从H5到uni-app&#xff1a;迁移滚动菜单高亮功能的三大思维转换 第一次在uni-app里实现滚动菜单高亮效果时&#xff0c;我差点把键盘摔了——那些在H5里信手拈来的document.querySelector和window.scrollY突然全部失效。这就像习惯右手写字的人突然被要求用左手&#xff0c;明明…...

SAC算法实战:用PyTorch实现自动驾驶控制(附完整代码)

SAC算法实战&#xff1a;用PyTorch构建自动驾驶控制系统 在自动驾驶技术快速发展的今天&#xff0c;强化学习已成为解决复杂决策问题的有力工具。而Soft Actor-Critic&#xff08;SAC&#xff09;算法凭借其在连续动作空间中的卓越表现&#xff0c;正在成为自动驾驶控制领域的新…...

小白也能懂的Qwen3-VL微调教程:图文识别模型定制化入门

小白也能懂的Qwen3-VL微调教程&#xff1a;图文识别模型定制化入门 1. 为什么需要微调Qwen3-VL模型&#xff1f; Qwen3-VL是阿里云推出的新一代视觉语言模型&#xff0c;它能同时理解图片和文字内容。这个模型预训练时已经学会了很多通用技能&#xff0c;比如识别常见物体、理…...

Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战:使用自定义数据集训练专属风格

Z-Image-Turbo-rinaiqiao-huiyewunv 模型微调实战&#xff1a;使用自定义数据集训练专属风格 想不想让AI画出专属于你的独特风格&#xff1f;比如&#xff0c;你是一位插画师&#xff0c;希望AI能学会你笔下那种温暖治愈的线条&#xff1b;或者你经营一个品牌&#xff0c;需要…...

Cosmos-Reason1-7B参数详解:上下文长度4096对长时序视频理解的实际价值

Cosmos-Reason1-7B参数详解&#xff1a;上下文长度4096对长时序视频理解的实际价值 1. 模型概述 Cosmos-Reason1-7B是NVIDIA开源的一款7B参数量的多模态物理推理视觉语言模型(VLM)&#xff0c;作为Cosmos世界基础模型平台的核心组件&#xff0c;专注于物理理解与思维链(CoT)推…...

BERT 模型:自然语言处理的新篇章

BERT模型&#xff1a;自然语言处理的新篇章 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是研究的热点之一。2018年&#xff0c;谷歌推出的BERT模型彻底改变了NLP的发展方向&#xff0c;成为该领域的重要里程碑。BERT&#xff08;Bidirectional En…...