唯众AI教学与实训平台:从教学到科研全流程,附实操代码与技术拆解
软件平台为人工智能专业教学提供数字化管理、虚拟实训、在线学习、自动评测、科研支撑全流程服务采用微服务架构支持公有云/私有云部署跨设备访问。一、平台特点本平台是一款专为高校及科研机构打造的人工智能全生命周期管理与教学实训一体化解决方案。平台创新性地融合了“日常实验教学”与“深度科研探索”双核心模块通过统一的资源调度中心实现了从算法开发、数据标注、模型训练、评估量化到在线部署的一站式服务。平台旨在打破教学与科研的壁垒最大化利用计算资源CPU/GPU/内存为师生提供高效、便捷、安全的AI创新环境。二、平台架构与资源管理1. 微服务架构原理平台采用微服务架构这也是现在企业级应用的主流架构好处就是可扩展性强、容错率高比如教学模块出问题不会影响科研模块的正常使用而且后续想新增功能直接加个微服务就行不用重构整个系统。微服务部署配置示例基于Docker Compose实际部署可根据学校服务器配置调整# docker-compose.yml 核心配置简化版 version: 3.8 services: # 资源调度中心核心微服务负责CPU/GPU/内存分配 resource-center: image: weizhong/resource-center:latest ports: - 8081:8080 environment: - SPRING_PROFILES_ACTIVEprod - GPU_ENABLEtrue # 开启GPU支持 volumes: - /var/run/docker.sock:/var/run/docker.sock # 教学实验模块 teaching-module: image: weizhong/teaching-module:latest depends_on: - resource-center environment: - RESOURCE_CENTER_URLhttp://resource-center:8080 # 科研模块 research-module: image: weizhong/research-module:latest depends_on: - resource-center environment: - RESOURCE_CENTER_URLhttp://resource-center:8080 # 数据库服务存储课程、任务、资源等信息 mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORDweizhong2026 - MYSQL_DATABASEai_training_platform volumes: - mysql-data:/var/lib/mysql volumes: mysql-data:以上配置只是核心模块的简化版实际部署时还需要添加日志服务、权限管理服务等平台支持公有云比如阿里云、腾讯云和私有云部署校内服务器部署的话直接修改volumes映射路径和端口即可操作不算复杂管理员稍微研究下就能搞定。2. 双模块协同设计教学和科研两个模块整合而且共用基础资源——数据集、镜像、持久卷、算法、模型这些不用重复上传、重复配置既省空间又能提高资源利用率。举个实际场景我在科研模块训练好一个图像分类模型想用到教学实验中让学生学习模型调优直接把模型共享到教学模块就行学生不用重新训练直接基于我的模型做修改省时又省力。反之学生在实验中优化的算法也能同步到科研模块供科研使用真正打破了教学和科研的壁垒。双模块的资源共享底层是通过统一的资源调度中心实现的采用了Kubernetes的资源调度机制能实时分配CPU、GPU资源避免出现“教学占满资源科研用不了”或者反之的情况资源分配响应速度很快不会出现卡顿。3. 统一资源管理作为老师之前最头疼的就是管理实验资源学生经常反馈“GPU不够用”“数据集找不到”管理员也得天天盯服务器状态麻烦得很。1硬件资源监控校内管理员可以实时监控硬件服务器的CPU、GPU、内存使用情况甚至能看到每个用户、每个任务占用的资源不用登录服务器敲命令查看可视化界面直接一目了然后续硬件升级、扩容也能根据监控数据来不用盲目投入。GPU资源的实操命令平台后台可直接执行也可手动在服务器执行# 查看GPU实时使用情况适配NVIDIA GPU nvidia-smi # 查看平台内各用户GPU占用详情平台自定义命令 weizhong-cli resource gpu --user all # 查看CPU、内存使用情况 top -n 1 # 查看实时快照 free -h # 查看内存详情2资源使用统计平台支持查看数据集、算法、模型、镜像等所有资源的统计数据包括公共资源、私有资源的数量还有文件总数比如我想知道学校目前有多少个公共数据集每个数据集的大小直接在统计界面就能看到不用手动统计。管理员可以根据统计数据把高频使用的资源设为公共资源减少重复上传对于使用频率极低的私有资源也可以提醒用户清理释放存储空间这个功能能节省不少服务器空间。3持久卷管理持久卷PVC这个功能不管是教学还是科研都特别实用简单说就是“专属存储区域”可以新建持久卷也可以选择已有持久卷挂载还能做快照、共享、删除等操作而且能清晰看到卷的挂载实例和使用用户不用担心数据混乱。重点说一下快照功能做实验、做科研最怕数据丢失比如学生调试代码时误删文件或者科研中模型训练中断有了快照直接恢复到之前的状态不用重新来。这里给大家贴一段持久卷快照的实操代码平台API调用可集成到自己的脚本中import requests # 平台API地址替换为自己学校的平台地址 BASE_URL http://xxx.xxx.xxx.xxx:8080/api/v1 # 个人令牌在平台个人中心获取 TOKEN your_token_here def create_pvc_snapshot(pvc_id, snapshot_name): 创建持久卷快照 :param pvc_id: 持久卷ID在平台持久卷管理界面查看 :param snapshot_name: 快照名称 :return: 响应结果 url f{BASE_URL}/pvc/snapshot headers { Authorization: fBearer {TOKEN}, Content-Type: application/json } data { pvcId: pvc_id, snapshotName: snapshot_name, description: 自动创建的快照防止数据丢失 } response requests.post(url, jsondata) if response.status_code 200: print(f快照创建成功快照ID{response.json()[data][snapshotId]}) return response.json() else: print(f快照创建失败{response.json()[msg]}) return None # 调用示例 if __name__ __main__: create_pvc_snapshot(pvc_idpvc-123456, snapshot_name20260422-ai-experiment-snapshot)另外持久卷还支持共享比如合作一个科研项目我们可以共用一个持久卷实时同步数据不用来回传文件效率提升太多。三、课程与教学管理1. 实训课程与资源共享1课程创建创建实训课特别简单不用写复杂的配置直接在平台上填写课程名称、所属专业、课程介绍上传封面几步就能完成而且支持修改后续想更新课程信息也很方便。课程介绍支持富文本编辑能插入图片、表格、代码块老师平时可以把实验要求、重点难点都写在里面学生一看就懂不用再单独发文档。2课程内容编辑课程创建完成后就可以添加实验了实验文档编辑支持富文本和MarkDown两种模式这个设计很贴心——平时写简单的实验步骤用富文本模式拖拽就能排版写代码示例、技术文档用MarkDown模式语法简洁排版美观而且富文本模式还能插入MarkDown文件不用重复编辑。MarkDown格式的实验文档示例# 实验一Python基础与数据预处理 ## 实验目的 1. 掌握Python基本语法熟悉numpy、pandas库的使用 2. 学会数据清洗、特征提取的基本方法 3. 能够独立完成简单的数据集预处理任务 ## 实验环境 - 镜像python3.8-tensorflow2.8 - 资源规格CPU 2核内存 4GB - 数据集iris平台公共数据集直接挂载使用 ## 实验步骤 1. 挂载iris数据集查看数据基本信息 2. 处理缺失值、异常值 3. 对特征进行标准化处理 4. 保存预处理后的数据集到持久卷 ## 代码示例 python import numpy as np import pandas as pd # 挂载数据集平台自动挂载直接读取即可 data pd.read_csv(/data/iris.csv) # 查看数据基本信息 print(data.info()) print(data.describe()) # 处理缺失值删除缺失值 data data.dropna() # 处理异常值删除3σ以外的数据 for col in data.columns[:-1]: mean data[col].mean() std data[col].std() data data[(data[col] mean - 3*std) (data[col] mean 3*std)] # 特征标准化 from sklearn.preprocessing import StandardScaler scaler StandardScaler() data.iloc[:, :-1] scaler.fit_transform(data.iloc[:, :-1]) # 保存到持久卷 data.to_csv(/pvc/iris_preprocessed.csv, indexFalse) print(数据预处理完成已保存到持久卷) ## 实验要求 1. 完成代码编写确保无语法错误 2. 提交预处理后的数据集文件 3. 简要说明数据预处理的步骤和目的 3资源共享机制平台内置了共享课都是其他老师分享的优质课程我们可以直接借鉴、修改不用从零开始建课而且我们也能把自己创建的实训课分享到共享课供其他老师使用相当于一个校内的课程资源库大大减少了重复劳动。老师平时可以经常在共享课里找灵感比如其他老师做的深度学习实验课借鉴他的实验设计再结合自己的教学需求修改节省很多备课时间。2. 实验环境配置以前上实验课一半时间都花在环境配置上学生电脑配置不一样有的装不上TensorFlow有的GPU驱动不兼容老师还要一个个帮忙排查特别麻烦。现在有了这个平台所有实验环境都在云端配置好学生直接登录就能用完全不用管本地环境。1灵活的环境配置新建实验时我们可以根据实验需求选择合适的镜像、资源规格CPU、内存、GPU、数据集、模型、算法、持久卷等这些资源在学生开始实验时会自动挂载到每个学生的实验实例中不用学生手动挂载。举个例子做简单的Python基础实验选择CPU 2核、内存4GB就足够了做深度学习模型训练实验就选择GPU 1卡、内存16GB按需分配资源避免浪费。而且平台支持多种框架的镜像比如PyTorch、TensorFlow、Keras、Caffe等不用我们自己手动构建镜像特别方便。平台的镜像采用Docker容器化技术每个实验实例都是一个独立的Docker容器互相不干扰学生在自己的容器里操作不会影响其他学生的实验环境也不会影响平台的正常运行而且容器启动速度很快几乎不用等待。2环境连续性很多课程的实验是连贯的比如第一节课做数据预处理第二节课做模型训练就需要基于第一节课的实验环境继续操作。平台支持继承上一个实验的环境配置学生不用重新配置镜像、挂载数据集直接在上一个实验的基础上继续操作节省了大量时间。老师平时安排实验都是循序渐进的学生通过环境继承能连贯地完成整个课程的实验学习效果也更好。3环境重置学生做实验难免会误操作导致环境出错以前遇到这种情况只能重新配置环境浪费时间。平台支持一键重置实验环境重置后工作目录和持久卷里的文件不会丢失只有系统环境会还原到初始状态学生可以大胆尝试不用担心出错。重置环境前最好把重要的代码、数据保存到持久卷虽然工作目录的文件不会丢失但为了保险起见多做一步备份总是好的。3. 课堂与实验开展1课堂创建创建课堂很简单直接选择班级和对应的实训课程就能快速创建创建后学生可以通过班级入口进入课堂老师也能实时查看学生的实验进度方便监督和指导。老师平时上课会提前创建好课堂学生上课前登录平台进入课堂等待上课后老师直接开始授课不用再花时间组织学生。2双栏实验界面开始授课后学生进入课堂界面左侧是实验文档右侧是实验环境学生可以一边看实验步骤、代码示例一边在右侧的实验环境中操作不用来回切换窗口边学边练效率特别高。而且实验环境支持实时运行代码学生写一行代码就能运行查看结果遇到问题可以及时调整老师也能实时查看学生的代码及时给予指导教学效果比传统的线下实验好太多。四、科研与开发工具除了教学功能这款平台的科研与开发工具也特别强大从镜像、算法管理到Notebook实例、数据集管理再到模型全生命周期管理一站式覆盖不用再切换多个工具科研效率提升不止一个档次。1. 镜像与算法管理1镜像管理镜像作为科研和实验的基础平台支持两种上传方式命令上传和文件上传不管是自己构建的镜像还是从其他地方下载的镜像都能轻松上传到平台。命令上传镜像的实操代码文件上传更简单直接拖拽文件即可# 1. 登录平台镜像仓库替换为自己学校的仓库地址 docker login registry.xxx.edu.cn -u 用户名 -p 密码 # 2. 给本地镜像打标签格式仓库地址/镜像名称:版本号 docker tag pytorch:1.12 registry.xxx.edu.cn/ai/pytorch:1.12 # 3. 上传镜像到平台 docker push registry.xxx.edu.cn/ai/pytorch:1.12 # 上传成功后在平台镜像管理界面即可看到上传的镜像另外镜像还能设置多个服务端口并指定主服务端口比如我们构建的模型部署镜像需要暴露8080端口供接口调用就可以在上传镜像时设置而且镜像可以按用途分为训练镜像、实验镜像、量化镜像等分类管理查找起来更方便。2Notebook镜像默认设置科研人员平时用Notebook编辑算法、调试代码的频率很高每次创建Notebook实例都要选择镜像比较麻烦。平台支持教师设置默认的Notebook镜像设置后每次创建Notebook实例都会自动选择默认镜像节省了大量时间。老师平时做科研常用PyTorch镜像就把PyTorch镜像设为默认每次创建Notebook实例直接就能开始编辑代码不用再手动选择。3算法代码库平台的算法代码库分为公有和私有两种特别贴合科研需求公有算法平台会调拨一些常用的算法比如线性回归、决策树、CNN、RNN等校内用户也能共享自己的算法这些公有算法可以直接下载、复制不用自己重新编写节省科研时间。比如做图像识别科研直接复制平台上的CNN基础算法再根据自己的需求修改比从零开始编写快太多。私有算法我们可以上传自己的算法文件新建私有算法也可以从公有算法库复制过来再进行修改形成自己的私有算法。私有算法支持共享、在线编辑、创建训练任务、下载、复制、删除等操作而且只有自己能查看和编辑除非共享给他人安全性很高。在线编辑私有算法的示例代码基于CNN的图像分类算法可直接在平台算法代码库编辑import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, Dataset # 定义CNN模型私有算法可在线编辑、保存 class CNNModel(nn.Module): def __init__(self, num_classes10): super(CNNModel, self).__init__() self.conv1 nn.Conv2d(3, 32, kernel_size3, padding1) self.relu nn.ReLU() self.maxpool nn.MaxPool2d(kernel_size2, stride2) self.conv2 nn.Conv2d(32, 64, kernel_size3, padding1) self.fc1 nn.Linear(64 * 7 * 7, 512) self.fc2 nn.Linear(512, num_classes) def forward(self, x): x self.conv1(x) x self.relu(x) x self.maxpool(x) x self.conv2(x) x self.relu(x) x self.maxpool(x) x x.view(x.size(0), -1) x self.fc1(x) x self.relu(x) x self.fc2(x) return x # 定义训练函数可直接用于平台训练任务 def train_model(model, train_loader, val_loader, epochs10, lr0.001): criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lrlr) for epoch in range(epochs): model.train() train_loss 0.0 for images, labels in train_loader: optimizer.zero_grad() outputs model(images) loss criterion(outputs, labels) loss.backward() optimizer.step() train_loss loss.item() * images.size(0) # 验证模型 model.eval() val_loss 0.0 correct 0 with torch.no_grad(): for images, labels in val_loader: outputs model(images) loss criterion(outputs, labels) val_loss loss.item() * images.size(0) _, predicted torch.max(outputs, 1) correct (predicted labels).sum().item() # 打印训练日志 train_loss train_loss / len(train_loader.dataset) val_loss val_loss / len(val_loader.dataset) val_acc correct / len(val_loader.dataset) print(fEpoch {epoch1}/{epochs}, Train Loss: {train_loss:.4f}, Val Loss: {val_loss:.4f}, Val Acc: {val_acc:.4f}) return model2. Notebook实例管理Notebook是科研人员的必备工具平台的Notebook实例管理功能能满足我们日常科研的所有需求不管是创建实例、操作实例还是保存代码都很方便。1实例创建创建Notebook实例时我们可以选择开发镜像及版本、资源规格CPU、内存、GPU还能挂载数据集、多个模型、多个算法、多个持久卷到实例的指定目录不用手动复制资源直接就能在Notebook中使用特别方便。比如做一个图像识别的科研项目需要用到PyTorch镜像、GPU资源、MNIST数据集、CNN算法还有一个持久卷用于保存模型和数据创建实例时直接一次性配置好启动实例后就能直接开始调试代码、训练模型不用再手动挂载资源。创建实例时资源规格可以根据项目需求调整比如前期调试代码用CPU就足够了等到正式训练模型时再调整为GPU避免浪费资源。2实例操作Notebook实例支持启动、停止、打开、删除等操作都是一键操作特别简单。比如调试完代码暂时不用实例了就可以停止实例释放资源需要继续操作时再启动实例之前的代码和数据都还在不用重新来。删除实例前一定要把重要的代码、数据保存到持久卷虽然实例销毁后代码会自动保存为算法但数据如果没保存到持久卷会丢失大家一定要注意。3代码保存在Notebook中编辑的算法代码只要点击保存就能直接保存为算法即使实例销毁了代码也会永久保存下次需要使用时直接从算法代码库中调用即可不用担心代码丢失。平时调试代码会随时保存有时候实例意外关闭重新启动后代码依然还在不用重新编写节省了很多时间。3. 数据集管理数据集是科研的基础平台采用双仓库模式公有仓库私有仓库既能共享公共数据又能保护私有数据管理起来特别方便。1双仓库模式公有仓库平台会调拨一些常用的公共数据集比如MNIST、Iris、CIFAR-10等校内用户也能共享自己的数据集我们可以在公有仓库中查看数据集的名称、数据量、来源、描述等信息还能在线查看具体内容直接挂载使用不用自己下载、上传节省时间。私有仓库我们可以上传自己的已标注数据集也可以手动创建数据集进行在线标注私有仓库中的数据集只有自己能查看和使用除非共享给他人安全性很高适合存放一些敏感的科研数据。在线创建并标注数据集的实操步骤以图片分类数据集为例# 在线创建并标注图片分类数据集平台操作步骤 1. 进入平台数据集管理界面点击「新建数据集」选择「私有仓库」 2. 填写数据集名称如cat_dog_classification数据类型选择「图片」标注类型选择「图片分类」 3. 上传图片支持本地文件上传、URL上传可批量上传 4. 进入标签组管理创建标签组如cat、dog自定义标签颜色 5. 进入数据标注界面为每张图片选择对应的标签点击保存完成标注 6. 标注完成后可在线查看标注结果也可导出标注文件支持XML、JSON格式 # 补充数据集清洗操作平台内置功能 平台支持对数据集进行去模糊、去近似、旋转、镜像等清洗操作提升数据质量操作步骤 1. 选择需要清洗的数据集点击「数据清洗」 2. 选择清洗方式如去模糊、去近似 3. 点击「开始清洗」等待清洗完成 4. 清洗完成后可查看清洗后的数据集删除无效数据2标签组管理标注数据集时标签组是必不可少的平台支持设置用于标注的标签组我们可以自定义标签名称和标注颜色比如做目标检测标注我们可以创建“人”“车”“建筑物”等标签每个标签设置不同的颜色标注时更清晰不容易出错。而且标签组可以重复使用比如我做多个图片分类项目都需要用到“cat”“dog”标签创建一次标签组后续都能使用不用重复创建。五、模型全生命周期管理做AI科研最麻烦的就是模型的全生命周期管理——从训练、评估到部署、量化每个环节都需要不同的工具来回切换特别麻烦。我们直接实现了模型全生命周期的一站式管理每个环节都能在平台上完成。1. 在线训练1任务创建创建训练任务很简单直接在平台上选择预训练模型、镜像、训练算法、训练数据集、验证数据集几步就能完成不用编写复杂的训练脚本新手也能快速上手。比如我想训练一个图像分类模型选择预训练的ResNet50模型、PyTorch镜像、自己编写的CNN算法、MNIST训练数据集和验证数据集配置完成后点击启动平台就会自动分配资源开始训练任务。2参数设置训练模型时参数设置特别重要平台支持设置训练轮数、批次大小、学习率、参数映射及资源规格CPU、内存、GPU我们可以根据模型的需求灵活调整参数提升模型性能。常用参数的设置技巧训练轮数一般设置10-50轮根据数据集大小调整数据集越大轮数可以适当增加批次大小根据GPU内存调整GPU内存大批次大小可以设大一点如32、64内存小就设小一点如8、16学习率一般设置0.001-0.01学习率太大模型容易不收敛太小训练速度太慢可以根据训练效果逐步调整。另外平台支持参数映射我们可以将算法中的参数映射到训练任务中在创建任务时直接调整不用修改算法代码特别方便。3任务管理训练任务启动后我们可以实时查看任务状态包括运行中、停止、错误、排队中等还能查看运行时长和实例详情不用担心任务异常。如果任务出现错误我们可以查看日志排查问题如果不需要继续训练也可以手动停止任务。训练完成后我们可以直接保存模型后续用于评估、部署等操作对于排队中的任务我们可以调整顺序或者取消排队灵活管理。查看训练任务日志的实操代码平台API调用import requests BASE_URL http://xxx.xxx.xxx.xxx:8080/api/v1 TOKEN your_token_here def get_training_task_log(task_id): 查看训练任务日志 :param task_id: 训练任务ID在任务管理界面查看 :return: 日志内容 url f{BASE_URL}/training/task/{task_id}/log headers { Authorization: fBearer {TOKEN} } response requests.get(url) if response.status_code 200: log_content response.json()[data][log] print(训练任务日志) print(log_content) return log_content else: print(f获取日志失败{response.json()[msg]}) return None # 调用示例 if __name__ __main__: get_training_task_log(task_idtask-789012)2. 模型管理平台支持多种模型来源既可以直接上传模型文件支持PyTorch、TensorFlow、Keras、Caffe等主流框架也可以通过训练任务直接保存模型不用手动下载、上传模型文件特别方便。而且模型可以分类管理我们可以给模型添加标签、描述后续查找起来更方便比如我训练了多个图像分类模型分别给它们添加“MNIST”“CIFAR-10”“ResNet50”等标签需要使用时直接通过标签就能快速找到。上传模型文件的实操代码平台API调用import requests BASE_URL http://xxx.xxx.xxx.xxx:8080/api/v1 TOKEN your_token_here def upload_model(model_path, model_name, frameworkpytorch): 上传模型文件 :param model_path: 本地模型文件路径 :param model_name: 模型名称 :param framework: 模型框架pytorch/tensorflow/keras/caffe :return: 响应结果 url f{BASE_URL}/model/upload headers { Authorization: fBearer {TOKEN} } files { modelFile: open(model_path, rb), modelName: (None, model_name), framework: (None, framework) } response requests.post(url, filesfiles) if response.status_code 200: print(f模型上传成功模型ID{response.json()[data][modelId]}) return response.json() else: print(f模型上传失败{response.json()[msg]}) return None # 调用示例上传PyTorch模型 if __name__ __main__: upload_model( model_path./mnist_cnn.pth, model_nameMNIST-CNN-Model, frameworkpytorch )3. 在线评估模型训练完成后需要进行评估查看模型的性能比如准确率、精准率、召回率、F1值等平台的在线评估功能能快速完成模型评估而且评估结果可视化方便我们分析模型的不足进行优化。1评估任务创建创建评估任务很简单直接选择需要评估的模型、镜像、数据集、资源规格点击启动平台就会自动分配资源开始评估任务不用编写复杂的评估脚本。比如想评估训练好的MNIST图像分类模型选择模型、PyTorch镜像、MNIST验证数据集配置好资源规格启动评估任务等待评估完成即可。2结果查看评估完成后我们可以在线查看评估任务的状态、进度、配置还能查看模型的各项性能指标包括准确率、精准率、召回率、F1值等这些指标会以图表的形式展示直观清晰方便我们分析模型的不足。比如评估的模型准确率只有85%通过查看评估结果发现是对某些类别的样本识别准确率低后续就可以针对性地优化数据集、调整模型参数提升模型性能。另外我们还能对评估任务进行启动、停止、编辑、删除、查看日志等操作灵活管理评估任务。4. 在线部署验证模型训练、评估完成后最终要部署上线供实际使用平台的在线部署验证功能能实现模型的快速部署还能在线调试不用手动配置部署环境特别方便。1部署任务创建创建部署任务时我们可以选择服务类型HTTP/GRPC根据实际需求选择比如用于Web应用调用选择HTTP服务用于后端服务调用选择GRPC服务效率更高。另外我们还可以选择需要部署的模型、是否自定义推理脚本、部署镜像及资源规格配置完成后点击启动平台就会自动部署模型生成接口地址供外部调用。平台的模型部署采用了容器化部署技术将模型封装到Docker容器中支持弹性扩展当调用量增加时平台会自动增加部署实例确保服务稳定调用量减少时自动减少实例节省资源。2接口调用与验证模型部署完成后平台会展示在线调用推理的接口信息包括接口地址、参数配置等我们可以直接在平台上上传数据进行在线预测查看预测结果还能查看运行日志快速排查问题。Python调用部署接口的实操代码HTTP服务import requests import numpy as np from PIL import Image # 部署接口地址平台部署完成后生成 DEPLOY_URL http://xxx.xxx.xxx.xxx:8082/api/v1/inference # 接口密钥在平台部署任务详情页获取 API_KEY your_api_key_here def predict_image(image_path): 调用模型部署接口进行图像预测 :param image_path: 图像文件路径 :return: 预测结果 # 预处理图像适配模型输入尺寸 img Image.open(image_path).convert(L) # 转为灰度图MNIST模型输入 img img.resize((28, 28)) img_array np.array(img).astype(float32) / 255.0 img_array np.expand_dims(img_array, axis(0, 3)) # 调整输入维度batch_size, height, width, channels # 构造请求数据 data { apiKey: API_KEY, data: img_array.tolist() } # 调用接口 response requests.post(DEPLOY_URL, jsondata) if response.status_code 200: predict_result response.json()[data][predictLabel] predict_prob response.json()[data][predictProb] print(f预测标签{predict_result}预测概率{predict_prob:.4f}) return predict_result, predict_prob else: print(f预测失败{response.json()[msg]}) return None, None # 调用示例 if __name__ __main__: predict_image(image_path./test_image.png)通过这种方式我们可以快速验证模型部署是否成功排查接口调用中的问题确保模型能正常使用。5. 模型在线量化很多时候训练好的模型体积较大推理速度较慢不适合部署在资源有限的设备上平台的模型在线量化功能能有效解决这个问题量化后的模型体积更小、推理速度更快而且能保持较高的性能。1量化任务创建创建量化任务很简单直接选择需要量化的模型、运行的镜像、量化数据集及资源规格点击启动平台就会自动进行模型量化不用手动编写量化脚本特别方便。平台支持INT8量化将模型的浮点数参数转为整数参数既能减少模型体积又能提升推理速度而且量化过程中会尽量保持模型的性能不会出现大幅下降的情况。2性能对比量化完成后平台会直观对比量化前后的模型性能包括准确率、精准率、召回率、F1值、推理速度、模型大小等指标我们可以清晰地看到量化效果判断量化后的模型是否满足需求。举个实际例子我们之前训练的一个图像分类模型量化前模型大小为100MB推理速度为50ms/张量化后模型大小变为25MB推理速度提升到10ms/张准确率只下降了1%效果非常好完全能满足部署需求。六、平台管理与监控对于校内管理员来说平台的管理与监控功能特别重要能实现资源的合理分配、任务的有效管理确保平台稳定运行。1. 资源配额与排队机制1资源限额校级管理员可以设置每个学生可使用的CPU、内存、GPU显存的最大值避免个别学生占用过多资源导致其他学生无法使用确保资源的公平分配。2排队模式当机构内GPU使用量达到上限后平台会自动开启排队模式后续提交的GPU相关任务会进入排队队列等待资源释放后自动启动不用管理员手动调度提升了资源利用率。而且排队队列支持调序管理员可以根据任务的紧急程度调整任务的排队顺序确保紧急任务能优先执行。2. 任务中心1任务调度当资源不足时用户可以按小时申请资源使用权限任务中心会自动进行资源调配任务结束后会自动启动排队中的下一个任务确保资源不闲置提升资源利用率。比如有学生申请使用GPU 2小时任务中心会在资源空闲时分配GPU资源给该学生2小时后任务结束自动释放资源启动下一个排队任务。2任务管理管理员可以统一管理所有任务包括正在进行中的任务、排队中的任务以及历史任务。对于正在进行中的任务可以查看详情、手动停止对于排队中的任务可以调序、取消对于历史任务可以查看开始时间、结束时间、结束原因等方便排查问题、统计资源使用情况。3黑名单管理平台支持将违规使用平台的用户加入黑名单禁止其创建任何科研任务避免其占用资源、影响平台稳定如果用户后续整改也可以将其移出黑名单恢复使用权限。比如有些学生恶意创建大量任务占用过多资源管理员就可以将其加入黑名单规范平台使用。3. 科研任务总览资源管理用户可统一管理自己所有的科研任务包括训练、在线部署、算法代码、模型等。