大模型推理速度优化:31B模型瓶颈与Groq LPU实测
做大模型推理的朋友对“31B 这一档模型跑不快”这件事应该都有切身体会。模型参数规模一旦到 30B 以上显存占用、解码延迟、并发吞吐全都开始吃紧。最近看到 Gemma 4 31B 配合 Groq 3 LPX 跑出极高推理速度的消息不少群友都在讨论GPU 路线是不是要被专用推理芯片弯道超车了这里先同步一个背景Groq 和 NVIDIA 其实是两家不同公司前者做 LPU 专用推理芯片后者做通用 GPU。标题里把 NVIDIA 和 Groq 放在一起更多是因为大家讨论大模型推理速度时默认都会把 NVIDIA GPU 当作对比基准和部署主力。这篇文章不打算只复述新闻而是把这件事完整拆开大模型推理的瓶颈到底在哪Groq 3 LPX 这类专用硬件凭什么跑得快以及我们自己如何搭建环境、写脚本、量出一份可信的推理速度数据。文章会覆盖 NVIDIA 驱动安装、容器运行时配置、常见报错排查并给出可以直接复制运行的 Python 基准测试代码。适合正在做 LLM 推理部署、做模型选型调研或者单纯想搞懂 tokens/s、TTFT 这些指标的开发者阅读。1. 背景31B 模型为什么难跑快1.1 大模型推理的“算力墙”先说一个反直觉的事实大模型在生成文本时瓶颈往往不是 GPU 的峰值算力而是显存带宽。自回归生成的过程是逐 token 进行的每生成一个 token都要把模型的全部权重从显存里读一遍。以 31B 模型为例FP16 精度下模型权重大约占 62GB 显存这意味着每生成一个 token硬件至少要搬运 62GB 的数据。假设一张显卡的显存带宽是 1TB/s那么理论上的最大生成速度也就是每秒 16 个 token 左右。如果再加上 KV Cache、注意力计算的开销实际速度还会更低。这就是所谓的“算力墙”不是计算单元不够快而是数据搬运速度拖了后腿。GPU 的强项是并行矩阵运算但在小 batch 的逐 token 解码场景下大量时间都花在等权重从 HBM 传输到计算单元上。于是业界开始两条腿走路一条是继续优化 GPU 上的推理框架量化、投机解码、PagedAttention 等另一条就是设计专用推理芯片用更大的片上存储来换取带宽。1.2 Gemma 4 31B 的定位Gemma 是 Google 开源的轻量级大模型家族定位是让开发者可以在自有环境部署而不是只能访问云端 API。它的特点是模型尺寸覆盖多个档位权重开放和 Google 生态如 Vertex AI、Hugging Face集成度高。Gemma 4 31B 这个型号从名字可以看出是 31B 参数级别的模型属于“中等偏大、单卡跑不满、双卡勉强塞下”的典型档位。这类模型在实际业务中的价值很直接比 7B、8B 小模型有更强的推理和指令跟随能力又不像 70B 以上模型那样对显存和部署成本要求极高。很多中小团队会把 31B 级别模型作为私有化部署的第一选择用来做知识库问答、代码生成、内容摘要等场景。但也正因为这个档位“能跑但跑不快”推理速度优化就成了上线前必须解决的工程问题。1.3 Groq 3 LPX从 GPU 到 LPU 的路线之争Groq 公司做的是 LPULanguage Processing Unit从名字就能看出它是为语言模型推理专门设计的芯片。它和 GPU 最大的区别在于存储架构GPU 依赖外部的 HBM 高带宽显存而 Groq 的 LPU 采用大容量 SRAM 作为片上存储并把模型权重直接分布在 SRAM 中。这种架构带来的直接效果是推理过程不需要反复访问外部显存权重读取开销大幅下降。同时LPU 采用数据流dataflow执行方式编译器在编译阶段就确定好每条数据的流向和执行时序硬件不需要像 GPU 那样依赖复杂的调度器。用 Groq 官方自己的说法这种设计让推理时间变得“可预测”因为每个算子的执行周期是确定的。把 Groq 3 LPX 看作这条路线上的新一代产品它在吞吐、延迟和能效比上都在往更高水平走。对我们做应用的开发者来说最重要的是理解一个趋势推理速度的竞争已经从“谁的算力大”转向“谁的存储带宽和组织效率高”。这也解释了一个现象——为什么 31B 这种对带宽敏感的模型在 LPU 上能跑出比传统 GPU 方案更亮眼的速度。2. 推理速度的核心指标拆解2.1 TTFT、TPOT、Tokens/s 三个指标衡量大模型推理速度不能只看一个数字。业界通常关注三个指标TTFTTime To First Token从请求发出到收到第一个 token 的时间它决定用户感知的“首响速度”。这个指标主要受网络、预处理Prefill阶段计算量和系统排队情况影响。TPOTTime Per Output Token每生成一个输出 token 的平均耗时它决定流式输出的“跟手程度”。TPOT 越低打字机效果越流畅。Tokens/s每秒生成的 token 数是吞吐视角的直观指标。实际生产中还会区分单用户吞吐和并发吞吐总吞吐。要注意的是不同场景对指标优先级的要求不一样。聊天机器人更看重 TTFT 和 TPOT批处理任务比如离线批量总结更看重整体吞吐。因此宣称“XX 模型推理速度最快”时必须同时说明测的是哪个指标、并发数是多少、输入输出的长度分布如何。这也是下面实战部分要设计统一测试脚本的原因。2.2 预处理阶段与解码阶段大模型的推理过程可以拆成两个阶段。第一个阶段是 Prefill预处理把用户输入的 prompt 一次性并行计算生成 KV Cache第二个阶段是 Decode解码逐 token 串行生成输出。两个阶段的硬件瓶颈完全不同Prefill 是典型的计算密集场景矩阵乘法多GPU 的算力优势能发挥出来Decode 是典型的带宽密集场景权重搬运占比高。这就是为什么会出现“同一个模型GPU 上 Prefill 很快但 Decode 速度上不去”的现象。而面向推理的专用芯片往往会针对 Decode 阶段的带宽瓶颈做专门的架构优化。这也是在比较 Groq 3 LPX 和 NVIDIA GPU 时不能只对比单次请求耗时而要分别看 Prefill 和 Decode 表现的原因。2.3 KV Cache 与显存带宽的影响KV Cache 是自回归模型中记录历史输入 K/V 向量的缓存区域。随着生成长度增加KV Cache 占用越来越大每生成一个新 token 都要读取历史 KV因此 KV Cache 的读取也会吃掉大量带宽。对于长文本生成场景KV Cache 对速度的影响甚至超过权重搬运。显存带宽不足时常见的表现是短输入、短输出时速度尚可一旦对话变长、生成 token 数变多速度就会明显下降。这也是为什么同样跑 31B 模型不同框架适配不同规格的 KV Cache 量化后实际速度会有明显差异。理解了这一点在阅读 Groq 3 LPX 跑 Gemma 4 31B 的相关测试时就能更敏锐地分辨测试是短文本还是长文本是否使用了量化是否限制了最大生成长度。这些细节都会显著影响最终数字。3. 环境准备NVIDIA 驱动、CUDA 与容器无论是本地用 GPU 跑 31B 模型还是搭建自己的推理服务环境准备都是第一道坎。这一节把 NVIDIA 驱动相关的常见问题集中梳理一遍。3.1 检查显卡与驱动状态先确认你机器上的显卡型号和驱动状态。在 Linux 下使用lspci | grep -i nvidia nvidia-smi如果nvidia-smi正常输出可以看到显卡型号、驱动版本、CUDA 版本以及显存占用信息。如果输出类似下面的报错说明驱动没有正确加载NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.这句话的意思是内核模块没有加载成功通常由驱动未安装、驱动与内核版本不匹配、或者 nouveau 开源驱动冲突导致。我们先不急着解决先看驱动怎么装。3.2 Ubuntu 安装 NVIDIA 驱动并禁用 nouveauUbuntu 下最常见的推荐方式是使用ubuntu-drivers工具让系统自动匹配驱动版本sudo apt update sudo apt install -y ubuntu-drivers-common ubuntu-drivers devices执行ubuntu-drivers devices后系统会列出推荐的驱动版本。如果是纯计算环境也可以选择安装nvidia-driver-xxx对应版本例如sudo ubuntu-drivers autoinstall sudo reboot重启后再用nvidia-smi验证。很多人在 Ubuntu 上装 NVIDIA 驱动时遇到的“黑屏”“装完进不了桌面”“驱动无法加载”根因往往是 nouveau 没有禁用。nouveau 是 NVIDIA 显卡的开源驱动会和官方闭源驱动抢占内核模块。稳妥的做法是在安装前就把 nouveau 拉黑sudo bash -c echo blacklist nouveau /etc/modprobe.d/blacklist-nouveau.conf sudo bash -c echo options nouveau modeset0 /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u sudo reboot注意禁用 nouveau 后重启需要确认系统还能正常进入。如果机器是服务器且没有其他核显输出建议提前确认好远程管理手段如 IPMI、SSH 是否已配置避免操作后失去访问。3.3 Windows 侧驱动安装的常见问题Windows 平台安装 NVIDIA 驱动时经常遇到几个典型报错。第一个是“NVIDIA 安装程序无法继续 0xe6000000”。这个错误一般是因为显卡驱动安装包检测到正在运行的 NVIDIA 相关进程或者上一次卸载不干净。解决办法是彻底清理旧驱动用 DDUDisplay Driver Uninstaller在安全模式下卸载再重新安装。另外安装前关闭杀毒软件、浏览器、GeForce Experience 等可能占用显卡驱动的程序也能减少失败概率。第二个是 NVIDIA App 或控制面板相关异常例如报错failed to load url https://nvfile/...或者控制面板闪退。这类问题多与用户目录权限、本地代理设置或 App 缓存损坏有关。可以尝试重置 NVIDIA 控制面板设置、清理%AppData%\NVIDIA下的缓存目录或者卸载后用管理员权限重装。如果你是开发者手头机器不玩游戏、只做推理计算更推荐只安装不带控制面板的“数据中心/生产分支驱动”安装体积更小出错也更少。另一个高频问题是“NVIDIA App 占用空间过大”。新版本 NVIDIA App 会建立着色器缓存、遥测数据缓存等目录长期使用后可能占掉几个 GB。清理位置通常在C:\Program Files\NVIDIA Corporation\NvApp的缓存子目录以及%ProgramData%\NVIDIA Corporation\Downloader。删除前先关闭 NVIDIA App删除后重启一般会自动重建不影响驱动主体。3.4 配置 NVIDIA Container Toolkit 与推理运行时GPU 驱动装好之后另一个常用场景是在容器里跑推理。NVIDIA 官方提供了nvidia-container-toolkit让 Docker 容器能访问宿主机的 GPUsudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker配置完成后可以用下面命令验证容器是否能看到 GPUdocker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi需要注意的是容器内的 CUDA 版本和宿主机驱动版本是解耦的。宿主机驱动负责编译好的内核模块容器内的 CUDA 运行库则向下兼容。因此驱动版本不需要刻意追新稳定即可。推理运行时方面目前主流的开源选择有这几类llama.cpp 生态适合快速验证、依赖简单vLLM 适合在线服务场景吞吐优化强Ollama 适合本地一键体验。下面实战部分会分别演示。4. 实测思路如何验证 Gemma 4 31B 的推理速度“跑得快”不能只靠看宣传最好自己有一套可复现的测速方法。这一节给出两条验证路径一条是调用 Groq 的 OpenAI 兼容 API另一条是在本地 GPU 环境用 llama.cpp 或 vLLM 部署然后统一用脚本测速。4.1 通过 Groq API 发起请求Groq 对外提供 OpenAI 兼容的 API 端点因此可以直接用openaiPython 库调用。先安装依赖pip install openai然后写一个最小请求脚本。注意把YOUR_API_KEY换成自己在 Groq 控制台申请的密钥model参数以你账号下实际可用的模型 ID 为准# 文件路径groq_minimal_test.py from openai import OpenAI client OpenAI( base_urlhttps://api.groq.com/openai/v1, api_keyYOUR_API_KEY, ) chat_completion client.chat.completions.create( modelgemma-4-31b-it, messages[ {role: user, content: 用三个要点解释为什么要关注推理速度。} ], max_tokens256, ) print(chat_completion.choices[0].message.content)这个脚本能确认 API 连通性和模型可用性。如果模型 ID 不对会在返回中看到 model not found 之类的错误届时到控制台确认实际模型名称即可。4.2 本地 GPU 部署 Gemma 4 31B如果你的机器显存足够31B 模型建议至少 48GB 显存或者使用量化版本可以在本地做对比测试。以 llama.cpp 为例先编译启用 CUDA 的版本git clone https://github.com/ggml-org/llama.cpp cd llama.cpp cmake -B build -DGGML_CUDAON cmake --build build --config Release -j然后下载 Gemma 4 31B 的 GGUF 量化模型。模型文件较大下载前先在 Hugging Face 或对应模型仓库确认许可和下载地址再执行类似下面的命令huggingface-cli download 模型仓库名 \ --local-dir ./models/gemma-4-31b \ --include *.gguf下载完成后启动 llama.cpp 的 OpenAI 兼容服务./build/bin/llama-server \ -m ./models/gemma-4-31b/gemma-4-31b-it-Q4_K_M.gguf \ --host 127.0.0.1 \ --port 8080 \ -ngl 99-ngl 99表示把尽可能多的层放到 GPU 上。如果显存不够可以降低为-ngl的层数但速度会明显下降。启动成功后服务会监听在 8080 端口并提供一个/v1/chat/completions接口和 OpenAI 兼容。使用 vLLM 的服务化部署方式也很常见。vLLM 会自动做连续批处理、PagedAttention 等优化适合压测高并发吞吐pip install vllm vllm serve 模型仓库名 \ --tensor-parallel-size 2 \ --max-model-len 8192 \ --port 8000--tensor-parallel-size表示用几张 GPU 切分模型需要根据实际显卡数量调整。这里的模型仓库名需要替换成 Hugging Face 上实际可用的 Gemma 4 31B 仓库名。4.3 编写统一的基准测试脚本无论请求打到 Groq API还是打到本地 llama.cpp / vLLM都可以用同一个 Python 脚本测速。脚本需要统计两个核心指标TTFT 和生成吞吐。关键点是使用流式响应否则拿不到首 token 时间。# 文件路径benchmark_inference.py import time from openai import OpenAI client OpenAI( base_urlhttp://localhost:8080/v1, # Groq API 则换成 https://api.groq.com/openai/v1 api_keyEMPTY, # 本地服务不校验 keyGroq API 则填真实 key ) MODEL gemma-4-31b-it PROMPT 请写一段 300 字左右的大模型推理性能优化介绍。 MAX_TOKENS 512 NUM_ROUNDS 5 def run_once(model: str, prompt: str, max_tokens: int): start time.perf_counter() stream client.chat.completions.create( modelmodel, messages[{role: user, content: prompt}], max_tokensmax_tokens, temperature0.7, streamTrue, ) first_token_time None token_count 0 output_text for chunk in stream: if chunk.choices and chunk.choices[0].delta: delta chunk.choices[0].delta.content if delta: if first_token_time is None: first_token_time time.perf_counter() - start token_count 1 output_text delta total_time time.perf_counter() - start tps token_count / total_time if total_time 0 else 0 return { ttft_ms: first_token_time * 1000 if first_token_time else None, total_s: total_time, tokens: token_count, tps: tps, output_text: output_text, } if __name__ __main__: results [run_once(MODEL, PROMPT, MAX_TOKENS) for _ in range(NUM_ROUNDS)] ttft_list [r[ttft_ms] for r in results if r[ttft_ms]] tps_list [r[tps] for r in results] print(f测试轮数: {NUM_ROUNDS}) print(fTTFT 平均: {sum(ttft_list) / len(ttft_list):.1f} ms) print(f生成吞吐平均: {sum(tps_list) / len(tps_list):.2f} tokens/s) print(f输出长度: {[r[tokens] for r in results]})运行方式python benchmark_inference.py脚本会连续跑 5 轮输出 TTFT 平均值和生成吞吐平均值。之所以跑多轮是因为单次请求受到网络抖动、队列调度影响很大取平均值更有参考价值。4.4 结果解读怎样对比才算公平拿到测速结果后比较时要注意几个容易踩坑的点。第一固定输入输出长度。如果 A 服务测的是短输入短输出B 服务测的是长输入长输出数字没有可比性。建议在测试描述里明确写清楚 prompt 长度和 max_tokens比如统一 200 字输入、512 token 输出。第二关注并发下的表现。单请求测出来的吞吐和并发 32 路请求时的总吞吐完全是两个概念。对在线服务来说经常要测“每秒请求数”与“单 token 延迟”的权衡曲线。第三区分厂商宣传数据和自测数据。宣传数字通常在最佳配置、最优长度、最优 batch 下取得。我们自己的硬件、量化方式、服务框架可能完全不同因此更重要的不是对比绝对数字而是对比你自己的多个方案选出最优组合。5. 常见问题与排查思路下面把 NVIDIA 驱动和大模型推理部署中最常见的几类问题整理成一张表并给出详细排查步骤。这些问题我在实际部署和日常答疑中见得最多建议收藏备用。问题现象常见原因解决思路nvidia-smi 报 failed to communicate内核模块未加载、驱动没装或与内核不兼容检查 dmesg重装匹配内核版本的驱动必要时先用 DDU 清理Ubuntu 装完驱动后黑屏/无法进入桌面nouveau 未禁用与闭源驱动冲突通过 modprobe.d 拉黑 nouveau重建 initramfs 后重启Windows 安装驱动报 0xe6000000旧驱动残留、占用进程未退出安全模式下用 DDU 清理关闭杀软和监控软件后重装NVIDIA App 报 failed to load url本地代理/缓存异常导致资源加载失败关闭代理清理 NvApp 缓存管理员权限重装NVIDIA 控制中心闪退用户配置损坏或与系统组件不兼容重置控制面板配置更新系统组件或改用纯驱动模式docker run 无法使用 GPUnvidia-container-toolkit 未安装或 runtime 未配置安装 toolkit执行 nvidia-ctk runtime configure重启 docker5.1 nvidia-smi 无法与驱动通信这个报错在 Linux 上非常常见。按下面顺序排查# 1. 看内核日志里有没有 NVIDIA 相关报错 dmesg | grep -i nvidia # 2. 查看内核模块是否加载 lsmod | grep nvidia # 3. 查看已安装的驱动包 dpkg -l | grep nvidia如果lsmod没有输出说明模块没有加载。如果dmesg里出现 No such device 或权限错误通常需要重新安装和当前内核版本匹配的驱动。在 Ubuntu 上最简单的做法是sudo apt purge nvidia-* sudo apt autoremove sudo ubuntu-drivers autoinstall sudo reboot注意apt purge nvidia-*会删除所有 NVIDIA 相关软件包包括 CUDA toolkit 和 cuDNN。执行前确认这些软件可以从包管理器或安装脚本重新装回。在服务器生产环境操作前务必确认有回滚方案。5.2 Ubuntu 下 nouveau 驱动冲突如果你执行lsmod | grep nouveau有输出说明开源驱动还在加载。此时安装官方驱动即使成功也可能在使用中随机崩溃。彻底禁用的方法是修改/etc/modprobe.d/blacklist-nouveau.confsudo bash -c echo blacklist nouveau /etc/modprobe.d/blacklist-nouveau.conf sudo bash -c echo options nouveau modeset0 /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u sudo reboot重启后再次执行lsmod | grep nouveau如果没有输出说明拉黑成功。5.3 Windows 下驱动安装失败与 NVIDIA App 异常Windows 侧的问题多数可以通过“彻底清理 干净安装”解决。推荐的 DDU 使用流程是先进安全模式运行 DDU 选择“清除并重启”重启后再以管理员身份运行新版本驱动安装包。安装完成后先不装任何附加组件直接测试nvidia-smiWindows 下在C:\Program Files\NVIDIA Corporation\NVSMI目录中能否正常输出。如果出现 NVIDIA App 报错failed to load url https://nvfile/...这类错误通常不是网络问题而是 App 的内部资源路径和本地环境不匹配。优先清理应用缓存目录并重置设置如果还不行卸载 NVIDIA App只保留驱动核心再用浏览器或命令行做 CUDA 开发即可。6. 最佳实践与工程建议6.1 推理服务化设计把模型跑起来只是第一步生产环境还需要考虑服务化。无论是用 Groq API 还是自建 vLLM 服务都建议在服务前方加一层统一网关屏蔽不同推理后端的差异。网关层负责 API Key 管理、限流、负载均衡和请求日志。一个简单的做法是所有推理请求都走 OpenAI 兼容协议后端可以随时在 Groq 和本地 vLLM 之间切换。这样既能利用 Groq 这类专用硬件的低延迟又能在价格、数据合规等条件变化时平滑迁移。6.2 性能监控与压测不要等线上用户抱怨慢才去查性能。建议上线前就建立三个监控维度延迟指标TTFT、TPOT、总耗时、吞吐指标RPS、tokens/s、资源指标GPU 利用率、显存占用、排队长度。压测时要注意并发数从 1 逐步增加到目标值观察延迟是否出现拐点。如果并发增加后吞吐不再上升而延迟明显变长说明系统已经达到瓶颈此时继续加压没有意义。合理的目标是找到“延迟可接受、吞吐最高”的并发区间而不是盲目追求吞吐数字。6.3 成本、速度与质量的权衡31B 模型在专用推理硬件上跑得快但并不是所有业务都必须追求最高速度。对离线批处理场景速度和成本需要做权衡对实时对话场景TTFT 和 TPOT 才是核心指标。另外一个容易被忽略的点是量化。跑 31B 模型时Q4 量化通常能显著降低显存占用和带宽压力但会带来少量质量损失。建议在目标业务数据上做效果评测而不是只看推理速度。速度提升 30% 但核心任务准确率下降 2%是否值得取决于业务本身的容错空间。6.4 安全与合规边界使用云端推理 API 时要特别注意数据合规。不要把自己的内部代码、用户隐私数据直接发送到第三方 API 做测试除非确认数据协议允许。生产环境涉及敏感数据时优先考虑自建本地部署配合 API 网关做好权限控制和审计日志。在服务器上执行驱动卸载、内核模块操作时遵守最小权限原则先备份再测试。尤其是apt purge nvidia-*、update-initramfs这类高危命令强烈建议先在测试机验证完整流程避免生产环境误操作导致长时间不可用。7. 总结与学习路线这篇文章围绕“Gemma 4 31B 推理速度”展开核心是回答三个问题为什么 31B 模型速度上不去、Groq 3 LPX 这类专用芯片从架构上如何解决带宽瓶颈、以及我们自己如何搭建环境并量化推理速度。文中给出了 NVIDIA 驱动安装、nouveau 禁用、容器 GPU 配置、llama.cpp 部署、基准测试脚本等一套可复现的完整流程。下一步如果你想继续深入建议按这个顺序学习先掌握 TTFT、TPOT、吞吐三个指标的含义再在自己机器上用 llama.cpp 或 vLLM 跑通一个 10B 级别模型然后对着脚本分别测短文本和长文本场景把数据记录下来。之后再尝试接入 Groq API 做横向对比你会发现同一个模型在不同硬件上的速度差异背后其实就是存储架构、编译调度、批处理策略这些底层因素的差异。最后提醒一句推理速度的“快”和“慢”脱离场景没有意义。先明确你的业务是实时对话还是批量处理再选择硬件和框架最后用一套统一的脚本说话。这样无论硬件厂商怎么宣传你都能用自己的数据做出判断。如果这篇文章对你有帮助可以收藏备用。后面有空我会再写一篇关于 31B 模型量化方案对比和 vLLM 高并发压测的实操笔记欢迎持续关注。

相关新闻

STM32与FreeRTOS实战:电磁炮系统设计与嵌入式开发全解析

STM32与FreeRTOS实战:电磁炮系统设计与嵌入式开发全解析

1. 项目概述:从零到一的电磁炮国赛冲刺之路2019年的全国大学生电子设计竞赛(电赛)已经过去几年,但“电磁炮”这个题目至今仍是许多电子爱好者、在校学生津津乐道的话题。它不像传统的电源或控制类题目那样有明确的“标准答案”&am…

2026/8/29 20:23:46 阅读更多 →
英飞凌与Edge Impulse联手,边缘AI开发终于有了平台选择权

英飞凌与Edge Impulse联手,边缘AI开发终于有了平台选择权

英飞凌和Edge Impulse的合作官宣有一阵子了,业内讨论不少,但多数文章停留在"两家签约了、联调了"这种新闻稿层面。我在嵌入式AI和TinyML这条线上摸爬滚打了几年,看到这条消息时第一反应是:这事儿对开发者最大的价值&…

2026/8/29 20:23:46 阅读更多 →
IAR Visual State:大型嵌入式状态机模型驱动开发实战解析

IAR Visual State:大型嵌入式状态机模型驱动开发实战解析

在嵌入式开发这个圈子里,状态机是块难啃的骨头。尤其是做工业控制、汽车电子、复杂物联网设备的朋友,应该都有过这种体验:产品功能一多,逻辑判断一复杂,原先那套用switch-case手写状态机的办法就开始现原形了——代码膨…

2026/8/29 20:23:46 阅读更多 →

最新新闻

STM32定时器中断原理与实战:从基础概念到HAL库应用

STM32定时器中断原理与实战:从基础概念到HAL库应用

1. 项目概述:从“定时”到“中断”的思维跃迁在嵌入式单片机的世界里,“定时”功能就像呼吸一样基础而重要。无论是让一个LED灯每隔一秒闪烁一次,还是精确测量一个脉冲的宽度,亦或是为复杂的通信协议提供时间基准,都离…

2026/8/29 21:16:36 阅读更多 →
基于BERT的垃圾短信识别实战:从数据清洗到模型部署全流程解析

基于BERT的垃圾短信识别实战:从数据清洗到模型部署全流程解析

简介:文本分类是自然语言处理(NLP)领域的核心任务之一,其核心原理是通过机器学习模型自动将文本划分到预定义的类别。这项技术通过理解文本的语义和上下文信息,能够高效处理海量文本数据,在信息过滤、内容审…

2026/8/29 21:16:36 阅读更多 →
STM32通用定时器中断原理与实战:从寄存器到HAL库

STM32通用定时器中断原理与实战:从寄存器到HAL库

1. 从“闹钟”到“心脏”:通用定时器的核心角色在嵌入式单片机的世界里,如果说CPU是大脑,负责思考和决策,那么通用定时器(General-purpose Timer)就是那颗不知疲倦、精准跳动的心脏。它不直接参与逻辑运算&…

2026/8/29 21:16:36 阅读更多 →
HarmonyOS 7.0 / API 26 ArkWeb M144 Cookie 策略:登录页和敏感页为什么要分开管

HarmonyOS 7.0 / API 26 ArkWeb M144 Cookie 策略:登录页和敏感页为什么要分开管

HarmonyOS 7.0 / API 26 ArkWeb M144 Cookie 策略:登录页和敏感页为什么要分开管 这篇只讲一个点:ArkWeb M144 Cookie 策略。版本边界先说清楚:下面的写法面向 HarmonyOS 7.0 / API 26。老版本工程不要直接照搬,先确认 SDK、DevEc…

2026/8/29 21:16:36 阅读更多 →
4399游戏开发校招笔试题复盘:从算法到C++底层的高频考点与策略

4399游戏开发校招笔试题复盘:从算法到C++底层的高频考点与策略

毕业季那阵子,我在宿舍楼下公告栏看到4399游戏的校招宣传海报,第一反应是“做小游戏的公司笔试应该不难吧”。等真拿到游戏开发类笔试题,翻到第三页我就收起了这个念头——这份卷子考得相当扎实,算法、C底层、游戏数学、甚至图形学…

2026/8/29 21:16:35 阅读更多 →
前端春招面经:斩获字节网易美团offer的实战备考指南

前端春招面经:斩获字节网易美团offer的实战备考指南

又到了一年春招季,不少同学在后台问我2019年前端面经的事情。我去年春招拿到了字节跳动、网易、美团三家offer,虽然不是最顶尖的,但整个过程踩了不少坑,也积累了很多可复用的经验。今天这篇面经,不打算写成面试题流水账…

2026/8/29 21:15:35 阅读更多 →

日新闻

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:00:24 阅读更多 →
【JavaScript】内存管理-垃圾回收机制-内存泄露

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:00:24 阅读更多 →
Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/29 0:00:24 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/29 18:08:35 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 23:05:07 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/28 19:47:53 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →