新闻详情

新闻详情

首页 / 资讯中心 / 详情

Atlas 300V Pro推理卡跑通YOLOv5全流程:从环境搭建到性能调优

发布时间:2026/9/25 19:29:56来源:尧图网络
Atlas 300V Pro推理卡跑通YOLOv5全流程:从环境搭建到性能调优
做AI部署这行这两年听得最多的词里“atlas”绝对排得上前排。不过刚入行的朋友很容易被这个词绕晕因为市面上叫Atlas的东西太多了有数据库的、有地图软件的、还有希腊神话里扛天的巨人。但要是在AI推理、边缘计算这个圈子里说Atlas那基本就锁定了华为昇腾Ascend的Atlas系列硬件和软件栈。我最近刚好在一台Atlas 300V Pro推理卡上完整跑通了YOLOv5的部署从环境搭建到模型转换再到推理调优踩了不少坑也沉淀了不少经验这篇就把整个过程和关键细节掰开揉碎讲清楚给同样在这条路上折腾的朋友做个参考。1. 先把Atlas 300V 24G的身份搞清楚很多人在热搜里问“Atlas 300V 24G是运算加速卡吗”这个问题看起来基础但其实问到了点子上。答案是它是运算加速卡但它是专门为**推理Inference**设计的加速卡不是用来做训练的GPU。这个定位差别非常关键直接决定了你怎么用它、怎么评价它的性能。1.1 推理卡和训练卡到底差在哪先说人话版本训练卡是“学知识”的你得给它喂海量数据让模型反复迭代把权重调出来这过程吃算力吃得厉害精度也要求高所以训练卡通常是FP32、FP16通用计算能力强悍的大核心推理卡是“用知识”的模型已经训练好了它只需要把输入数据跑一遍前向计算得出结果这个过程对算力的要求相对低一些但对单位功耗下的吞吐量、时延稳定性、并发处理能力更看重。Atlas 300V Pro24GB版本就是这样一块推理卡。它上面集成了昇腾AI处理器核心工作是跑已经训练好的模型比如YOLO目标检测、OCR文字识别、人脸关键点检测这类任务。你拿它去做大模型训练肯定不合适但拿它来做生产环境里24小时不间断的推理服务它比同价位的GPU卡往往更有优势尤其是在功耗、体积、性价比这三个维度上。1.2 24G显存意味着什么24GB的显存容量在推理卡里算是大块头了。这里有个很直观的算法以YOLOv5s为例FP16精度下的模型权重大概30MB左右加上中间层的特征图、临时变量单路视频推理吃掉的显存一般不超过2GB。但如果你要跑YOLOv5x这种大模型或者用TensorRT/ATC工具做多batch优化把4路、8路视频流同时送进去做并行推理显存占用就会成倍上涨。我实测的情况是用YOLOv5s模型batch size设为8FP16精度显存占用大概在4GB到6GB之间如果切到YOLOv5m或者YOLOv7batch size不变显存占用能冲到10GB以上。所以24G这个容量给你留了很大的余量意味着你不光能跑轻量模型重型检测模型也能挂多路并发甚至可以在同一张卡上同时部署两三个不同任务的模型。这块卡还有一个好处——单卡多模型共存这对边缘计算盒子来说太实用了。1.3 为什么很多人选它做YOLO部署YOLO系列是目标检测领域的事实标准从v3到v5、v7、v8工业界用得最广。Atlas 300V Pro官方软件栈CANN对YOLO系列的支持比较成熟从ONNX模型转OM模型昇腾的离线模型格式的工具链已经很顺手不像早期那样动不动就报算子不支持。另外这卡的TDP功耗只有72W左右不需要像GPU那样动辄300W的供电和散热要求放进工控机、边缘服务器里非常合适。所以“Atlas 300V YOLO”这个组合在智慧园区、明厨亮灶、工业质检、安防监控这些场景里相当常见几乎是目标检测边缘部署的默认选项之一。2. 整套部署方案的总体设计和关键决策跑通一个YOLO模型不难难的是跑得稳、跑得快、上线不翻车。所以我这次部署在最开始就定了几个原则工具链用最新稳定版、模型先验证后转换、推理用异步接口、图像预处理放在硬件里做。这四条看着简单实际执行起来每一步都有门道。2.1 选型思路为什么走了“PyTorch→ONNX→OM”这条路目前昇腾平台部署YOLO有三条常见路线。第一是把PyTorch模型直接用ATC工具转成OM格式中间绕不开ONNX这个中转站第二是用MindSpore重新训练或迁移模型再转OM这条路改造成本太大不推荐第三是用torch_npu直接把PyTorch模型跑到昇腾设备上这条路适合调试但生产部署时性能和稳定性不如OM离线模型。我走的是第一条也是最成熟的一条路PyTorch训练好的权重 → 导出ONNX → ATC工具转OM → 用ACLAscend Computing Language接口加载OM做推理。为什么非要转成OM因为OM是昇腾的离线模型格式转换过程中ATC工具会对算子进行融合、内存复用、指令调度等静态优化推理时不需要再解析原始网络结构执行效率远高于动态加载。2.2 硬件环境的基础认知部署之前先把硬件底子摸清楚。Atlas 300V Pro是一张PCIe接口的卡物理形态跟显卡很像插到服务器PCIe x16槽位上就能用。但它不是一个独立的计算节点它依赖宿主机的CPU做数据预处理和调度。所以宿主机配置不能太差我这边用的是Xeon Silver 4210的处理器、64GB内存操作系统是Ubuntu 20.04 x86_64。这里提醒一句昇腾的软件栈对操作系统版本有严格限制Ubuntu 20.04、CentOS 7.6这些是官方验证过的版本别想着用最新的Ubuntu 22.04或者Debian 12去硬刚大概率会踩到内核兼容性的坑。2.3 软件栈版本配对血泪教训昇腾软件栈最让人头疼的就是版本配对。CANNCompute Architecture for Neural Networks是核心软件栈它又依赖固件和驱动NPU固件版本需与驱动版本一一对应然后才是应用开发库。我的建议是直接去昇腾社区下载“Ascend-cann-toolkit”和“Ascend-cann-nnal”两个安装包版本必须完全一致。我这次用的版本组合是CANN 7.0.RC1配套驱动版本为24.1.rc1固件为24.1.rc1。装完用npu-smi info命令验证能看到卡的温度、显存、算力状态就说明驱动和固件没问题。这个验证步骤千万别跳我就见过有人驱动装到一半断电结果重新上电后卡直接不识别最后只能重装系统。3. 实操全程从零到一完成YOLOv5的昇腾部署前面把思路捋清楚了这部分直接上实操过程。我会按照实际的执行顺序把每一步命令和关键参数拆开来说尽量做到你拿这篇笔记就能照着敲。3.1 安装驱动和固件先把下载好的驱动包传到宿主机上执行安装chmod x Ascend-hdk-310p-npu-driver_24.1.rc1_linux-x86_64.run ./Ascend-hdk-310p-npu-driver_24.1.rc1_linux-x86_64.run --full驱动装完重启再装固件chmod x Ascend-hdk-310p-npu-firmware_24.1.rc1_linux-x86_64.run ./Ascend-hdk-310p-npu-firmware_24.1.rc1_linux-x86_64.run --full注意固件升级有个大坑它要求所有NPU上的进程都结束否则会报“still busy”。最简单的方法是装固件之前先停掉所有容器、kill掉npu-smi相关的监控进程然后干净环境里装。装完验证npu-smi info输出里能看到Chip Count : 1和Chip ID0就说明识别到了。如果这里报错先查一下/var/log/npu-smi下面的日志或者重新插拔卡确保PCIe链路正常。3.2 安装CANN工具包CANN是昇腾的应用开发套件它有多个组件推理部署只需要两个核心包toolkit和nnal。前者提供ATC模型转换工具和ACL运行库后者是神经网络加速库包含算子实现。chmod x Ascend-cann-toolkit_7.0.RC1_linux-x86_64.run ./Ascend-cann-toolkit_7.0.RC1_linux-x86_64.run --install默认安装路径是/usr/local/Ascend/ascend-toolkit/latest。安装完成后需要配置环境变量我习惯写进~/.bashrcsource /usr/local/Ascend/ascend-toolkit/set_env.sh然后验证一下ATC工具是否可用atc --version能输出版本号就说明CANN环境没问题了。如果提示atc: command not found大概率是环境变量没生效重新source一下或者新开一个终端再试。3.3 安装Python推理环境ACL提供了Python接口pyACL这个对快速原型验证非常友好不需要写一堆C代码。我先装好Python 3.8然后激活CANN自带的Python环境source /usr/local/Ascend/ascend-toolkit/set_env.sh python3 -c import acl; print(acl.__version__)如果你是用虚拟环境记得把CANN的lib路径加进PYTHONPATH不然import acl会报module not found。另外numpy、opencv-python这些基础库也得装好图像读入和前后处理都要用到。3.4 PyTorch模型导出为ONNX昇腾的ATC工具支持直接转ONNX也可以转Caffe但Pytorch模型不能直接吃得先走一遍ONNX导出。我在PyTorch里加载YOLOv5s权重这里以官方ultralytics的yolov5s.pt为例然后导出ONNXimport torch import sys sys.path.append(yolov5) model torch.load(yolov5s.pt, map_locationcpu)[model].float() model.eval() dummy_input torch.randn(1, 3, 640, 640) torch.onnx.export( model, dummy_input, yolov5s.onnx, opset_version11, input_names[images], output_names[output0] )这里有两个关键点值得单独说。第一个是opset_version。ONNX的算子版本直接影响ATC能否成功解析。实测opset 11是兼容性和算子支持度都比较好的版本opset 13偶尔会遇到一些新算子ATC不认的情况。第二个是动态轴问题。如果导出ONNX时用了动态batch比如dynamic_axes{images: {0: batch}}ATC转换时必须显式指定动态维度的范围不然转换后的OM模型可能推理时报错。但昇腾推理卡对动态shape的支持是通过动态shape模式实现的性能会比固定shape差一些。所以我的建议是除非生产环境必须支持变长输入否则一律用固定shape导出。我这边固定输入是1x3x640x640也就是单张640分辨率的图片后面做batch优化时再用ATC的multi-batch特性把batch拉上去。3.5 ATC转换核心参数逐个拆解转OM的命令是这么写的atc \ --modelyolov5s.onnx \ --framework5 \ --outputyolov5s_b1 \ --input_shapeimages:1,3,640,640 \ --soc_versionAscend310P3 \ --insert_op_confaipp_yolov5.cfg \ --output_typeFP16 \ --input_formatNCHW逐个参数来说。--framework5说明输入是ONNX格式这个数字别记混了1是Caffe5是ONNX其他值别乱填。--soc_versionAscend310P3这个得查你的卡型号对应的soc版本。Atlas 300V Pro对应的就是Ascend310P3如果你拿的是300I Duo或者其他型号这里要改成对应的值。怎么查跑npu-smi info看芯片型号然后对照手册找soc_version这一步错了转换必定失败。--insert_op_confaipp_yolov5.cfg是图片预处理配置。AIPPAI Preprocessing是昇腾硬件自带的图像预处理单元它可以在数据进入NPU之前完成缩放、归一化、色域转换这些操作不占用CPU和AI Core的资源。YOLOv5的预处理要求是把图像缩放到640x640颜色通道从BGR转RGB然后除以255做归一化。这些都可以写进AIPP配置里让硬件去做。配置如下aipp_op { aipp_mode: static input_format: RGB888_U8 src_image_size_w: 640 src_image_size_h: 640 crop: true load_start_pos_h: 0 load_start_pos_w: 0 crop_size_w: 640 crop_size_h: 640 min_chn_0: 0 min_chn_1: 0 min_chn_2: 0 var_reci_chn_0: 0.003921569 var_reci_chn_1: 0.003921569 var_reci_chn_2: 0.003921569 }简单解释input_format是模型输入要求的通道顺序YOLOv5是RGBvar_reci_chn就是1/255这几个参数搞明白你就能玩转AIPP的归一化不需要在Python代码里再写一遍img / 255.0。--output_typeFP16这个参数挺重要的。模型转换时把权重和中间计算精度压到FP16推理速度会明显提升显存占用减半。但代价是精度有轻微损失对检测任务来说mAP的下降通常不到0.5个点完全在可接受范围内。转换完之后会生成yolov5s_b1.om文件。这个文件就是昇腾设备上的“可执行模型”后面所有推理都靠它。3.6 用ACL写推理代码OM模型拿到手剩下就是写推理程序。这里我用Python的pyACL接口完整演示一遍从读图到输出检测结果的流程核心代码片段如下import acl import cv2 import numpy as np # 初始化 acl.init() ret acl.rt.set_device(0) context, ret acl.rt.create_context(0) # 加载模型 model_path byolov5s_b1.om model_id, ret acl.mdl.load_from_file(model_path) # 获取模型输入输出信息 input_desc acl.mdl.create_tensor_desc(model_id, 0) output_desc acl.mdl.create_tensor_desc(model_id, 0) input_size acl.mdl.get_tensor_size(input_desc) output_size acl.mdl.get_tensor_size(output_desc) # 申请设备内存 input_buffer, ret acl.rt.malloc(input_size, 2) output_buffer, ret acl.rt.malloc(output_size, 2) # 准备输入数据 img cv2.imread(test.jpg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img cv2.resize(img, (640, 640)) input_data np.ascontiguousarray(img.astype(np.float32) / 255.0) # 拷贝数据到设备 acl.rt.memcpy(input_buffer, input_size, input_data.tobytes(), input_size, 1) # 执行推理 stream, ret acl.rt.create_stream() acl.mdl.execute_async(model_id, input_buffer, output_buffer, stream) acl.rt.synchronize_stream(stream) # 从设备取回输出 output_data acl.rt.memcpy_d2h(output_buffer, output_size) output_arr np.frombuffer(output_data, dtypenp.float16).reshape((1, 25200, 85)) # 后处理部分NMS等 # ... 这里省略逻辑和标准YOLOv5后处理一致这段代码里埋了几个容易出错的地方我单独说一下。第一个是输入数据的内存布局。ACL要求输入数据是连续内存而且类型要和模型输入一致。比如模型输入是FP32你传到设备上的数据必须是FP32的bytes流不能直接传uint8的图片数组。所以上面代码中astype(np.float32)这步不能省。第二个是输入数据拷到设备上用同步拷贝就行acl.rt.memcpy的最后一个参数是传输类型1表示H2Dhost to device2表示D2Hdevice to host两个方向别搞混。第三个是输出数据的解析。YOLOv5的输出shape是[batch, 25200, 85]其中25200 3个尺度×(80×8040×4020×20)85 4个框坐标 1个置信度 80个类别概率。但这里有个坑如果ATC转换时指定了--output_typeFP16输出数据就是FP16的数组解析时必须用np.float16读取如果没指定默认是FP32。很多人解析出一堆乱码就是类型没搞对。第四个是batch size的问题。上面代码里模型是b1batch为1。如果转OM时用了多batch比如input_shapeimages:8,3,640,640那输入数据的shape必须严格是8路图像拼接后的tensor不然会报size mismatch。3.7 利用ATC的AOE工具做性能调优模型能跑通只是第一步生产环境还要追求极致性能。CANN提供了一个叫AOEAscend Optimization Engine的工具它能对模型做算子级自动调优找到每个算子在当前硬件上的最优tiling策略tiling就是算子计算切分方式直接决定NPU利用率。用法非常简单aoe --framework5 \ --modelyolov5s.onnx \ --outputyolov5s_optimized \ --soc_versionAscend310P3 \ --input_shapeimages:1,3,640,640它会跑一段时间的搜索生成一个调优后的OM模型。我在实测中发现AOE优化后的模型比直接ATC转换的模型推理时延能再降低5%到15%具体看算子分布。这个工具很多新手不知道白白浪费了部分性能挺可惜的。需要说明的是AOE调优过程会比较久它要对每个算子做多组参数搜索YOLOv5s大概需要二三十分钟左右。如果模型经常变我会建议在模型定稿后再做AOE调优别每次改模型都调一次。4. 推理卡上的性能测试实录部署完成后我按照行业里的惯例做了一轮完整的性能摸底。测试用的是固定的1000张图片包含不同分辨率、不同目标的场景统计单张推理时延在CPU端、NPU端的差异以及多batch模式下的吞吐表现。4.1 单卡单batch的基准数据在没有做AIPP和AOE优化之前直接用Python读取图像、做预处理、再送进NPU推理单张图片的端到端时延包括图像解码、缩放、归一化、推理、后处理大约在18毫秒到22毫秒之间。其中图像预处理环节OpenCV resize normalize大概占了5毫秒左右后处理NMS占了3毫秒左右真正的NPU推理反而只有8到10毫秒。这个数据说明一个现象当推理卡算力变强之后CPU端的前后处理往往会成为新的瓶颈。这也是我前面强调用AIPP把预处理下沉到硬件的原因。开了AIPP之后图像缩放和归一化不再走CPU单张图片的端到端时延能压到12到15毫秒左右吞吐量提升20%以上。4.2 多batch模式下的吞吐表现用ATC转换模型时可以一次性指定多个batch具体做法是atc \ --modelyolov5s.onnx \ --framework5 \ --outputyolov5s_b4 \ --input_shapeimages:4,3,640,640 \ --soc_versionAscend310P3 \ --output_typeFP16推理时把4张图拼成一个batch送进去。当然多batch不是免费的它的吞吐增益会随batch增大而递减。我实测的结果是Batch大小平均单batch推理时延(ms)折算单张时延(ms)吞吐量(张/秒)19.59.5105214.37.15140423.05.75174842.65.32188可以看到batch从1提升到4吞吐量从105涨到174收益非常明显但batch从4到8吞吐量只从174涨到188收益急剧衰减因为NPU的算力已经接近饱和了。所以我个人推荐如果处理的是摄像头视频流而且不在乎单路时延batch4是最甜的点。另外必须提醒开启多batch后后处理的代码也要相应修改。YOLOv5的输出里每个batch的检测结果堆在一起你需要知道哪些输出属于哪一路输入通常做法是通过结果的batch索引字段来切分。这块代码逻辑比单batch复杂调试时要特别小心别把A路的检测框画到B路的图上去了。4.3 与GPU方案对比的一个真实感受我手头有块GTX 1080 Ti功耗250W单精度算力在FP32下大约11 TFLOPS用TensorRT跑YOLOv5s单batch端到端时延大概5到8毫秒。Atlas 300V Pro在单batch端到端时延上确实比1080 Ti慢一些但它的功耗只有72W只有1080 Ti的不到三分之一。如果按“单位功耗下每秒能处理多少帧”来算Atlas 300V Pro的优势就体现出来了。在边缘机房或者户外机柜这种供电和散热都受限的场景里这种能效比优势是实打实的。所以如果你评估的是数据中心里那种电费不用愁的机架式服务器选GPU没毛病但如果是做边缘盒子、工控机、一体机这种产品Atlas 300V Pro绝对值得考虑。5. 部署过程中踩过的坑和排查技巧这部分是全文价值最高的地方我把部署过程中遇到过的典型问题整理出来每一条都是真金白银踩出来的。建议收藏起来遇到问题直接对照排查。5.1 驱动识别不到NPU卡或状态异常现象是npu-smi info报错说找不到设备或者设备状态显示offline。排查思路首先确认物理连接PCIe插槽是不是插牢了最好换一个插槽试试其次查驱动日志/var/log/npu-smi/下面的内容看看有没有PCIe链路训练失败的信息再者就是确认固件和驱动版本是否配对。昇腾的版本配对非常严格驱动和固件版本不一致会导致设备起不来。我遇到过的最难缠问题是PCIe链路速率跑在Gen2而不是Gen3性能直接掉一半最后是进BIOS把PCIe链路速度手动锁定在Gen3才解决。5.2 ATC转换时报算子不支持或解析失败这个坑在转YOLOv7、YOLOv8这些新模型时尤其常见。报错信息类似于[ERROR] OP: [Slice] not supported或者Unsupported op type XXX。大多时候的原因是你的ONNX里带了ATC这个版本还不支持的算子。解决办法有这么几个方向一是升级CANN到最新版本新版本算子覆盖更全二是修改模型结构把不支持的算子替换成等价的算子组合比如把Slice拆成Split加Concat三是降低ONNX的opset版本有些新版本ONNX算子反而在ATC里识别不了。我用的YOLOv5s没遇到算子不支持的问题但转YOLOv8时遇到过DCN可变形卷积算子不支持的情况后来在模型里把DCN替换成了普通卷积精度掉了0.3个点但至少在NPU上能跑了。5.3 推理结果完全错误坐标全乱模型能跑但检测框位置完全不对这是比较诡异的问题。常见原因有两个。第一个是AIPP配置里的颜色空间和归一化参数没配对或者Python代码里预处理做了一遍、AIPP又做了一遍导致数据被处理了两次。解决办法是二选一要么全部用AIPP做预处理要么全部在Python里做千万不要混用。第二个是输出数据的shape解析错了。YOLOv5的输出在ONNX里可能是[1, 25200, 85]但ATC转换后输出的维度顺序可能与ONNX略有变化你得用acl.mdl.get_output_shape_by_index去查实际的输出shape再按这个shape去解析不要想当然。这个查实际shape的动作非常重要能省掉很多无谓的调试时间。5.4 推理速度忽快忽慢时延抖动明显这个现象在跑视频流的时候比较常见。排查方向有两个。先看CPU占用率。如果CPU经常被打满说明预处理和调度环节是瓶颈把预处理下沉到AIPP或者用多线程并行处理图像解码都能缓解。再看NPU的利用率。用npu-smi info持续监控NPU的算力使用率如果使用率经常掉到50%以下说明喂数据的速度跟不上NPU消费的速度是“饥饿”状态。解决方法是用更大的batch喂数据或者用ACL的异步推理接口让NPU在处理当前batch的同时CPU在准备下一个batch的数据。5.5 显存占用居高不下如果在同一张卡上部署了多个模型或长时间运行推理服务可能会因为显存碎片化导致可用显存越来越少。措施有这几个一是同一个容器或进程里复用输入输出buffer不要每次推理都重新申请设备内存二是如果模型不常切换尽量用acl.mdl.load_from_file_with_mem加载到指定内存池方便统一管理三是定期检查是否有内存泄漏用acl.rt.mem_info查看设备内存使用情况如果每次都涨一点多半是缓冲区没释放。5.6 常见问题速查表现象可能原因快速排查动作npu-smi找不到设备驱动/固件版本不配对检查版本号、重刷固件ATC转模型报算子不支持ONNX算子版本过新或算子本身不支持转ONNX时降opset、升级CANN推理输出全乱预处理重复做或输出格式解析错检查AIPP配置、确认实际输出shape推理时延抖动CPU预处理饱和或喂数据太慢开AIPP硬件预处理、调大batch显存持续上涨内存泄漏或buffer未释放检查acl.rt.malloc是否配对free6. 部署完之后的几点切身感悟在这次Atlas 300V Pro上部署YOLOv5的经历中我最大的体会是工具链的选型和版本锁定比模型本身更影响成败。昇腾平台发展速度快CANN的迭代频率很高社区资料又比较分散经常是照着上个月的教程做这个月就遇到接口废弃、参数改名的问题。如果你打算入坑昇腾我真心建议第一以官方文档为准别轻信二手资料第二装环境前先锁版本一套环境一个版本不要混用第三千万别指望在昇腾上无痛跑通所有PyTorch模型能用ONNX中转就尽量走ONNX这是兼容性最高的一条路径。最后再分享一个部署过程中的小技巧打日志是排查问题最直接的手段在Python推理代码的关键节点模型加载、数据拷贝、推理执行、结果解析都加上耗时统计和shape打印定位问题的效率会高非常多。刚开始可能觉得啰嗦但真正遇到诡异问题的时候这些日志就是你最好的debug帮手。如果你正准备在一张推理卡上跑YOLO或者其他检测模型希望这篇笔记能帮你少踩几个坑。后续如果有时间我还会再写写昇腾平台上模型动态shape处理、多路视频流并行解码优化的实践有同样在折腾的朋友欢迎在评论区交流各自的踩坑记录互相参考才进步快。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

HuRo:将人类视频转化为机器人数据,实现可扩展的 VLA 预训练 2026/9/25 20:11:22

HuRo:将人类视频转化为机器人数据,实现可扩展的 VLA 预训练

26年8月来自韩国rlwrld.ai公司和延世大学的论文“HuRo: Robotizing Human Videos for Scalable VLA Pretraining”。 本文研究如何将人类操作视频转换成机器人训练数据。它的重要贡献是建立并验证了一条大规模数据生产路线;实验支持其预训练价值,但尚不能说明生成的数据具有…

阅读更多 →
10个事半功倍的IntelliJ IDEA插件:用TaoToken统一管理AI补全配置 2026/9/25 20:10:43

10个事半功倍的IntelliJ IDEA插件:用TaoToken统一管理AI补全配置

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

阅读更多 →
工作五年后想读研,先算清这三笔账 2026/9/25 20:10:23

工作五年后想读研,先算清这三笔账

工作五年,是一个特别容易纠结的节点:想往上走,又怕读研耽误事。这个时候,"值不值"不是一句感觉能回答的,得算账。我把它拆成三笔:投入账、回报账、机会成本账。三笔算完,读不读自然有…

阅读更多 →
读法学非全硕士,先想清楚你要进律所、企业还是体制内 2026/9/25 20:10:23

读法学非全硕士,先想清楚你要进律所、企业还是体制内

法学非全硕士的就业,关键其实不在"法学"两个字,而在法考,以及你想去哪。同样是读法硕,进律所、进企业、进体制内,是三条完全不同的路,准备方式也完全不同。这篇按三条去向拆开讲,你对…

阅读更多 →
单片机物联网|毕设答辩|毕业设计项目|基于51单片机的交通控制系统设计 2026/9/25 20:10:10

单片机物联网|毕设答辩|毕业设计项目|基于51单片机的交通控制系统设计

标题:基于51单片机的交通控制系统设计文档介绍:第1章 绪论1.1研究背景与意义我国城市化进程持续加快,城市人口密度骤增,机动车保有量呈爆发式增长,统计显示,到2023年底,全国机动车保有量超4.3亿…

阅读更多 →
MindSpore大模型训练评估体系搭建与性能优化实战指南 2026/9/25 20:10:04

MindSpore大模型训练评估体系搭建与性能优化实战指南

做了一年多大模型训练的调优,我的结论是:评估体系不是为了“证明模型没问题”,而是为了“告诉你怎么改”。这篇文章就围绕 MindSpore 环境下做大模型训练时最绕不开的两个话题——评估体系和性能优化——把我在 70B 级模型、多卡集群上踩过的…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉