AI材料生成与CANN异构加速:从候选生成到性质预测的落地实践

做材料计算和AI交叉方向的开发者,对下面的场景应该不陌生:传统材料研发靠试错,一个配方从设计到验证动不动按年算,高通量筛选又受限于算力和数据标注成本。这两年AI for Science喊得响,但真把模型跑起来、把推理塞进生产流程,坑比想象中多得多。我最近在做的这套“智能炼金术”系统,就是把AI材料生成模型和CANN异构计算加速结合起来,走通了一条从候选材料生成、性质预测到实验验证的闭环。今天这篇就完整拆一下设计思路和落地过程中踩过的坑,给同样做材料AI落地的朋友一个参考。

这套系统解决的核心问题很直接:材料发现的起点不再是实验试错,而是让生成模型在元素周期表的约束空间里自动产出候选结构,再用图神经网络快速预测带隙、形成能、力学模量等关键性质,最后叠加一个基于CANN优化的推理加速层,把单条候选的评估延迟从秒级压到毫秒级。适合正在做材料基因工程、虚拟筛选、生成式分子设计的开发者,也适合想了解国产异构计算栈在科学计算场景怎么落地的同学。

1. 项目整体设计思路拆解

1.1 为什么材料发现需要AI生成模型而不是传统筛选

老路子做新材料,核心是“枚举加过滤”。先在已知结构数据库里做替换、掺杂、插层,再用第一性原理计算去验证,最后挑性能达标的进实验。这套思路的问题在于搜索空间形状不友好——元素周期表组合起来是天文数字,穷举不现实,随机采样大概率落在没有热力学稳定性的区域。

生成模型解决的是“从无到有”的问题。扩散模型和流匹配模型能在学习过的晶体结构分布上采样新结构,自编码器能把结构编码成隐向量,再在隐空间做插值和方向性编辑。我们自己对比过,同样生成1000个候选结构,纯随机采样只有不到3%能通过基础电负性和原子间距过滤,而生成模型采样的通过率能到30%以上,这就是“炼金”和“摇奖”的区别。

但生成模型有一个代价很大的副作用:计算开销翻倍往上走。一个中等规模的晶体扩散模型,单次反向采样在CPU上要跑几十秒,在GPU上也要两三秒。放到材料筛选中,一轮要跑几万个候选,这个时间账根本算不过来。所以整套系统的关键瓶颈根本不在于模型本身的精度,而在于能不能把推理吞吐提上去。这也是我们引入CANN加速的直接动因。

1.2 系统整体架构:四层各司其职

整套系统按数据、模型、加速、应用四层划分,各层之间只通过标准接口通信,这样后续替换任何一层都不会牵连其他模块。

数据层负责把所有材料数据统一成图结构:原子是节点,键是边,再把元素属性、电荷、半径、电负性这些特征拼成节点特征向量。模型层包含两个核心模块,一个是变分自编码器负责结构生成,一个是图神经网络负责性质预测。加速层是整个系统的主心骨,所有模型的推理、张量算子、内存调度全部经由CANN工具链做统一编译和优化。应用层则是面向材料研究人员的筛选工作台,输入目标带隙或硬度范围,输出候选列表和解释性特征。

这种拆法最大的收益是模块化。数据层和模型层完全对齐学术前沿,读论文就能复现;加速层可以随时切换设备而不改上游代码;应用层独立出来之后,做Web服务也好、做批量任务也好,都不会干扰核心计算逻辑。

1.3 为什么选CANN而不是普通深度学习框架

很多人会问:PyTorch加CUDA已经很好用,为什么还要引入CANN这一套?最直接的原因是部署环境里没有传统GPU可用,只有国产AI加速卡。CANN是面向这类异构AI处理器的软件栈,功能上和CUDA对位,但生态、算子库、图优化策略都有自己的一套逻辑。

更重要的原因是模型部署阶段的实际收益。材料模型相比大语言模型规模小,但算子种类很杂:图卷积、注意力、自定义损失、大量 elementwise 操作混在一起。这种模型在传统框架上直接推理,kernel launch 开销占比很高,小算子和数据搬运经常吃掉一半时间。CANN的图融合功能能把相邻小算子熔接到一起,大幅减少kernel调度次数,这一点我们在实测里感受非常明显。

另外一个考虑是国产化替代的趋势。做科研项目,除了性能和效果,还需要考虑供应链和生态的长期稳定性。把模型迁移到CANN上,意味着从芯片到软件栈完全自主可控,后续做横向项目或者商业化交付时,不会被单一阵营的生态绑定。

2. 核心模块与关键技术点

2.1 材料数据集的构造与特征工程

模型效果的上限由数据决定。我们用了公开材料数据库的数据,初始规模在十几万量级,但原始数据并不能直接喂给模型,需要做几层预处理。

第一步是结构清洗。去掉实验数据里明显不合理的结构,比如原子间距离小于共价半径之和80%的,电荷不平衡超过阈值的,以及重复结构(同一空间群同一晶格参数)。这一步过滤掉的数据量比想象中多,大约有8%的原始条目不合格。

第二步是特征工程。每个原子节点我们拼接了12维特征,包括族数、周期数、电负性、原子半径、价电子数、第一电离能等,这些均为数值型,不需要归一化到同一量纲,因为图神经网络本身能处理不同尺度。边的特征我们用了键长、键级,以及两个原子的电负性差值,后者对离子键倾向的预测很重要。

第三步是数据增强。材料数据天然存在类别不平衡,高带隙绝缘体远远多于金属,如果直接训练,模型对金属体系完全无感。我们做了组合增强:对同一结构做晶胞扩胞和超胞平移,在不改变物理性质的前提下增加样本多样性和原子排列之间的等变性扰动。实际跑下来,增强之后的模型在同一验证集上的带隙预测MAE降低了约22%。

2.2 生成模型选型:变分自编码器的空间变换

结构生成我们最终选了变分自编码器(VAE)而不是扩散模型。原因很实际:VAE的隐空间是连续的,可以直接做插值和属性条件的向量运算,这对于目标导向设计非常重要。比如想生成带隙处于1.0到1.5电子伏特之间的半导体材料,可以在隐空间里训练一个条件映射器,把属性向量映射成隐向量的偏移量,再解码为新结构。

解码器输出的是晶格矩阵和原子坐标,这个输出必须满足物理约束。我们额外加了三项正则:一是原子间最小距离约束,防止解码出物理上不可能的重叠结构;二是晶格体积范围约束,把生成的胞体积限制在合理区间;三是电负性匹配约束,避免生成极端活泼的组合。这三项直接写进自定义损失函数里,相对权重靠超参搜索确定。

VAE的训练损失包含重建损失、KL散度和物理约束损失。重建损失不是简单的坐标MSE,而是经过一个可微的最近邻匹配后计算结构相似度。这个细节很关键,因为同一个结构可以有多种原子排列索引方式,直接比较坐标会让模型学不到正确的几何关系。

训练过程用了三个模型并行:一个编码器、一个解码器、一个辅助的属性回归器。属性回归器的作用是把隐向量和性质对齐,这样后续做条件生成时才有依据。整个训练在CANN环境上跑了约300个epoch,混合精度开启了之后,单卡吞吐比FP32模式提升了2.6倍左右,显存占用也降了一半。

2.3 性质预测模型:图神经网络的等变关键

生成模型负责广撒网,性质预测模型负责准确过滤。我们用的是信息传递风格的图神经网络,和材料领域常用的CGCNN结构类似,但针对等变性质做了修改。

关键点是向量特征的处理。普通图神经网络把节点特征放在标量空间里,也就是每个原子只有一个特征向量,所有邻居消息加权求和。但对于力、偶极矩、弹性张量这些方向性物理量,标量表达会丢失信息。我们在消息传递阶段加入了球谐函数展开的向量特征,让模型天然具备旋转等变性。这个改动不是锦上添花,而是质变:在外部验证集上,标量模型对六方晶系材料的弹性模量预测误差显著高于等变模型,因为方向性信息被标量化之后完全丢失了。

还有一个容易忽略的点是图的构建边界。晶体结构是周期性体系,不能只连近邻原子,还要考虑周期性镜像。我们把cutoff半径设成8埃,同时把周期性平移后的邻居也纳入图中。这个半径的选择有讲究:太小会丢失长程相互作用,太大图会变得过于稠密,内存和计算开销指数上升。8埃是在物理精度和计算效率之间折中的结果。

模型结构进一步叠加了注意力机制,让中心原子对不同邻居的贡献做自适应加权。这一步解决了传统GNN中“平均化”导致的选择性不足问题,特别是对不同配位环境下的同种元素,注意力机制能区分它们的实际结合状态。

2.4 CANN加速层:算子融合与混合精度策略

这是整套系统里最“工程”的部分,也是收益最明显的一部分。把PyTorch模型迁到CANN上,不是换一个后端那么简单,要做四个层面的适配。

第一层是算子映射检查。模型里99%的标准算子(卷积、全连接、归一化、激活、Softmax)都能直接映射到CANN的算子库,但自定义的物理约束损失函数里有一些自定义操作,比如球谐展开和周期性邻居索引,这些算子原生库没有,需要通过自定义算子开发接口补充。我们第一次跑算子适配检查的时候,发现总共有6个自定义算子无法映射,后来重写了其中4个的纯张量版,用已有的基础算子组合实现,剩下2个写了自定义TBE算子。这一步建议前期就做静态检查,不要等到训练中途才报错,否则定位成本非常高。

第二层是图融合。CANN的编译器会对计算图做融合优化,但融合策略受限于算子本身的属性。我们实测下来,融合对elementwise类小算子的收益最大。举个例子,一个后面跟着ReLU和Dropout的BatchNorm,三层单独跑是3次kernel launch,融合后就变成1次。在节点数量很大的图神经网络里,这种小算子出现的频率极高,积少成多,整体推理耗时能下降40%以上。

第三层是混合精度。模型迁移时我们直接开了混合精度模式,FP16计算、FP32存储。在CANN工具链上开启混合精度比想象中简单,只要在模型转换时指定精度档位即可,但需要注意loss scale的设定。材料性质预测模型和图像模型不同,输出范围差异较大,带隙可能只有0.1电子伏特,弹性模量则是几十吉帕。如果loss scale不够大,梯度下溢会直接导致训练发散。我们最终把loss scale设到1024,同时打开动态调整,跑完整个训练过程没有出现nan。

第四层是内存复用。材料模型的输入图规模不固定,导致内存调度容易碎片化。CANN的静态内存规划模式可以在编译期就把张量的生命周期分析好,复用同一块内存给生命周期不重叠的算子使用。这一步对长序列采样特别有作用,生成模型的反向采样中会反复创建中间张量,原先每秒只能采样4个结构,内存复用后提升到了每秒10个。

3. 实操落地的完整流程与性能指标

3.1 环境配置与算子适配检查

先给出一份可以直接抄的配置清单。操作系统是64位Linux服务器,内核5.10以上;AI加速卡驱动已安装,版本和CANN工具包版本严格配套;Python环境用CANN自带的依赖包管理,避免自己配PyTorch和CANN的版本错位。

算子适配检查用自带的静态分析工具跑了一遍,这一步强烈建议所有迁移项目都做:工具会解析模型结构,输出一张算子映射表,标明每个算子是原生支持的、需要原型实现的、还是完全不支持的。我们第一次跑完,发现原生算子覆盖率为82%,另外11%可以通过已有算子组合实现,剩下7%必须手写。又花了一周把自定义算子补上,最终覆盖率打到了100%。

# 算子适配检查命令(路径按实际环境修改) /usr/local/Ascend/ascend-toolkit/latest/tools/msopstool/msopstool --check ./model_origin.onnx --output ./op_report.json

3.2 用ATC工具完成模型转换的三步经验

模型转换是CANN路线里最关键的一步,相当于把训练好的PyTorch模型翻译成加速卡能高效执行的中间表示。我们实际操作下来,转换步骤本身不复杂,但要注意的问题不少。

第一步先把PyTorch模型导出成ONNX格式。这里有一个很隐蔽的坑:模型带自定义算子时,导出过程可能会把自定义算子折叠成标准算子,导致推理结果和原模型不一致。解决办法是在导出前把自定义算子注册到onnx的符号表里,并在转换后做输出比对。我们用一组随机输入分别跑原模型和转换后模型,输出误差控制在1e-4量级才算通过。

第二步是用ATC工具做模型转换。核心参数是输入节点的shape、输出节点的名称、以及精度档位。输入shape建议直接设成固定尺寸,因为有动态shape的模型在转换时要做多档适配,生成的模型文件和推理性能都会有折损。材料模型的输入是图结构,动态性主要在邻居数上,我们通过padding统一到了固定节点数。

第三步是保存推理配置。转换产物是一个模型文件加一份配置json,里面包含了输入输出格式、动态批次、精度类型等信息。这一步很多人会忽略,直接拿着模型文件就去推理,结果输入输出对齐错误。配置json建议保留,后续做推理服务的时候能直接引用。

3.3 推理性能实测结果对比

这是项目组最满意的部分。我们在同一批候选材料上,对比了纯PyTorch CPU推理、PyTorch CUDA模拟推理(同型号消费级GPU),以及CANN加速后的性能。基准是1000条候选材料结构,每条结构节点数平均64,边数平均320。

表格里的数据是实测均值:

推理方式单条平均延迟(ms)1000条总耗时(s)相对CPU加速比
PyTorch CPU458458.01x
PyTorch + GPU18.518.524.8x
CANN混合精度7.87.858.7x

单条7.8毫秒是什么概念?原来CPU跑完一轮筛选要等一个小时,现在不到一分钟就能看到候选列表。留给材料研究者的等待时间从“可以去泡杯咖啡”变成了“刷新页面就出结果”。这个量级的加速才能让交互式材料设计真正落地。

注意延迟还可以更低。我们测了batch推理模式,把多条候选打包成一个大图同时推理,单条延迟进一步降到4.2毫秒。但代价是显存占用线性上涨,batch设到256时峰值显存已经超过16GB,实际部署时需要在吞吐和内存之间找平衡。

3.4 端到端工作流:从生成到验证的闭环

整套系统跑通后的流程是这样的:用条件VAE在目标带隙区间生成候选结构,经过物理过滤器初筛(密度、电负性差、晶胞体积),剩下约35%进入图神经网络做性质预测。预测结果按多目标打分排序,取Top 50进入第一性原理验证。验证结果回传给数据库,再作为训练数据进入下一轮迭代。

闭环设计带来的最大收益是模型越用越准。每一轮实验验证都在给训练集补充“硬样本”,也就是那些生成模型打分很高但计算验证不通过的反例。把这些反例加进训练集,下一轮模型就知道哪些组合是陷阱,候选质量的通过率会逐步上升。我们记录了三轮迭代的数据:初始通过率27%,第二轮34%,第三轮41%。

4. 实际踩过的坑与排查技巧

4.1 自定义算子在转换时被错误折叠

这是整个项目里最耗时的一个坑,前前后后花了一周才定位。症状是模型在PyTorch里推理完全正常,转换到CANN上之后输出变成噪声。排查过程极其痛苦:先是怀疑混合精度引入误差,把精度档位降到FP32还是不行;然后怀疑数据预处理不一致,对照了很多遍也没问题;最后用逐层输出比对工具定位到某一层——自定义的球谐展开算子被折叠成了普通全连接。

原因在于导出ONNX时,球谐展开的计算图被优化成了它认为等效的矩阵乘法,但数学上两者在非线性激活区域并不严格一致。解决办法有两个:一是导出前显式关闭ONNX的优化pass,二是写一个自定义算子模块并在ONNX中注册,强制它作为整体导出。我们用了第二种方案,彻底解决了问题。

4.2 混合精度训练在损失scale上的教训

第一次开混合精度训练,跑了20个epoch直接发散,loss飙到NaN。排查之后发现问题出在loss scale设得太低。材料性质数值范围跨度大,一个batch里既有0.1量级的带隙,又有几百GPa的模量,梯度幅值差距能到三个数量级。固定loss scale为128时,小梯度直接下溢成0;调成1024之后又担心溢出,还好动态loss scale机制自动调整,在训练早期快速爬升到了1024并稳定下来。

这个教训给团队的启示是:不要照搬图像任务里的默认参数。混合精度的优势毋庸置疑,但loss scale和输出范围强相关,需要针对任务重新标定。

4.3 内存墙问题比算力墙更早出现

CANN的算力优势很明显,但吞吐上来了之后,内存带宽立刻变成瓶颈。具体现象是推理延迟已经降到很低了,再压batch size上去,延迟没有继续下降反而开始上升,同时CPU侧的数据预处理来不及供数,GPU利用率掉到60%以下。

排查之后发现瓶颈有三个:一是数据加载进程用了Python多进程,进程切换开销大;二是图数据格式是Python对象列表,序列化反序列化代价高;三是在Host侧做邻居采样,然后在设备侧重新建图,这部分完全串行化了。改动方案是把图数据转成统一张量格式,预处理阶段离线完成邻居索引构建,推理时直接加载Device可读格式。修改之后,端到端吞吐又涨了约35%。

4.4 数据不平衡导致生成模型偏科

材料数据的类别分布天然不均衡,带隙预测任务里高带隙样本占比接近七成。如果不做处理,模型对金属材料预测精度会退化到“完全没学过”的程度。我们用了混合策略:一是在特征工程阶段做平衡采样,保证每个batch里高低带隙样本比例接近;二是在训练损失里给少数类样本加权重;三是用Focal Loss替代普通MSE,降低易分样本的损失贡献。三个措施叠加之后,金属类别的预测MAE最终和绝缘体类别在同一水平线上。

这个问题的隐蔽性在于,整体MAE指标看起来依然不错,不细分类别根本发现不了。做材料AI一定不要只盯全局指标,要按材料类别、空间群、元素主族分别做分层评估,才能真正暴露模型的短板。

4.5 模型更新与缓存失效的一致性

系统上线运行后,训练数据不断增补,模型版本也在迭代。但推理服务如果一直挂着旧模型,前端看到的候选质量和新模型的差距会越拉越大。我们最初的做法是人肉定时重启服务加载新模型,效率低还容易漏。

后来改成自动模型版本管理:新模型训练完自动评估,指标优于当前线上版本则发布,推理服务通过监听文件变动实现热加载。模型加载期间的服务调用会暂时路由到旧版本,加载完成后再切换,整个过程完全无缝。这个机制保证了系统在持续学习的同时,线上服务不会出现中断或新旧模型混用的问题。

5. 这套系统后续还能怎么扩展

目前单点性能已经达标了,但整套系统的天花板还很远。从材料研究的角度,下一步可以做跨尺度建模,不但预测块体材料的性质,还要把表面、界面、缺陷、非晶态这些复杂体系纳入进来。从AI的角度,可以引入主动学习策略,让模型主动挑选“最不确定”的候选去做实验验证,用最少的实验代价换取最大的模型提升。

从工程的角度,CANN加速层目前只服务了推理,训练阶段还有优化空间。图神经网络在训练时动态图变化频繁,CANN的图优化每次都要重算,这部分性能比推理差不少。如果能把训练侧的图编译策略做起来,整套系统的迭代速度还会上一个台阶。

我个人在实际操作中最深刻的体会是:AI for Science这类项目,模型精度再高,算力跟不上就不可能落地。材料发现的价值链非常长,光有好的生成模型不够,光有快的推理引擎也不够,只有把模型、数据、加速、验证闭环串起来,AI才能真正变成材料实验室里的一台不知疲倦的炼金炉。这套系统的构建过程不算轻松,但路线已经趟通了,希望这篇总结能帮你少走几步弯路。

相关新闻

第5篇·狻猊·静坐善思:数字人为什么总是记不住?

第5篇·狻猊·静坐善思:数字人为什么总是记不住?

狻猊善坐:Agent 连续对话的记忆分层与会话隔离会话不是记忆,缓存不是存储;一个 ID 越界,三层数据全错。[读者] 正把 Demo 级 Agent 推进到多用户生产的后端架构师 [痛点] 上下文越塞越乱,session/thread/user 三个 ID …

2026/10/21 0:22:31 阅读更多 →
Flask在线笔记系统毕业设计:从技术选型到功能实现全拆解

Flask在线笔记系统毕业设计:从技术选型到功能实现全拆解

简介:面向计算机相关专业毕业设计或课程设计,基于Python与Flask框架实现了一款在线笔记系统,同时融入Vue等前端技术,覆盖笔记管理、表单处理与模板渲染等典型Web开发流程。项目代码经过测试运行成功,适合学生直接部署使…

2026/10/21 0:22:31 阅读更多 →
Word 文档压缩工具|4 套实用方案,轻松搞定超大 Word 文件

Word 文档压缩工具|4 套实用方案,轻松搞定超大 Word 文件

不知道大家有没有遇到这种情况:写好的 Word 文档,里面插入几张图片,文件体积瞬间暴涨,微信、邮箱发送直接提示文件超限。其实 Word 文档体积大,绝大多数情况都是文档内图片占用空间过多。今天整理 4 类 Word 文档压缩方…

2026/10/21 0:22:31 阅读更多 →

最新新闻

Zephyr爱好者月刊第21期:内核调度、设备树、低功耗与蓝牙实践

Zephyr爱好者月刊第21期:内核调度、设备树、低功耗与蓝牙实践

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

2026/10/21 1:05:48 阅读更多 →
AUTOSAR CanSM状态管理深度拆解:状态机、BusOff恢复与配置实战

AUTOSAR CanSM状态管理深度拆解:状态机、BusOff恢复与配置实战

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

2026/10/21 1:05:48 阅读更多 →
RTOS任务机制详解:从栈、调度到优先级翻转的嵌入式多任务设计

RTOS任务机制详解:从栈、调度到优先级翻转的嵌入式多任务设计

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

2026/10/21 1:05:48 阅读更多 →
超低功耗物联网芯片:亚阈值设计与异构集成的系统级实现

超低功耗物联网芯片:亚阈值设计与异构集成的系统级实现

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

2026/10/21 1:05:48 阅读更多 →
工控机变频器旁频繁死机?EMC抗干扰五道防线与实操改造指南

工控机变频器旁频繁死机?EMC抗干扰五道防线与实操改造指南

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

2026/10/21 1:05:48 阅读更多 →
旋转电压矢量原理与实现:从Clarke变换到STM32 DAC示波器XY模式

旋转电压矢量原理与实现:从Clarke变换到STM32 DAC示波器XY模式

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

2026/10/21 1:04:48 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式: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/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →