首页/新闻资讯/正文详情

Atlas 300V 部署 YOLO 实战:从 PyTorch 到 OM 模型转换与推理优化

发布时间:2026/9/26 15:12:36 来源:云帆数科 栏目:资讯中心
Atlas 300V 部署 YOLO 实战:从 PyTorch 到 OM 模型转换与推理优化
1. Atlas 300V 到底是什么它算不算运算加速卡前几天还有个朋友拿着电商页面截图问我atlas 300v 24g 是运算加速卡吗他刚接了一个项目要把 YOLO 检测服务从 GPU 服务器迁到一台国产化服务器上搜了半天看到“Atlas”“加速卡”“推理卡”几个词来回混用越看越没底。先说结论Atlas 300V 24G 本质上是昇腾平台下的 AI 推理加速卡Inference Accelerator。它属于“加速卡”这个大范畴但它不是用来做通用计算的也不是一张“训练卡”。它的定位很明确把训练好的模型拿过来做高性能、低延迟的推理。这就像你有一个做饭能力很强的后厨团队GPU 训练但真正给客人上菜还是需要一个传菜员推理卡Atlas 300V 就是专业传菜员。很多人在这一步就踩坑了。看到“24G 大显存”就觉得它什么都能干甚至想拿它去跑训练结果发现 TensorFlow、PyTorch 的训练接口根本不直接支持回头就开始骂硬件。其实是把定位搞错了。1.1 推理卡和训练卡的区别一张表讲清楚我先用一张表把两类卡的差异列出来后面所有方案选择都基于这张表对比项训练卡推理卡Atlas 300V 属于这列核心目标反向传播、梯度更新、权重迭代前向计算、低延迟、高吞吐典型精度FP32 / BF16 为主INT8 / FP16 为主追求性能密度交互特征需要频繁读写权重、大显存权重相对固定更吃计算通道和数据带宽驱动与框架CUDA / 训练框架深度绑定推理引擎 / 模型编译器加载 OM 模型典型场景模型训练、微调质检、安防、自动驾驶、服务器端推理所以“运算加速卡”这个说法没错但要明确是“AI 推理运算加速卡”。它确实能大量吃掉 YOLO 这类模型的算力消耗让 CPU 只做简单的调度和预处理整体系统的处理能力会有数量级的提升。1.2 硬件规格与市场定位24G 显存意味着什么Atlas 300V 24G 系列市面上常见的是 Atlas 300V Pro也有标称 300V 的版本采购时一定要看清具体后缀是一张 PCIe 接口的 inference 卡。它的关键规格大概是这样的AI 芯片基于昇腾 910 系列处理器的推理版本显存24GB HBM2E带宽比普通 GDDR 高好几个量级接口PCIe 4.0 x16算力官方标称 INT8 性能约 280 TOPSFP16 约 140 TFLOPS 量级不同固件版本有差异以官方规格单和 npu-smi 实际显示为准功耗整卡功耗在 150W 上下比同性能的 GPU 低不少24G 的意义在哪里给你一个直观对比YOLOv5s 的 FP16 模型大概 30MBYOLOv8m 也就 100MB 出头24G 可以同时塞下几十上百个模型副本也能支撑较大的 batch。这意味着你不必频繁换载模型可以做到“模型常驻显存请求随时来随时算”这对高并发部署来说特别重要。如果是从 Triton 这类推理服务器迁移过来的朋友应该能理解这种痛感。1.3 为什么很多人选择 Atlas 做 YOLO 部署抛开爱国情绪不谈选择 Atlas 在工程上确实有几条硬理由第一性价比。在同等算力规格下Atlas 推理卡的整机成本往往比同级 GPU 方案低尤其是整机算力密度高一台 4U 服务器插 8 张卡就能撑起一个中型检测服务集群。第二国产化生态的合规需求。很多政企项目、能源项目、交通项目对核心硬件的国产化率有硬性要求昇腾是目前国内覆盖率最高的 AI 推理生态之一Atlas 服务器从 BIOS、驱动到推理引擎都有完整的国产化路径。第三功耗与散热优势。边缘机房、一体机柜环境里Atlas 的功耗特征比同性能 GPU 友好1000W 电源也能轻松撑起双卡配置。当然也要说清楚它的代价软件栈和 CUDA 生态完全不同所有模型都要经过模型转换工具不能用 pip 装上 torch 直接跑。这也是我写这篇文章的原因——把 YOLO 部署到 Atlas 上的完整路径、坑点、调试思路都理一遍。2. 部署 YOLO 的总体技术路线从 PyTorch 到 OM如果你习惯了 GPU 上“torch 加载权重 - 模型推理”的路径那在 Atlas 上需要先改一个观念Atlas 不直接运行 PyTorch 模型它运行的是 OM 格式Offline Model。2.1 软件栈CANN 到底在干什么Atlas 卡上有一套完整的软件栈最核心的是 CANNCompute Architecture for Neural Networks它相当于昇腾的“CUDA cuDNN TensorRT”综合体。CANN 分成很多层最底层是驱动和固件负责让操作系统认出 NPU 设备往上一层是 AscendCL这是推理应用的编程接口类似 CUDA Runtime再往上是 ATCAscend Tensor Compiler负责把 ONNX、TensorFlow、Caffe、MindSpore 模型编译成 OM最上面还有各种推理 SDK 和 MindSpore 框架支持。对于跑 YOLO 的人来说实际打交道最多的地方就两个ATC 转模型和AscendCL 写推理代码。这两个环节搞定剩下的就是业务逻辑了。2.2 模型迁移路径怎么选YOLO 版本一大堆YOLOv5、YOLOv6、YOLOv8、YOLOv9、YOLOv10、YOLO11……它们基本都是 PyTorch 训练出来的。把 PyTorch 模型弄到 Atlas 上主流的路径有三条路径操作方式适合场景APyTorch 导出 ONNX - ATC 转 OM先用 torch.onnx.export 导出再用 atc 转换最通用推荐优先尝试BMindSpore 训练 - 导出 MindIR - 转换用 MindSpore 重训或加载权重对全栈国产化有硬性要求CPyTorch 模型 - ONNX - 直接用 MindSpore Lite 推理通过 runtime 直接加载 onnx部分快速验证场景我个人推荐第一条路线因为 PyTorch 生态里的 YOLO 权重最多、最成熟导出 ONNX 的工具链也最稳定。ONNX 是中立格式ATC 对它的兼容性目前做得相当好。2.3 YOLO 算子迁移的核心难点理论上 ATC 支持绝大多数 ONNX 算子但 YOLO 系列有几个地方是转换的重灾区第一YOLOv8 及其后续版本的 DFL 模块。它内部用了cumsum、softmax、卷积堆叠的组合在导出时如果算子版本不对很容易出现E10005这类算子不支持的错误。第二动态 shape。训练时代码里经常有-1维度的动态 batch导出 ONNX 时如果不固定 shapeATC 转换后模型尺寸会很大推理性能也差。部署时建议固定输入尺寸比如1,3,640,640。第三NMS 算子。YOLO 的后处理 NMS 在 GPU 时代可以放到 TensorRT plugin 里但在 Atlas 的 OM 模型里官方算子集对 NMS 的支持有限。我的做法是模型里只保留前向输出NMS 全部放到宿主机上用 Python/NumPy 向量化实现。这样既避免算子兼容问题调试也方便。理解了这些难点后面实操就不会一头雾水。3. 把 YOLO 跑在 Atlas 300V 上的完整实操流程下面进入正题。这部分我按一个完整项目的执行顺序来写环境准备、模型导出、模型转换、推理代码、结果验证。假设你已经有一台插了 Atlas 300V 24G 的服务器操作系统是 Ubuntu 20.04 / 22.04 x86_64 或麒麟等国产系统。3.1 第一步确认驱动与 CANN 环境装好物理卡后第一件事不是急着转模型而是先确认设备能被系统识别。在终端执行npu-smi info如果输出包含类似下面的信息说明驱动正常---------------------------------------------------------------------------- | NPU Name Health Power HBM Temp | | 0 910B1 OK 85W 24GB 62C | ----------------------------------------------------------------------------如果提示找不到命令说明驱动没装好。需要从昇腾社区下载对应操作系统的驱动和固件包按顺序安装# 以 root 执行实际操作时安装包名以官方提供的文件名为准 ./Ascend-hdk-910b-npu-driver_*.run --full ./Ascend-hdk-910b-npu-firmware_*.run --full装完驱动后再装 CANN toolkit。CANN 一般装在/usr/local/Ascend/ascend-toolkit/latest下。安装完成后设置环境变量source /usr/local/Ascend/ascend-toolkit/set_env.sh然后跑一个最简单的检查python3 -c import acl; acl.init(); print(acl ok)能打印acl ok说明 Python 接口也通了。这一步是后面所有调试的基础别跳过。注意驱动、固件、CANN toolkit 的版本必须配套。昇腾社区每个版本都有配套版本说明不要只挑最新版装直接找“配套表”对应安装否则很容易出现 NPU 设备状态异常。3.2 第二步从 PyTorch 导出 ONNX以 YOLOv8 为例。假设你已经在 GPU 机器上训练好了模型现在要导出 ONNXimport torch from ultralytics import YOLO model YOLO(best.pt) model.model.eval() dummy_input torch.randn(1, 3, 640, 640) torch.onnx.export( model.model, dummy_input, yolov8n.onnx, opset_version12, # 建议 opset 11~12太新的 opset 偶发算子不兼容 input_names[images], output_names[output0], dynamic_axesNone # 部署场景固定 shape转出来最稳 ) print(export done)这里有两个经验opset_version不要盲目用 17 或 18。ATC 对 opset 11、12 的支持最成熟遇到莫名其妙的转换报错先降到 11 或 12 试试。dynamic_axes一定要设为None。如果你确实需要动态 batch转换时会复杂很多而且性能会打折扣。对于常规检测服务固定 batch1 完全够用。导出后用 onnxruntime 简单跑一遍 ONNX确认输出 shape 和数值正常。这个“先验证 ONNX”的习惯能帮你把问题隔离在“模型导出环节”还是“ATC 转换环节”。3.3 第三步ATC 转 OM参数怎么选这是整个部署流程最关键的一步。基本命令如下atc --modelyolov8n.onnx \ --framework5 \ --outputyolov8n_b1 \ --soc_versionAscend910B1 \ --input_shapeimages:1,3,640,640 \ --output_typeFP16 \ --precision_modeallow_fp32_to_fp16逐个说明参数参数含义备注--framework5表示输入模型是 ONNX1 是 Caffe3 是 TensorFlow5 是 ONNX--soc_version芯片型号必须与 npu-smi 显示的版本一致不同卡可能显示 Ascend910B1、Ascend910B2 等以实际为准--input_shape固定输入维度要和导出 ONNX 时的维度严格一致--output_typeFP16输出层数据类型降低带宽占用但要注意精度--precision_modeallow_fp32_to_fp16允许把 FP32 算子降到 FP16转换效率和性能更好执行成功后会生成yolov8n_b1.om文件。这时可以用一个小命令看看模型信息atc --modelyolov8n_b1.om --output_typeFP16 --soc_versionAscend910B1 --input_shapeimages:1,3,640,640 --mode1或者直接进入后面的推理环节验证更快。注意--soc_version写错是新手最容易犯的错转出来的模型加载必报版本不匹配的错误。不确定时在服务器上执行npu-smi info看 NPU 名称对应即可。3.4 第四步写推理代码pyACL 版Atlas 提供 Python 版的 AscendCL 接口pyACL写推理逻辑比 C 省心很多。下面是一个简化但流程完整的例子核心步骤是初始化设备、加载 OM 模型、准备输入输出内存、执行推理。import acl import numpy as np import cv2 # 初始化 acl.init() device_id 0 acl.rt.set_device(device_id) context acl.rt.create_context(device_id) # 加载模型 model_path yolov8n_b1.om model_id acl.mdl.load_from_file(model_path) # 获取模型输入输出信息 num_inputs acl.mdl.get_num_inputs(model_id) num_outputs acl.mdl.get_num_outputs(model_id) input_size acl.mdl.get_input_size_by_index(model_id, 0) output_size acl.mdl.get_output_size_by_index(model_id, 0) # 申请 device 内存 input_ptr, input_mem acl.rt.malloc(input_size, 2) output_ptr, output_mem acl.rt.malloc(output_size, 2) # 读取图像并做 letterbox 预处理CPU 端 def letterbox(img, new_size(640, 640)): h, w img.shape[:2] r min(new_size[0] / h, new_size[1] / w) new_w, new_h int(w * r), int(h * r) resized cv2.resize(img, (new_w, new_h)) canvas np.full((new_size[0], new_size[1], 3), 114, dtypenp.uint8) top (new_size[0] - new_h) // 2 left (new_size[1] - new_w) // 2 canvas[top:topnew_h, left:leftnew_w] resized return canvas, r, top, left img cv2.imread(test.jpg) # BGR img, scale, top, left letterbox(img) img img[:, :, ::-1].copy() # BGR - RGB img_input (img.astype(np.float32) / 255.0).transpose(2, 0, 1)[None] # 1,3,640,640 # 拷贝输入数据到 device acl.rt.memcpy(input_ptr, input_size, img_input.tobytes(), input_size, acl.rt.MEMCPY_HOST_TO_DEVICE) # 创建 stream 并执行推理 stream acl.rt.create_stream() acl.rt.memcpy(input_ptr, input_size, img_input.tobytes(), input_size, acl.rt.MEMCPY_HOST_TO_DEVICE) acl.mdl.execute(model_id, [input_mem], [output_mem]) # 拷贝输出回 host output_np np.zeros(output_size, dtypenp.uint8) acl.rt.memcpy(output_np, output_size, output_ptr, output_size, acl.rt.MEMCPY_DEVICE_TO_HOST) output np.frombuffer(output_np, dtypenp.float16).reshape(1, 84, 8400) # 清理资源 acl.rt.destroy_stream(stream) acl.rt.free(input_ptr) acl.rt.free(output_ptr) acl.mdl.unload(model_id) acl.rt.destroy_context(context) acl.rt.reset_device(device_id) acl.finalize()这段代码的依赖关系是这样的acl.mdl.execute是同步执行接口如果换用acl.mdl.execute_async还要搭配acl.rt.synchronize_stream。同步接口简单但吞吐量受限要上高并发必须用异步接口加多 stream。3.5 第五步后处理与 NMSYOLOv8 的 OM 输出 shape 是1,84,8400其中 84 4 个框坐标 80 个类别分数8400 是三个尺度特征图展开后的候选框总数。后处理要做的就是从这 8400 个候选中筛选出目标。核心步骤是def postprocess(pred, conf_thres0.25, iou_thres0.45): # pred: (1, 84, 8400)先转成 (8400, 84) pred pred[0].transpose(1, 0) # 8400 x 84 boxes pred[:, :4] cls_scores pred[:, 4:] # 去掉背景概率或取 max class score scores cls_scores.max(axis1) mask scores conf_thres boxes, scores, cls_ids boxes[mask], scores[mask], cls_scores.argmax(axis1)[mask] # 把 cxcywh 转 xyxy boxes_xyxy np.zeros_like(boxes) boxes_xyxy[:, 0] boxes[:, 0] - boxes[:, 2] / 2 boxes_xyxy[:, 1] boxes[:, 1] - boxes[:, 3] / 2 boxes_xyxy[:, 2] boxes[:, 0] boxes[:, 2] / 2 boxes_xyxy[:, 3] boxes[:, 1] boxes[:, 3] / 2 # 转回原图坐标先除以 scale再减去 left/top boxes_xyxy[:, 0] (boxes_xyxy[:, 0] - left) / scale boxes_xyxy[:, 1] (boxes_xyxy[:, 1] - top) / scale boxes_xyxy[:, 2] (boxes_xyxy[:, 2] - left) / scale boxes_xyxy[:, 3] (boxes_xyxy[:, 3] - top) / scale # NMS可以用 numpy 实现或直接装一个 numpy-nms 库 keep nms(boxes_xyxy, scores, iou_thres) return boxes_xyxy[keep], scores[keep], cls_ids[keep]NMS 如果用纯 Python 写循环8400 个候选会慢得让人失去耐心。建议用向量化实现或者直接引入torchvision.ops.nms宿主机上装 torch CPU 版即可来处理速度能快 10 倍以上。到这里一条完整的 YOLO 推理链路已经通了。测试一张图如果框的位置和类别基本正确说明主流程没问题。4. 性能调优、常见问题与实战避坑指南主流程跑通只是开始生产环境里的性能、稳定性才是真正见功夫的地方。这一部分我把自己实测经验里最有价值的几条整理出来。4.1 性能调优的几个关键手段第一尽量用 AIPP 把预处理下沉到 NPU。ATC 转换时可以通过--insert_op_confaipp.cfg指定 AIPP 配置把 resize、cvtcolor、归一化做到硬件里。这样做的好处是 CPU 端省掉了大量拷贝和计算推理吞吐可以提升 20%~30%。一个最基本的 AIPP 配置如下{ aipp_op: [ { input_format: RGB, src_image_size_h: 640, src_image_size_w: 640, crop: false, mean: [0.0, 0.0, 0.0], min: [0.0, 0.0, 0.0], var_reci: [0.003921569, 0.003921569, 0.003921569] } ] }注意AIPP 做不了动态 letterbox 的 padding 偏移或者要写复杂的 padding 参数所以我的建议是如果你的输入图像宽高比固定AIPP 很香如果像检测场景要处理各种分辨率的图还是老老实实 CPU 端做 letterboxAIPP 只做归一化。第二用异步多 stream 提高吞吐。单线程同步推理一张图大概要 3~5 毫秒看起来不慢但并发一上来 CPU 和 NPU 的流水就断了。把推理改成acl.mdl.execute_async再配合线程池每个线程绑定自己的 context 和 stream吞吐可以轻松翻倍。第三batch 合并。检测服务经常有大量单张请求如果业务允许攒批可以转模型时用--input_shapeimages:4,3,640,640把多个请求合并成一个 batch 推理NPU 利用率显著提升。这需要你在服务层做一个简单的请求队列超过 4 张或超时 5ms 就触发一次推理。第四输出用 FP16。前面 ATC 命令里已经加了--output_typeFP16后处理计算时注意把np.frombuffer的 dtype 设置成float16否则解析出来的数值完全是乱的。FP16 在检测任务里精度损失通常可以忽略但对后处理解码写法的要求更严格。4.2 常见问题速查表我把这段时间收到的高频问题整理成一张表方便直接对照排查现象可能原因排查 / 解决办法npu-smi info看不到卡驱动未装好或固件未升级重装配套版本的驱动与固件重启服务器ATC 报E10005找不到算子ONNX 里有昇腾不支持的算子或 opset 版本过高换 opset 11/12 重新导出把动态 shape 去掉升级 CANN 版本ATC 报 SOC 版本不匹配--soc_version写错执行npu-smi info查询实际芯片型号后重试转换成功但推理结果全错输入格式不对或 AIPP mean/var 写错或输出 dtype 解析错检查输入是 RGB 还是 BGR检查是否做了归一化确认输出是 FP16 还是 FP32推理偶发返回错误码 507018 / 507033device 内存不足或 stream 未同步检查是否并发申请了过大内存异步执行记得调用同步接口检测框偏移严重letterbox 的 padding 在 postprocess 里没有还原把top/left/scale参数正确传回后处理还原坐标模型加载慢OM 模型第一次加载需要初始化图的执行器服务启动时预热模型或常驻模型不重复加载4.3 几条独家心得第一调试时要学会看日志而不是瞎猜。CANN 的日志在/var/log/npu/和~/ascend/log/下报错时先查plog。有一次我遇到推理偶发 507033 错误排查半天最后发现是同一张卡上另一个进程占满显存应用层日志完全看不出端倪一看 NPU 日志立刻定位。第二OM 模型和文件绑定很严格。同一份 ONNX 转出来的 OM换了 CANN 版本或者换了芯片版本都可能出现加载报错。生产环境里升级 CANN 一定要重新转一遍模型别偷懒。第三对 YOLO 这类小模型来说瓶颈往往不在 NPU 算力而在“数据搬运”。图像从 CPU 拷贝到 NPU、后处理从 NPU 拷回 CPU这段 H2D/D2H 的开销占了整个推理时间的很大比例。性能优化优先看拷贝次数减少acl.rt.memcpy的次数往往比调模型参数效果更明显。第四如果是多卡服务器注意把不同请求分发到不同 device_id 上利用acl.rt.set_device做设备隔离。一张卡上的多个进程会互相争抢 HBM导致单个模型延迟飙升。5. 从单机验证走向线上部署最后再说说从验证代码到上线服务这段路。很多朋友卡在“模型能跑通了但不稳定”这个阶段。我的建议是不要自己从零写一个推理服务优先选昇腾社区现成的方案。CANN 套件里有 MindX SDK它提供了推理服务化组件可以直接把 OM 模型包装成标准推理服务支持 HTTP/gRPC 接口还内置了模型管理、动态 batch、多路输入这些能力。如果是 YOLO 系列昇腾社区有专门的模型样例和文档照着改比自己写工程框架稳得多。如果你的业务平台已经是 Triton 或者类 TensorFlow Serving 的架构昇腾也有原生的推理服务插件可以把 Atlas 卡接进现有架构业务代码几乎不用改。这一点对于已经在跑 GPU 服务的团队尤其香迁移成本比想象中低。整体来说Atlas 300V 24G 这张卡跑 YOLO 是完全没问题的而且是少数能把“国产化硬件 主流检测模型”这条链路跑得这么顺的组合。它的确是一张运算加速卡但它精准的定位是 AI 推理加速把它的角色弄清楚后面所有方案选型就不会跑偏。踩过几次坑之后我最深的体会是在 Atlas 上做推理真正花时间的不是模型转换而是把数据流、内存管理、并发策略想清楚。先把这几件事理明白一张 300V 就能稳定扛住一个中等规模的检测服务。

相关推荐

Claude Code 学术写作技能配置:从文献调研到格式校对的全流程效率提升
Claude Code 学术写作技能配置:从文献调研到格式校对的全流程效率提升

学术写作这件事,最折磨人的从来不是"写"本身,而是写之前的文献梳理、写之中的引用管理、写之后的格式校对。我见过太多研究生和科研人员,论文内容做得扎实,却在参考文献格式上被审稿人挑出一堆毛病,或者在文… · 2026/9/26 15:12:36

LM Studio API Token 获取与权限配置完全指南:TaoToken 统一 Key 接入本地模型
LM Studio API Token 获取与权限配置完全指南:TaoToken 统一 Key 接入本地模型

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

数据库课设下载即用包:从解压到答辩避坑指南
数据库课设下载即用包:从解压到答辩避坑指南

简介:面向山东科技大学数据库系统概论课程设计的配套资料,适合正在学习数据库建表与改表操作、希望通过实践巩固理论的初学者,以及需要完成类似课程作业的学生。资源包共5个文件,压缩后大小约197KB,包含C源代码、可执行… · 2026/9/26 15:12:29

用中转API调用LLM做AI技术探索:TaoToken统一Key接入Python实战
用中转API调用LLM做AI技术探索:TaoToken统一Key接入Python实战

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

Remotely Save 同步算法 v1 决策表全解析:三类记录源、11 条互斥完备分支与源码印证
Remotely Save 同步算法 v1 决策表全解析:三类记录源、11 条互斥完备分支与源码印证

数据同步 【免费下载链接】remotely-save Sync notes between local and cloud with smart conflict: S3 (Amazon S3/Cloudflare R2/Backblaze B2/...), Dropbox, webdav (NextCloud/InfiniCLOUD/Synology/...), OneDrive, Google Drive (GDrive), Box, pCloud, Yandex Disk, K… · 2026/9/26 15:43:09

睡前15分钟表达力训练:从即兴卡顿到脱稿演讲的微习惯法
睡前15分钟表达力训练:从即兴卡顿到脱稿演讲的微习惯法

睡前刷手机的时间,足够把表达力练出来。我不是在开玩笑。过去一年,我坚持在睡前做一套15分钟的演讲训练,从开会发言会脸红、即兴表达大脑空白,到现在能当着几十人做脱稿分享,变化是实打实的。这套方法不需要观众、不需… · 2026/9/26 15:43:03

昇腾Atlas 300V Pro 24G部署YOLO:从硬件到推理的完整链路
昇腾Atlas 300V Pro 24G部署YOLO:从硬件到推理的完整链路

Atlas这个单词,学地理的人会想到地图册,做 AI 的人会想到华为昇腾的 Atlas 加速卡。最近“atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”这两个问题被反复问起,说明不少朋友手里已经拿到或者正在考虑入手这张卡,但还没完全… · 2026/9/26 15:43:03

3 条命令搞定 MSEdgeRedirect:把 Edge 重定向还给默认浏览器
3 条命令搞定 MSEdgeRedirect:把 Edge 重定向还给默认浏览器

3 条命令搞定 MSEdgeRedirect:把 Edge 重定向还给默认浏览器 【免费下载链接】MSEdgeRedirect A Tool to Redirect News, Search, Widgets, Weather and More to Your Default Browser 项目地址: https://gitcode.com/GitHub_Trending/ms/MSEdgeRedirect 点一… · 2026/9/26 15:42:57

YOLOv8n+PyQt5教室行为检测系统实战指南
YOLOv8n+PyQt5教室行为检测系统实战指南

简介:本资源是一套基于YOLOv8与PyQt5开发的课堂行为实时检测系统,面向教育技术从业者、一线教师及计算机视觉初学者,解决传统课堂人工监管效率低、行为分析粗放等痛点,无需编程基础即可部署使用。压缩包共2000个文件,含… · 2026/9/26 15:42:56

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码