1. 从零手搓AI工程为什么我不建议你直接调包很多人一听到“AI工程”这四个字第一反应就是打开某个云平台调一个现成的大模型接口写几行胶水代码然后对外宣称自己做了个AI应用。我承认这条路确实能在半天内跑通一个Demo但如果你真的想在这个领域站稳脚跟靠这种“调包式开发”是远远不够的。ai-engineering-from-scratch这个标题背后的核心诉求其实是一套完整的、从底层到上层的工程能力重建——它要求你理解数据怎么流、模型怎么加载、推理怎么加速、服务怎么部署而不是只会写client.chat.completions.create。我自己带过不少刚入行的同学发现一个很普遍的现象他们能熟练使用各种AI框架的高级API但一旦遇到显存溢出、推理延迟飙升、批处理吞吐上不去这类问题就完全不知道从哪里下手。原因很简单——他们从来没有亲手搭过一个最小的推理管线没有亲眼看过张量在GPU内存里是怎么被分配的也没有试过自己写一个简单的调度器来管理并发请求。ai-engineering-from-scratch要解决的正是这个断层它不教你调包它教你造轮子哪怕这个轮子一开始很粗糙。这篇文章适合三类人第一类是有一定Python基础、想转行做AI工程但缺乏系统实战经验的开发者第二类是在做AI应用时被性能问题反复折磨、想搞清楚底层原理的后端工程师第三类是对大模型推理服务感兴趣、想自己动手搭建一套可扩展架构的技术爱好者。我会从环境准备开始一步步带你走过模型加载、推理优化、服务封装、并发调度、监控排错这几个核心环节每个环节都会解释“为什么这么做”以及“不这么做会怎样”。全文不会出现任何平台绑定的内容所有代码和配置都可以在你自己的机器上复现。2. 动手之前把环境这摊子事理清楚2.1 硬件选型不是越贵越好关键看显存带宽很多人一上来就问“我该买什么显卡”这个问题其实没有标准答案因为取决于你要跑多大的模型、要多高的吞吐。但有一个指标比算力更值得关注显存带宽。举个例子同样是16GB显存的卡带宽高的那张在推理时往往能快出30%以上因为大模型推理本质上是内存密集型任务计算单元经常在等数据搬运。如果你只是做学习和中小规模部署一张带宽在600GB/s以上的卡就足够跑7B到13B参数的模型了。如果你手头只有CPU也不是不能玩但你要接受每秒几个token的生成速度并且需要把模型量化到4bit甚至更低。我自己的测试环境是一张24GB显存的消费级卡搭配64GB系统内存和一块NVMe固态硬盘。为什么强调固态硬盘因为模型文件动辄十几GB如果你用机械硬盘加载光是从磁盘读到内存就要等好几分钟。另外系统内存最好不低于模型文件大小的两倍因为加载过程中会有临时的内存拷贝开销。这些细节看起来不起眼但实际动手时能帮你省下大量等待时间。2.2 Python环境隔离别让你的系统环境变成垃圾场我见过太多人直接把所有包往全局Python里装结果不同项目之间依赖冲突最后连Python本身都升级不了。正确的做法是用虚拟环境但这里有个坑不要用conda混装pip和conda的包否则很容易出现动态库链接错误。我的建议是如果你主要用PyTorch生态直接用venv加pip就够了简单可控。创建环境的命令如下python -m venv ai-env source ai-env/bin/activate # Linux/macOS # ai-env\Scripts\activate # Windows激活之后第一件事是升级pip和setuptools然后安装PyTorch。注意PyTorch的版本要和你的CUDA驱动版本匹配。你可以先用nvidia-smi查看驱动支持的CUDA版本然后去PyTorch官网找对应的安装命令。不要盲目装最新版有时候最新版反而和你的驱动不兼容。我一般会选一个比驱动支持版本低一个小版本的CUDA运行时这样稳定性最好。2.3 模型文件从哪来合法合规是底线模型文件的获取渠道有很多但有一条原则必须遵守只使用明确允许你使用的模型。很多开源模型都有各自的使用许可有些允许商用有些只允许研究用途。你在动手之前务必去模型的官方发布页面确认许可条款。另外下载模型时尽量用官方提供的下载脚本或工具不要从不明来源的网盘链接下载避免文件被篡改或植入恶意代码。下载完成后用官方提供的校验值验证文件完整性这一步花不了几分钟但能避免很多莫名其妙的加载错误。3. 模型加载从磁盘到显存的完整链路3.1 加载流程拆解每一步都在干什么当你调用一个加载函数时背后其实发生了很多事情。以常见的Transformer模型为例加载过程大致分为四步第一步是读取配置文件确定模型结构参数比如层数、隐藏维度、注意力头数第二步是根据配置实例化模型对象此时会在内存中分配参数张量的空间但还没有填充数据第三步是从磁盘上的权重文件中逐层读取参数拷贝到对应的张量里第四步是把模型移动到目标设备上如果是GPU就涉及从系统内存到显存的拷贝。理解这个流程很重要因为每一步都可能成为瓶颈。我实测过一个13B参数的模型从NVMe固态硬盘加载到内存大约需要20秒从内存拷贝到显存大约需要5秒整个加载过程接近半分钟。如果你发现加载时间远超这个量级就要检查是不是磁盘读取速度太慢或者系统内存不足导致频繁换页。另外如果你用的是半精度加载模型文件大小会减半加载时间也会相应缩短但要注意有些模型在半精度下会出现数值不稳定生成结果质量下降。3.2 量化加载用精度换显存的取舍逻辑量化是AI工程中绕不开的话题。简单说量化就是把模型参数从高精度浮点数转换成低精度整数从而减少显存占用和加快推理速度。常见的量化方案有8bit、4bit甚至更激进的2bit。但量化不是免费的午餐它会带来精度损失表现为生成文本的连贯性下降、事实准确性降低等。我的经验是对于7B到13B的模型4bit量化在大多数对话任务上还能保持可接受的质量但如果你要做代码生成或数学推理最好用8bit或者干脆不量化。量化加载的实现方式有两种一种是加载时动态量化也就是先把高精度权重读进来再转换成低精度另一种是直接加载已经量化好的权重文件。后者更快也更省内存但需要你提前准备好量化后的模型文件。动态量化的好处是灵活你可以随时调整量化策略但代价是加载时需要额外的内存峰值。我一般会先用动态量化快速验证效果如果确定要长期部署再离线量化一次把量化后的权重保存下来。3.3 显存不够怎么办分层加载与卸载策略显存不够是新手最常遇到的问题。假设你有一张8GB显存的卡想跑一个13B参数的模型全精度加载需要大约26GB显存显然放不下。这时候有几种策略第一种是量化把模型压到4bit显存需求降到约7GB勉强能跑第二种是分层加载只把当前计算需要的层放在显存里其他层留在内存计算到哪一层就换入哪一层这需要你自己写调度逻辑第三种是CPU卸载把一部分层放在CPU上计算GPU只负责一部分速度会慢很多但能跑起来。我试过第二种策略实现起来不算太复杂核心思路是维护一个显存池每次前向传播时按顺序把层加载进来用完就释放。但这里有个坑频繁的显存分配和释放会导致碎片化跑一段时间后即使总显存够用也会报OOM。解决办法是预分配一块大显存自己管理内存池而不是依赖框架的自动分配。这个优化做下来显存利用率能提升20%以上。4. 推理管线把模型跑起来只是第一步4.1 前向传播的每一步从输入到输出当你把一段文本喂给模型时它经历了一系列变换。首先是分词把文本切成token序列每个token对应一个整数ID。然后是嵌入层把token ID映射成稠密向量。接着是多层Transformer块每层包含自注意力机制和前馈网络自注意力让模型关注输入的不同位置前馈网络做非线性变换。最后是输出层把隐藏状态映射回词表大小的向量再通过采样策略选出下一个token。这个过程会循环进行直到生成结束标记或达到最大长度。理解这个流程对排查问题很关键。比如你发现生成结果重复可能是采样策略太保守发现生成速度慢可能是自注意力计算量太大发现显存占用随生成长度线性增长那是KV缓存没有管理好。KV缓存是自注意力机制中的一个优化它把之前计算过的键值对存下来避免重复计算。但缓存会占用显存生成长度越长占用越大。我一般会设置一个最大缓存长度超过就截断防止显存无限增长。4.2 批处理吞吐量提升的核心手段单条推理的吞吐量很低因为GPU的并行计算能力没有被充分利用。批处理就是把多条请求打包成一个批次一次性送进模型计算。理想情况下批次大小翻倍吞吐量也翻倍但显存占用也会翻倍。所以批处理大小的选择是一个权衡太小浪费算力太大爆显存。我的经验是先从批次大小8开始试逐步增加到显存占用达到80%左右为止。留20%的余量是为了应对生成长度不确定带来的波动。但批处理有个麻烦不同请求的生成长度不一样如果等所有请求都生成完再返回短请求就要等长请求延迟很高。解决办法是连续批处理也就是动态地把新请求加入批次把已完成的请求移出批次。这需要你自己写调度逻辑维护一个运行队列和一个等待队列。我实现过一个简化版的连续批处理调度器核心是一个循环每次迭代检查运行队列里有没有完成的请求有就移出并返回结果然后从等待队列里取新请求补上空位。这个调度器大概两百行代码但效果很明显吞吐量比静态批处理提升了三倍以上。4.3 采样策略温度、Top-k和Top-p的实际影响采样策略决定了模型如何从输出概率分布中选择下一个token。最常见的三个参数是温度、Top-k和Top-p。温度控制随机性温度越低输出越确定温度越高输出越多样。Top-k限制候选集为概率最高的k个tokenTop-p则限制候选集为累积概率达到p的最小token集合。这三个参数不是独立的它们会相互作用。比如你设了温度0.8和Top-p 0.9实际效果是先把概率分布按温度缩放再截断到累积概率0.9。我踩过一个坑有一次做客服机器人为了让回答更稳定把温度设成了0.1结果模型变得非常死板用户换个问法它就不知道怎么回答了。后来我把温度调到0.5同时用Top-p 0.85效果就好很多。所以我的建议是不要迷信某个固定参数组合要根据任务类型去调。创意写作可以温度高一点事实问答温度低一点代码生成介于两者之间。最好做一个简单的A/B测试用同一批问题跑不同参数人工评估输出质量。5. 服务化封装让模型变成可调用的API5.1 为什么不用现成的推理服务器现成的推理服务器确实方便一行命令就能启动一个API服务。但ai-engineering-from-scratch的精神是让你理解每一层在做什么。自己写一个API服务你能完全控制请求解析、批处理调度、超时处理、错误返回这些逻辑。而且当你遇到性能瓶颈时你知道该改哪里而不是对着一个黑盒干瞪眼。我并不是说现成方案不好而是建议你先自己写一个最小版本跑通了再考虑用现成方案替换。自己写API服务我推荐用FastAPI因为它异步支持好性能足够而且代码量少。核心逻辑是定义一个POST接口接收JSON格式的请求解析出输入文本和生成参数调用推理引擎把结果包装成JSON返回。但这里有个关键点推理是计算密集型任务会阻塞事件循环。所以你不能直接在异步函数里调用推理而是要把推理放到一个单独的线程或进程里通过队列和主线程通信。我一般会启动一个推理工作线程主线程收到请求后把任务丢进队列然后异步等待结果。5.2 请求队列与背压别让服务被压垮当并发请求超过推理能力时如果没有队列和背压机制服务会直接崩溃。背压的意思是当队列满了新请求应该被拒绝或等待而不是无限堆积。我见过一个服务因为没有背压请求堆积到内存耗尽最后整个进程被系统杀掉。正确的做法是设置一个最大队列长度超过就返回503状态码告诉客户端稍后重试。同时队列里的请求应该有超时时间如果一个请求等了太久还没被处理就直接丢弃并返回超时错误。队列的实现可以用Python的queue.Queue它是线程安全的。推理工作线程从队列里取任务处理完把结果放到另一个结果字典里主线程根据请求ID去查结果。这里要注意结果字典需要定期清理否则已完成请求的结果会一直占着内存。我一般会设置一个过期时间比如结果保留60秒超过就自动删除。另外如果推理过程中发生异常要把异常信息也放进结果里让客户端知道出了什么问题而不是一直等一个永远不会来的响应。5.3 流式输出让用户不用干等大模型生成一段长文本可能需要好几秒甚至十几秒如果等全部生成完再返回用户体验很差。流式输出就是每生成一个token就立刻发给客户端让用户看到文字在逐渐出现。实现流式输出服务端需要用Server-Sent Events或WebSocket每生成一个token就推送一次。但这里有个问题批处理调度器是按批次处理的一个批次里所有请求要等最慢的那个生成完才能进入下一轮。如果要做流式输出调度器需要支持逐token返回复杂度会高不少。我的做法是对于流式请求单独走一条路径不参与批处理或者只做小批次处理。虽然吞吐量会低一些但延迟体验好很多。具体实现上推理引擎每生成一个token就调用一个回调函数回调函数把token放进对应请求的输出队列API层再从输出队列里取数据推送给客户端。这个架构稍微复杂一点但一旦跑通扩展性很好。我实测下来流式输出的首token延迟可以控制在500毫秒以内用户感知上会好很多。6. 性能调优从能跑到跑得快的进阶之路6.1 算子融合与计算图优化PyTorch默认是即时执行模式每一条操作都会单独调度这会导致大量的内核启动开销。算子融合就是把多个连续的操作合并成一个内核减少调度次数。比如把矩阵乘法、偏置加法和激活函数融合成一个操作能显著提升速度。PyTorch提供了torch.compile来做自动融合你只需要把模型用torch.compile包一层它会在第一次运行时编译计算图后续运行就快了。我实测过一个7B模型用torch.compile之后推理速度提升了约25%。但torch.compile不是万能的它需要编译时间而且对动态形状支持有限。如果你的输入长度变化很大编译出来的图可能不适用会触发重新编译反而更慢。所以如果你的场景是固定长度输入比如固定大小的图像或固定长度的文本用torch.compile很合适。如果是变长输入可以考虑手动融合一些关键算子比如用torch.nn.functional.scaled_dot_product_attention替代手动实现的注意力这个函数内部已经做了融合优化。6.2 KV缓存管理显存和速度的平衡术KV缓存是自回归生成中的关键优化但它也是显存消耗大户。对于一个13B模型如果生成长度是2048KV缓存大约占用2GB显存。如果并发请求多缓存占用会成倍增长。管理KV缓存有几种策略第一种是预分配固定大小的缓存每个请求分配一块用完回收第二种是分页管理把缓存切成固定大小的块按需分配类似操作系统的虚拟内存。第一种实现简单但容易浪费第二种复杂但利用率高。我一开始用的是预分配策略给每个请求分配最大长度的缓存结果并发数一上来显存就爆了。后来改成按需分配每次生成新token时检查缓存够不够不够就扩容。但频繁扩容会导致显存碎片化跑久了还是会OOM。最后我用了分页管理把缓存分成256个token一页请求需要多少页就分配多少页页之间用链表连接。这个方案实现起来麻烦一些但显存利用率能到90%以上而且不会碎片化。如果你只是做实验预分配就够了如果要上生产分页管理是值得投入的。6.3 并发推理的线程模型选择Python有GIL所以多线程并不能真正并行执行计算任务。对于推理服务我推荐用多进程模型每个进程独立加载模型独立处理请求。但多进程的问题是显存翻倍一张卡上跑两个进程每个进程的可用显存就减半了。所以多进程适合显存充足、追求吞吐量的场景。如果显存紧张可以用单进程加异步IO推理在主线程做IO操作异步化这样虽然推理是串行的但IO等待时间被重叠了整体吞吐量也能接受。我实际部署时用的是混合模型一个主进程负责接收请求和调度多个工作进程负责推理。主进程通过共享内存或消息队列把请求发给工作进程工作进程把结果发回来。这样既能利用多核CPU做请求预处理又能让GPU专注推理。但要注意工作进程的数量不要超过GPU数量否则多个进程争抢同一张卡反而会因为上下文切换导致性能下降。我一般是一个GPU对应一个工作进程如果请求量很大再考虑在同一张卡上跑多个进程但要严格控制每个进程的显存占用。7. 监控与排错线上出问题怎么快速定位7.1 必须监控的五个核心指标线上推理服务我必看五个指标首token延迟、每token延迟、吞吐量、显存占用率、请求队列长度。首token延迟反映用户等待时间每token延迟反映生成速度吞吐量反映系统整体处理能力显存占用率反映资源瓶颈队列长度反映系统是否过载。这五个指标里任何一个异常都能快速定位问题方向。比如首token延迟高但每token延迟正常说明是请求排队或预处理慢显存占用率持续接近100%说明需要优化显存或限制并发。监控数据的采集我一般用Prometheus加Grafana在代码里埋点每隔几秒上报一次。但如果你不想搞这么复杂也可以简单点用Python的logging模块定期打印指标到日志文件然后用脚本分析。关键是你要有数据不能凭感觉判断。我见过一个团队服务变慢了但没人知道为什么后来加了监控才发现是某个请求的生成长度异常大把整个批次拖慢了。有了监控这种问题一眼就能看出来。7.2 常见错误与排查路径推理服务最常见的错误有几种显存溢出、生成结果乱码、请求超时、服务无响应。显存溢出一般是并发太高或生成长度太长排查方法是看显存占用曲线找到峰值出现的时刻对应看当时的请求情况。生成结果乱码通常是量化精度太低或采样参数有问题可以先用不量化的模型跑同样的输入对比输出。请求超时可能是队列太长或推理卡住检查队列长度和GPU利用率如果GPU利用率很低但队列很长说明调度器有问题。我遇到过一个比较隐蔽的问题服务跑了一段时间后生成速度越来越慢但显存和CPU占用都正常。后来用性能分析工具抓了一下发现是Python的垃圾回收器在频繁回收大对象导致停顿。解决办法是调整垃圾回收阈值或者手动管理大对象的生命周期。这个问题花了整整两天才定位到所以我的经验是遇到性能问题不要瞎猜用工具抓数据数据会告诉你答案。7.3 日志记录别等出事了才后悔没打日志日志是排错的生命线。我要求我的服务至少记录三类日志请求日志、错误日志、性能日志。请求日志记录每个请求的ID、输入长度、输出长度、耗时错误日志记录异常堆栈和上下文信息性能日志定期记录关键指标。日志格式要结构化方便后续用工具分析。我一般用JSON格式打日志每条日志一行包含时间戳、级别、模块、消息和额外字段。但日志也不能乱打否则磁盘很快就被写满了。我的做法是请求日志和性能日志用INFO级别错误日志用ERROR级别调试信息用DEBUG级别并且默认关闭。另外日志要滚动切割比如每天一个文件保留最近7天。这样既不会丢信息也不会占太多磁盘。还有一点很重要不要在日志里记录用户的原始输入除非你确定不涉及隐私。我一般只记录输入长度和哈希值不记录具体内容。8. 我踩过的那些坑和给你的实用建议8.1 模型加载时的内存峰值陷阱前面提到过动态量化加载会有内存峰值。我具体说一下这个坑当你加载一个13B模型并做4bit量化时系统会先把26GB的全精度权重读进内存然后再转换成7GB的4bit权重。这意味着你的系统内存至少要有26GB的余量否则加载过程中就会OOM。我一开始没注意在一台32GB内存的机器上加载结果系统直接卡死。解决办法是要么用离线量化好的权重文件直接加载7GB的4bit权重要么分批加载读一层量化一层但这样实现起来复杂很多。8.2 批处理调度器的公平性问题连续批处理调度器有一个公平性问题如果长请求一直占着批次位置短请求就会一直排队。我遇到过一种情况一个用户发了一个要求生成5000个token的请求结果后面所有短请求都被堵住了延迟飙升。解决办法是给每个请求设置一个最大生成长度超过就强制截断。另外可以在调度器里加一个优先级机制短请求优先处理或者给等待时间长的请求提升优先级。我实现了一个简单的优先级队列等待超过5秒的请求自动提升优先级效果不错。8.3 流式输出的连接管理流式输出用SSE或WebSocket时如果客户端断开连接服务端要能感知到并及时停止生成否则会浪费计算资源。我一开始没处理这个结果客户端关了页面服务端还在傻傻地生成显存一直被占着。后来我在输出队列里加了一个检查每次推送token前先检查连接是否还活着如果断了就抛异常推理引擎捕获异常后停止生成并释放资源。这个检查很轻量但能避免很多资源浪费。8.4 版本升级带来的意外AI框架的版本迭代很快有时候升级一个小版本就会导致性能变化或行为不一致。我建议你在升级之前先用一个固定的测试集跑一遍基准测试记录首token延迟、每token延迟和输出质量。升级后再跑一遍对比数据。如果发现性能下降或输出质量变差就回退版本。另外不要在生产环境直接升级先在测试环境验证。我吃过一次亏升级后模型加载变慢了30%查了半天才发现是新版本默认开启了某个调试选项。8.5 给新手的三个实用建议第一从最小的模型开始。不要一上来就搞70B先用1B或3B的模型把整个管线跑通理解每个环节然后再换大模型。小模型跑得快迭代周期短学习效率高。第二把配置参数化。不要把模型路径、批次大小、端口号这些硬编码在代码里用配置文件或环境变量管理。这样你换模型或调参数时不用改代码减少出错概率。第三写测试。至少写三个测试加载测试、单条推理测试、并发推理测试。每次改完代码跑一遍确保没有破坏已有功能。这三个测试花不了多少时间但能帮你避免很多低级错误。9. 后续可以继续深挖的方向如果你已经把上面这些跑通了接下来可以往几个方向深入。一个是推理引擎的底层优化比如用CUDA写自定义算子把注意力计算再加速一倍。另一个是分布式推理把模型切到多张卡上用张量并行或流水线并行来跑更大的模型。还有一个是自适应批处理根据请求的实时负载动态调整批次大小和调度策略让吞吐量和延迟达到最优平衡。这些方向每一个都够写一篇长文但前提是你已经把单机单卡的管线吃透了。我自己也是在跑通了基础版本之后才慢慢往这些方向扩展的。记住ai-engineering-from-scratch的核心不是一步到位而是每一步都亲手做过知道为什么这么做。
企业数字化 ERP 产品动态
相关推荐
具身智能世界模型构建与机械臂控制实践 1. 具身智能的世界模型:从概念到实践最近在机器人实验室调试机械臂时,突然意识到一个有趣的现象:当人类伸手拿水杯时,大脑会预判手臂的运动轨迹和杯子的重量,这种预测能力正是具身智能(Embodied AI… · 2026/11/4 18:57:20
Android学生信息管理系统:Java+SQLite完整课程设计项目 简介:本资源是一份面向高校Android开发初学者与课程设计实践者的完整安卓应用项目,聚焦学生信息管理系统的实战开发,覆盖Android Studio环境配置、UI布局(XMLConstraintLayout/RecyclerView)、SQLite本地数据存储、Act… · 2026/11/4 18:57:20
下载Python与Pycharm教程 (Windows版) /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 19:43:00
用命令行在 Windows 11 上启用 IIS Web 服务器 如果你觉得图形界面不合胃口,那就用 Windows 终端(PowerShell)命令在 Windows 11 上安装并启用 Internet Information Services(IIS)。
借助 IIS,文件或文档等信息可以发布到网络上供访问。它支持的通信协议包括 HTTP、HTTPS、FTP、SMTP、POP3 或 WebDAV 等。这个 Web 服… · 2026/11/4 19:43:00
AutoHotkey 与 Node.js 集成的完整指南:5 条通路打通桌面自动化与 Web 控制面板 AutoHotkey 与 Node.js 集成的完整指南:5 条通路打通桌面自动化与 Web 控制面板 【免费下载链接】AutoHotkey AutoHotkey - macro-creation and automation-oriented scripting utility for Windows. 项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey … · 2026/11/4 19:43:00
ERPNext 免费 ERP 本地部署:从零跑通财务到制造 ERPNext 免费 ERP 本地部署:从零跑通财务到制造 【免费下载链接】erpnext Free and Open Source Enterprise Resource Planning (ERP) 项目地址: https://gitcode.com/GitHub_Trending/er/erpnext
商业 ERP 授权贵,财务、库存常常各买一套。ERPNe… · 2026/11/4 19:43:00
vLLM 部署 Hy3 实战:开启 MTP 投机采样的推理加速完整教程 【免费下载链接】Hy3 Hy3 (295B A21B), a leading reasoning and agent model in its size, with great cost efficiency. 项目地址: https://gitcode.com/gh_mirrors/hy3/Hy3 点击查看 免费下载 本教程带你用 vLLM 部署 Hy3——腾讯混元团队开源的 295B 参数 MoE … · 2026/11/4 19:43:00
从零到一搭好航天任务控制系统:Open MCT × YAMCS 遥测可视化与指令下发实战 从零到一搭好航天任务控制系统:Open MCT YAMCS 遥测可视化与指令下发实战 【免费下载链接】openmct A web based mission control framework. 项目地址: https://gitcode.com/gh_mirrors/op/openmct
Open MCT 是 NASA 开源的 Web 任务控制前端框架… · 2026/11/4 19:40:57
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38