网站建设弹窗代码/温州seo服务

网站建设弹窗代码,温州seo服务,阿里云做的网站程序,自己 做网站使用Docker打包深度网络模型mar包到服务端 参考链接:Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客 1、docker拉取环境镜像命令 docker images出现此提示为没有权限取执行命令&…

使用Docker打包深度网络模型mar包到服务端

参考链接:Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客

1、docker拉取环境镜像命令

docker images

在这里插入图片描述

在这里插入图片描述

出现此提示为没有权限取执行命令,此时修改命令为

sudo docker images

出现类似如下界面即为成功
在这里插入图片描述

**注意:**如果没有所需镜像,那么则需要去网上的镜像网站取拉镜像。命令为

docker pull registry.cn-shanghai.aliyuncs.com/jhinno/torch-serve:v6.1
docker pull 镜像

2、启动docker并进行打包

2、1启动docker服务

systemctl start docker
docker run --rm -it -p 8080:8080 -p 8081:8081 -v /home/lxz-2/lyw/class_eval/model_store:/home/model-server/model-store registry.cn-shanghai.aliyuncs.com/jhinno/torch-serve:v6.1

–rm 表示使用完立刻清空内存。

–it 表示交互式容器,会有一个伪终端,可以理解为docker容器的终端,我个人认为docker容器就是一个虚拟机,能更加方便人们去运行代码。

-p端口映射, -p 8080:8080 表示将本地8080端口映射到虚拟机8080端口

-v路径映射: -v /home/lxz-2/lyw/class_eval/model_store:/home/model-server/model-store将 /home/lxz-2/lyw/class_eval/model_store映射/home/model-server/model-store

registry.cn-shanghai.aliyuncs.com/jhinno/torch-serve:v6.1 :所使用的环境

在这里插入图片描述

输入完上述命令后进入docker容器的伪终端,此时所使用的环境为 registry.cn-shanghai.aliyuncs.com/jhinno/torch-serve:v6.1

在这里插入图片描述

2、2 编写handler文件

handler文件,是加载模型 预处理 推理 后处理的过程的函数,可以理解为跑通模型从前到后的步骤,比如加载模型,加载好后需要对数据进行预处理,进行预处理然后进行推理,将得到的加过进行后处理,应用到实际中,最后返回。

load_model、initialize第一个是下载模型用的,第二个是初始化,例如是不是用GPU啊等参数设置的,preprocess,此时这个函数的传参data就是用户在调用接口传递数据,preprocess返回的data会进入到inference的data,同时inference返回的data会进入到postprocess,最后通过接口返回给用户

在这里插入图片描述

import datetime
import os
import pickle
import sys
import zipfile
import numpy as np
import logginglogger = logging.getLogger(__name__)
import base64
import torch
import io
from PIL import Image
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from ts.torch_handler.base_handler import BaseHandler
import astclass FaceDetectHandler(BaseHandler):def __init__(self):super().__init__()# Define your scalers for normalization and standardizationself.scaler = StandardScaler()  # For standardizationself.minmax_scaler = MinMaxScaler()  # For min-max scalingself.args = 14self.order = ['ATTENDANCE_RATE','HEAD_UP_RATE', 'FRONT_RATE','FRONT_SEAT_RATE','TVOTELOG','TPREAMPANSWERLOG','TDISCUSSLOG', 'TSURVEYLOG', 'TCHOOSESOMEONELOG', 'TWORKLOG','VOTELOG','PREAMPANSWERLOG','WORKLOG','CHOOSESOMEONELOG',]self.count = ['VOTELOG', 'WORKLOG', 'PREAMPANSWERLOG', 'CHOOSESOMEONELOG', 'JOBFINISH']def load_model(self, model_path):from model import MyModelprint('loading model...')model = MyModel(1,4,1)# if not os.path.exists(model_path):#     print("Checkpoint not found: " + model_path)#     return# print("Resuming from " + model_path)states = torch.load(model_path, map_location=self.device)model.load_state_dict(states, strict=False)model = model.to(device=self.device)# print("Resumed from " + model_path)self.model = model.eval()def initialize(self, context):properties = context.system_propertieslogger.info(f"Cuda available: {torch.cuda.is_available()}")logger.info(f"GPU available: {torch.cuda.device_count()}")use_cuda = torch.cuda.is_available() and torch.cuda.device_count() > 0self.map_location = 'cuda' if use_cuda else 'cpu'self.device = torch.device(self.map_location + ':' +str(properties.get('gpu_id')) if use_cuda else 'cpu')self.manifest = context.manifestmodel_dir = properties.get('model_dir')logger.info("==================model_dir==========================="" %s loaded successfully", model_dir)self.model_pt_path = Noneself.model_path = None# 读取pth和模型if "serializedFile" in self.manifest["model"]:serialized_file = self.manifest["model"]["serializedFile"]self.model_pt_path = os.path.join(model_dir, serialized_file)model_file = self.manifest['model']['modelFile']# if "modelFile" in self.manifest["model"]:#     model_file = self.manifest['model']['modelFile']#     self.model_path = os.path.join(model_dir, model_file)# logger.info("Model file %s loaded successfully", self.model_pt_path)# with zipfile.ZipFile(model_dir + '/models.zip', 'r') as zip_ref:#     zip_ref.extractall(model_dir)self.load_model(self.model_pt_path)logger.info("Model file %s loaded successfully", self.model_pt_path)def preprocess(self, data):logger.info("preprocess ing~~~~~")logger.info(data)data_dict = data[0]['body']keys = data_dict.keys()if 'ATTENDANCE_RATE' not in keys or 'HEAD_UP_RATE' not in  keys or 'FRONT_RATE' not in keys or 'FRONT_SEAT_RATE' not in keys:return "参数不足"values_array = [data_dict[feature] for feature in self.order]MASK = [1 if value!=0 else 0 for value in values_array]MASK = np.array(MASK, dtype=np.float32).reshape(1, self.args)# 使用 StandardScaler 标准化特征数据# 将 MASK 转换为 PyTorch 张量MASK_tensor = torch.tensor(MASK, dtype=torch.float32).to(self.device)values_array = np.array(values_array, dtype=np.float32).reshape(1,self.args, 1)values_tensor = torch.tensor(values_array, dtype=torch.float32).to(self.device)logger.info(values_tensor)data = {"values_tensor":values_tensor,"MASK_tensor":MASK_tensor}return datadef inference(self, data):logger.info("inference ing~~~~~")logging.info(data)if data=="参数不足":return "参数不足"model = self.modellogger.info("model  loaded")prediction = model(data['values_tensor'],data['MASK_tensor'])logging.info(prediction)return predictiondef postprocess(self, data):logger.info("postprocess ing~~~~~")logging.info(data)if data == "参数不足":return [{"output": "参数不足"}]result = data.item()# results = data_reshape.tolist()return [{"output": result}]

可以本地编写个测试文件,看看是否能跑通


# 添加到 handler 文件的末尾if __name__ == "__main__":import logginglogging.basicConfig(level=logging.INFO)# 模拟 TorchServe 的上下文class MockContext:def __init__(self):self.system_properties = {"model_dir": "./model",  # 假设模型文件存放在 ./model 目录"gpu_id": 0              # 测试时使用 CPU}self.manifest = {"model": {"serializedFile": "model.pth",  # 假设模型权重文件名"modelFile": "model.py"        # 模型定义文件}}# 初始化 Handlerhandler = FaceDetectHandler()context = MockContext()# 确保模型目录存在os.makedirs(context.system_properties["model_dir"], exist_ok=True)# 创建一个虚拟模型文件(如果实际不存在)dummy_model_path = os.path.join(context.system_properties["model_dir"], context.manifest["model"]["serializedFile"])if not os.path.exists(dummy_model_path):torch.save(handler.model.state_dict(), dummy_model_path)# 初始化 Handlerhandler.initialize(context)# 构造测试数据(包含所有必要字段)test_data = [{"body": {"ATTENDANCE_RATE": 0.85,"HEAD_UP_RATE": 0.6,"FRONT_RATE": 0.75,"FRONT_SEAT_RATE": 0.5,"TVOTELOG": 1,"TPREAMPANSWERLOG": 2,"TDISCUSSLOG": 0,"TSURVEYLOG": 1,"TCHOOSESOMEONELOG": 0,"TWORKLOG": 3,"VOTELOG": 1,"PREAMPANSWERLOG": 2,"WORKLOG": 3,"CHOOSESOMEONELOG": 0,"LISTEN_CLASS": 0.9,"WRITE_NOTE": 0.3,"PLAY_PHONE": 0.1,"LIT_TABLE": 0.2}}]# 完整处理流程try:preprocessed = handler.preprocess(test_data)print("预处理结果:", preprocessed)if preprocessed != "参数不足":inference_result = handler.inference(preprocessed)print("推理结果:", inference_result)postprocessed = handler.postprocess(inference_result)print("最终输出:", postprocessed)else:print("错误:输入参数不完整")except Exception as e:print(f"处理出错: {str(e)}")

2.3打包

torch-model-archiver --model-name ml_regression_AICourseScoring_V2.2 --version 2.2 --model-file model.py --serialized-file test_model_loss0.2894_r20.9787_20250327_184525.pth --handler Myhandler.py

需要将参数文件、模型文件’handler文件同时放到一个文件夹下。

–model-name ml_regression_AICourseScoring_V2.2 模型的名字

–version 2.2 版本

–model-file model.py 模型文件

serialized-file test_model_loss0.2894_r20.9787_20250327_184525.pth 参数文件

–handler Myhandler.py handler文件

映射后的文件夹下的文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行完上述后命令会在当前文件下生成mar包,

在这里插入图片描述

我本地使用的是学校中台,只需上传mar包即可,本地测试参考

参考链接:Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客

第四点

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

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

相关文章

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化,为后续的容器部署和管理提供基础;kubectl作为命令行工具,提供了与Kubernetes集群交互的便捷方式;而…

linux 硬盘扩展

场景: [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 …

Docker Desktop 界面功能介绍

Docker Desktop 界面功能介绍 左侧导航栏 Containers(容器): 用于管理容器,包括查看运行中或已停止的容器,检查容器状态、日志,执行容器内命令,启动、停止、删除容器等操作。Images(镜像): 管理本地 Docker 镜像,可查看镜像列表、从 Docker Hub 拉取新镜像、删除镜…

数据设计(范式、步骤)

文章目录 数据设计1.数据库设计的三大范式2、数据库设计的具体步骤 数据设计 1.数据库设计的三大范式 关系型数据库的三大范式,指导如何设计一个关系型数据库。 1NF: 关系表的每个字段,都应该是不可再分的,——保证原子性。 字…

PhotoShop学习03

1.更改图像大小 通常情况下,如果我们想在某些上传图片,会发现我们的图片可能会过大或者过小,为此,我们需要调整图像的大小,使之符合网站的规则。 首先打开photoshop,打开一张图片。首先我们需要了解这张图…

【区块链安全 | 第二篇】区块链概念详解

文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点(Node)5. 区块(Block)6. 区块链(Blockchain)7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易(Transaction&am…

Redisson - 分布式锁和同步器

文章目录 锁(Lock)公平锁(Fair Lock)联锁(MultiLock)红锁(RedLock) 【已废弃】读写锁(ReadWriteLock)信号量(Semaphore)可过期许可信号…

HarmonyOS:GridObjectSortComponent(两个Grid之间网格元素交换)

一、概述 网格对象的编辑排序是用于网格对象的编辑、拖动排序、新增和删除。 说明 该组件从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 二、导入模块 import { GridObjectSortComponent, GridObjectSortComponentItem…

智能监控视频聚合平台,GB28181/RTSP/SIP/RTMP直播会议融合方案

全场景智能监控聚合平台:打破边界,赋能高效协同 在数字化转型加速的今天,海量视频监控设备、多样化的编码协议与复杂的业务场景,让企业面临跨系统整合难、资源调度效率低、协作响应慢等痛点。我们的智能监控聚合平台以技术创新为…

IP数据报报文格式

一 概述 IP数据报由两部分组成:首部数据部分。首部的前一部分是固定长度,一共20字节大小,是所有IP数据报文必须具有的;固定部分后面是一些可选字段,其长度是可变的。 二 首部固定部分各字段意义 (1&…

【电子通识】案例:为什么电子产品制造过程中使用马克笔在FFC/FPC连接器打点进行标记

在电子产品制造过程中,使用马克笔在FFC/FPC连接完成后进行打点标记(或类似目视化检查方法),是一种常见的“过程防错(Poka-Yoke)”手段,其核心目的是通过简单、直观的方式确保关键工序的执行质量…

Linux中断处理流程

Linux中断处理流程 在Linux内核中,中断控制器管理硬件中断号到Linux中断号的映射,并通过中断描述符(struct irq_desc)进行管理。存储这种映射关系的方式取决于中断编号的连续性,具体实现如下: 1. 数组存储&…

Java 大视界 -- 基于 Java 的大数据隐私计算在医疗影像数据共享中的实践探索(158)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

logstash收集数据

防止ES的的I/O的压力过大,使用redis/kafka进行缓冲。 对redis的要求 Redis input plugin | Logstash Reference [8.17] | Elastic 一般企业要求的架构 我实现的架构 filebeat把数据传给logstash 配置好filebeat把收集到的数据输入到redis 然后执行命令&#xff0…

MAXKB部署,使用和注意事项

MaxKB Max Knowledge Base,是一款基于大语言模型和 RAG 的开源知识库问答系统,广泛应用于智能客服、企业内部知识库、学术研究与教育等场景。作为一款专注于知识库问答场景的软件产品,MaxKB 能够为企业的智能化进程注入新的动力,…

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗 docker - compose up - d 是一个用于管理 Docker 容器的命令,具体含义如下: 命令含义: up:用于创建、启动并运行容器,会根据 docker - compose.yml 文件中定义的服务配置来操作。-d:表示以“分离模式”(det…

03-SpringBoot3入门-配置文件(自定义配置及读取)

1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1)User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

进程状态:Linux的幕后指挥管理,穿越操作系统进程的静与动

文章目录 引言:进程的生命与状态:动与静的交响曲一、操作系统中的进程状态概述1.1 经典的进程状态模型1.2 进程状态转换图 二、Linux操作系统中的进程状态2.1 Linux进程状态的分类2.2 各状态的详细解释 2.3 Linux进程状态表2.4 使用ps查看进程状态三、进…

MOSN(Modular Open Smart Network)-05-MOSN 平滑升级原理解析

前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN(Modular O…