让 AMD V620 在 Windows 11 上真正跑起 PyTorch——原生 HIP 路线全记录

Python 开发的实践:从数据结构选型到框架决策 规模多大?决定用list还是set,Pandas 还是 Polars。瓶颈在哪?I/O 密集用异步,CPU 密集用进程/自由线程,内存受限用列式与惰性执行。代价是什么?消除手动维护窗口的出错面,TaskGroup消除失败任务不被取消的泄漏,消除 N+1,Protocol消除为类型约束而引入的继承层级——每个选择都在消除某类代价,同时也引入新的约束。能回答这三个问题,比记住更多 API 更有用。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意! 阅读详情

前言:一个令人沮丧的 “False”

在 Windows 11 工作站上插入 AMD Radeon PRO V620,启动 ComfyUI 准备跑一张图,或者在 Conda 环境里运行 MinerU 解析文档——终端返回的结果是 torch.cuda.is_available() -> False。所有任务默认挤在 CPU 上,32GB 的 HBM2e 显存纹丝不动。

这并非硬件故障,而是软件生态的"墙"。Windows + AMD GPU 的 AI 开发场景下,开发者长期面临"显卡性能强大却无处施展"的尴尬。本文先把 AMD GPU 跑 PyTorch 的底层逻辑讲清楚,再给一套在 V620 上验证过的完整方案。这套方案不仅适用于 ComfyUI,同样能解决 MinerU 及 YOLO 的同类报错,并在原理上支持其它基于 PyTorch 的推理应用。

方案选型:为什么一定要走"原生 HIP 路线"?

在深入原理之前,有必要先厘清 Windows 下 AMD GPU 运行 AI 框架的几条常见道路。

目前业内主流推荐的不外两种妥协方案,但都存在明显短板:

方案一:Torch-DirectML(微软官方兼容层)

这是微软为 Windows 平台推出的 DirectX 12 机器学习加速后端。一行 pip install torch-directml 就能让 PyTorch “跑起来”。

痛点:DirectML 本质上是将 PyTorch 算子通过 DirectML Execution Provider 交给 Direct3D 12 调度执行,走的并不是 AMD 计算驱动。这带来两个实际问题:算子覆盖不全——属于 DirectML Backend 自身的限制——Stable Diffusion 中的自定义 Attention 机制等复杂模型会频繁回退 CPU;显存管理效率偏低,V620 作为专业计算卡的带宽优势发挥不出来。适合尝鲜,不适合深度推理。

方案二:WSL2(Windows 子系统 Linux)

由于 AMD 官方 ROCm 长期将 Linux(尤其是 Ubuntu)作为"一等公民"优化,不少开发者选择在 Windows 内开 WSL2,然后在虚拟 Linux 内核下装原生 ROCm 驱动。

痛点:WSL2 通过 GPU Paravirtualization(GPU-PV)访问 GPU,计算性能损失通常不大,但跨 Windows 与 Linux 文件系统的 I/O 会产生额外开销。MinerU 这类需要频繁读写本地文档的任务,或者 YOLO 训练需要高速加载海量图像数据集的场景,跨文件系统的读写延迟会明显拖慢整体流程。

本文推荐方案:原生 Windows HIP SDK + ROCm 版 PyTorch

随着 AMD 在 2025 年后对 Windows 平台投入加大,最新版本的 HIP SDK 已经能原生支持 Windows 上的计算驱动。本方案不依赖 DX12 翻译层,也无需虚拟化开销,而是让 PyTorch 通过 HIP Runtime 直接与 AMD GPU 驱动进行底层通信。

根据 ROCm GitHub Discussions 中多位开发者的实测反馈,本方案在 V620 的大模型推理场景中通常优于 DirectML 方案,且能兼容大多数基于 PyTorch 的推理应用。不过,部分依赖 CUDA Extension 或 Triton 的项目仍可能存在兼容性限制。当前对 gfx1030 的 Windows 支持仍标注为"可能可用但未经严格测试",但它确实是 AMD Windows 生态发展的官方方向。


一、核心原理:AMD GPU 运行 PyTorch 的技术栈

要解决问题,首先要理解 PyTorch 与 GPU 之间的"对话"机制。

1. PyTorch 的多后端架构

PyTorch 并非只支持 NVIDIA CUDA。它采用统一的前端接口,针对不同硬件平台提供相应的底层实现:

PyTorch 为不同硬件平台实现了不同的计算后端,其中 CUDA 后端最为成熟。需要特别说明的是,PyTorch 并没有提供独立的 **torch.rocm** 命名空间。为了保持与现有 CUDA 生态的兼容性,在 AMD ROCm 平台上仍然使用 torch.cuda API。不同之处在于,这些 API 会根据编译目标调用对应的 GPU Runtime:在 NVIDIA 平台调用 CUDA Runtime,在 AMD ROCm 平台则调用 HIP Runtime。因此,torch.cuda.is_available()、torch.cuda.device_count() 等接口在 AMD 显卡上同样适用,绝大多数基于 PyTorch 的代码无需修改。

当执行 torch.cuda.is_available() 时,PyTorch 实际检查的是当前编译时链接的是否为 HIP Runtime,以及该 Runtime 能否成功初始化对应的 GPU 驱动。

2. ROCm:AMD 的通用计算平台

ROCm(Radeon Open Compute)是 AMD 提供的 GPU 通用计算平台,定位与 NVIDIA CUDA 类似。它包含驱动程序、运行时库、编译器工具链以及各种计算库(如 rocBLAS、rocFFT 等),是 AMD GPU 进行通用计算和 AI 训练的底层基石。

3. HIP:兼容 CUDA 编程模型的接口层,与 PyTorch 中的体现

HIP(Heterogeneous-compute Interface for Portability)是一套兼容 CUDA 编程模型的异构计算接口。它向下对接 ROCm Runtime,向上对开发者提供类似 CUDA 的编程体验。对于现有的 CUDA 项目,可以通过 hipify 工具将 CUDA API 自动转换为 HIP API,也可以直接编写原生 HIP 程序。

那么,为什么在 PyTorch 中,AMD GPU 依然使用 torch.cuda.xxx 命名空间呢?

torch.cuda.is_available()      # AMD 显卡上同样有效
torch.cuda.device_count()      # 返回 AMD GPU 数量
torch.cuda.get_device_name()   # 返回 "Radeon PRO V620"

这是因为 PyTorch 并未为 ROCm 单独设计一套 torch.rocm API。为了最大程度兼容海量现有代码,PyTorch 的"CUDA 后端"在 AMD 平台上直接复用了相同的接口命名,底层实际链接的是 HIP Runtime 而非 NVIDIA CUDA Runtime。

换言之,torch.cuda.is_available() 在 AMD 机器上检查的是 HIP Runtime 能否成功初始化。对于绝大多数纯 PyTorch 应用(如 ComfyUI、MinerU 的推理脚本),无需修改任何业务代码,即可在 NVIDIA 与 AMD 显卡之间无缝切换。这也正是本方案能够"零代码改动"直接适配这些工具的根本原因。

4. 软件栈全景图

为了让读者对整个调用链有清晰认知,这里给出完整的软件栈结构:

注:在 Windows 平台上,驱动层和运行时层的具体实现细节可能与 Linux 有所差异,但上述层次关系适用于本文讨论的范围。

5. 架构代号(gfx)与环境变量的作用

AMD 每一代 GPU 架构都有内部代号:RDNA2 对应 gfx1030,RDNA3 对应 gfx1100。V620 核心架构正是 RDNA2(gfx1030)。

需要说明的是,V620 采用的 RDNA2 属于 ROCm Windows 适配中已较为成熟的基础架构。本方案的适配逻辑(环境变量覆盖 + HIP Runtime 调度)理论上适用于 RDNA2 及此后更新的 AMD 架构(如 RDNA3 的 gfx1100、RDNA4 等)。若您手中的是 RDNA3 架构显卡(如 RX 7900 系列),同样可按本文步骤操作。只需将 HSA_OVERRIDE_GFX_VERSION 的值从 10.3.0 改为对应架构的版本号(例如 RDNA3 通常设为 11.0.0,具体请以 ROCm 官方文档或 rocminfo 检测结果为准)。本文以 gfx1030 为例展开,其他架构的适配思路完全一致。

关键点在于:**Windows 版本的 ROCm 对 gfx1030 的官方支持状态为"可能可用但未经充分验证"**(该结论源自 AMD ROCm GitHub Discussions 中开发者的说明)。为了绕过官方的硬件白名单检查,需要通过环境变量手动干预 ROCm Runtime 的行为:

  • **HSA_OVERRIDE_GFX_VERSION=10.3.0**:告诉 ROCm Runtime 按指定 gfx 架构(10.3.0)加载对应的 Code Object,而不是重新识别 GPU ISA。这可以绕过针对未认证 GPU 的拒绝加载逻辑。

  • **HIP_VISIBLE_DEVICES=0**:类似 CUDA 的可见性控制,在多卡工作站中指定使用第一块 AMD GPU。


二、实操步骤

下面进入实操。请严格按顺序执行,特别注意环境变量的配置。

1. 下载并安装 HIP SDK

访问 AMD 官方资源库,下载 Windows 专用的 HIP SDK 安装包(如 AMD-Software-PRO-Edition-26.Q1-Win11-For-HIP.exe)。

安装过程保持默认选项即可,安装完成后建议重启系统,确保环境变量 PATH 中包含 HIP 的 bin 目录。

2. 配置关键环境变量(重中之重)

在终端(PowerShell 或 CMD)执行 PyTorch 任务之前,必须设置以下变量。为了避免每次手动输入,建议直接添加到系统环境变量中。(若您的显卡非 gfx1030 架构,请参考第一章第 5 小节末尾的说明调整 HSA_OVERRIDE_GFX_VERSION 的值。)

# PowerShell 临时设置(推荐先运行此行测试)
$env:HIP_VISIBLE_DEVICES="0"
$env:HSA_OVERRIDE_GFX_VERSION="10.3.0"
:: CMD 临时设置
set HIP_VISIBLE_DEVICES=0
set HSA_OVERRIDE_GFX_VERSION=10.3.0

注意:若您使用 PyCharm 或 VS Code 的集成终端,请确保在启动 IDE 前设置好系统环境变量,否则子进程无法继承。

常用调试环境变量

除上述两个核心变量外,以下变量在排查问题时非常有用:

  • **HIP_LAUNCH_BLOCKING=1**:使 GPU Kernel 同步执行,方便定位真正报错的位置,避免异步执行带来的错误信息模糊。

  • **TORCH_USE_HIP_DSA=1**:启用 Device Side Assert 调试,帮助定位 Kernel 内部的断言失败。

这些变量可在排查问题时临时启用,生产环境建议关闭以免影响性能。

3. 创建独立 Conda 环境并安装 ROCm 版 PyTorch

绝对不要使用 conda install pytorch,这会拉取默认的 CPU 或 CUDA 版本。当前(本文验证时),Windows + gfx103X 需要使用 ROCm PyTorch Nightly 版本。后续若 Stable 版本已支持,建议优先使用 Stable。

# 创建环境
conda create -n comfy_env python=3.12 pip -y
conda activate comfy_env

# 强制重装预发布版本的 ROCm PyTorch(关键命令)
pip install --force-reinstall --pre torch torchvision torchaudio --index-url https://rocm.nightlies.amd.com/v2-staging/gfx103X-all/

4. 验证 HIP 可用性

执行以下单行 Python 脚本,验证 GPU 是否被正确识别。

python -c "import torch; print('HIP可用性:', torch.cuda.is_available()); print('显卡名称:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else '无')"

期望输出:HIP可用性: True,且显卡名称应正确显示为 Radeon PRO V620 或包含 gfx1030 字样的设备名。

重要提示:torch.cuda.is_available() 返回 True 仅表示 HIP Runtime 成功初始化,并不代表所有算子均能正常执行。部分算子可能因编译或兼容性问题失败,需结合实际模型测试。


三、翻车现场与回滚策略

如果验证输出依然是 False,按以下路径排查:

  1. 检查是否混装了 CPU 版 PyTorch:
    运行 pip list | findstr torch,如果看到 torch 版本号后不带 +rocm 字样,说明装错了。必须先执行 pip uninstall torch torchvision torchaudio 彻底卸载,再重试步骤 3。

  2. 版本锁定策略:
    若 Nightly 最新版运行时出现 Kernel Launch Failure、HIPRTC Compilation Error、Access Violation 等异常,说明最新二进制与当前 HIP SDK 存在 ABI 兼容性问题。此时需要回退到特定的稳定组合:

   # 示例:回退到 2.13 版本组合(具体日期号需查阅 nightly 归档)
   pip install --force-reinstall --pre torch==2.13.0a0+rocm7.14.0a20260612 torchvision==0.28.0a0+rocm7.14.0a20260612 --index-url https://rocm.nightlies.amd.com/v2-staging/gfx103X-all/
  1. 深度清理:
    如果环境变量无误但仍报错,可能需要卸载所有 ROCm 相关的 pip 包(pip uninstall rocm-*),甚至重装 HIP SDK。在 Windows 上,注册表残留偶尔会导致驱动冲突。

四、适用范围与框架兼容性

本文方案适用于基于 PyTorch 的 AI 推理应用,不适用于采用其他计算后端的框架。

已验证框架及兼容性

框架 / 库状态说明
PyTorch(ROCm)✅本方案核心
torchvision✅常用 CV 算子支持
torchaudio✅可正常使用
HuggingFace Transformers✅大多数纯 PyTorch 模型可直接运行
ComfyUI✅扩散模型推理,已实际验证
MinerU✅文档解析(布局/OCR/公式),已实际验证
Ultralytics YOLO✅目标检测推理,已实际验证

特别说明: 上表反映的是本文验证环境及当前(2026 年)的社区兼容性情况。随着 ROCm Windows 和 PyTorch 的持续迭代,部分项目的支持状态可能会发生变化。


五、关于版本兼容性

Windows ROCm 仍处于快速演进阶段。影响兼容性的通常不是某一个单独组件,而是多个组件的组合:

建议读者优先保证版本组合兼容,而不是盲目升级到最新版本。具体做法是:

  1. 先查看 ROCm Windows Release Notes,了解当前官方推荐的版本组合。

  2. 选择与 HIP SDK 版本匹配的 PyTorch Nightly 版本。

  3. 若遇到问题,降级 PyTorch 而非升级 HIP SDK,后者的回滚代价更大。


六、现状与风险提示

在 Windows 上使用这套方案,有几个技术现状需要了解:

  • 官方支持状态:ROCm 团队明确表示,其全功能工具链(rocminfo、多卡通信、容器化部署)在 Ubuntu 系统上拥有最完善的优化。Windows 版本属于"跟进支持",gfx1030 在 Windows 上的测试覆盖度远低于 Linux。

  • 已知的稳定性问题:根据 ROCm GitHub 论坛的社区反馈,在 gfx1030 架构上进行大规模矩阵运算时,若显存占用超过 85%,可能会触发驱动重置或 hipErrorOutOfMemory 异常。此外,部分 PyTorch 算子(如 torch.scatter)在 ROCm Windows 后端上的性能表现可能不及预期。

  • 性能参考:目前缺少官方的 Windows 基准测试数据,但社区实测表明 V620 在推理场景中通常优于 DirectML 方案。具体性能与模型结构、算子实现、驱动版本密切相关,建议以实际测试为准。

总结:本文提供的方案是一套能用的工程化方案。它能让 AMD V620 在 Windows 下"动起来",满足开发调试和推理需求。对比 Torch-DirectML 的兼容层损耗和 WSL2 的虚拟化 I/O 开销,原生 HIP 方案在长期运维和性能释放上有明显优势。但若要用于 7x24 小时的生产级训练任务,建议优先考虑官方支持更完善的 Linux 系统,或等待 AMD 后续驱动迭代。


参考资料

  1. AMD HIP SDK for Windows 官方安装文档

  2. AMD ROCm 官方文档

  3. PyTorch ROCm 安装说明

  4. ROCm Windows Release Notes

  5. ROCm GitHub Discussions(Windows 支持)

  6. HIP SDK 下载入口


免责声明

本文基于作者实际验证结果整理,结合 AMD 官方文档及社区资料分析。Windows ROCm 仍在快速迭代,不同版本的 HIP SDK、PyTorch、Python 之间可能存在兼容性差异,实际部署时请以 AMD 官方 Release Notes 为准。

深入大模型-52-Harness综述之(二)四大子系统 一个Harness都由四个子系统拼成,Agentic Loop是主干,四个子系统是Tool系统、Memory & Context、Guardrails,再加上一个把它们优雅组织起来的Skill系统。 阅读详情

相关推荐

Ubuntu 22.04下Minkowski Engine编译避坑指南:解决Cuda 12.2与Pytorch cu118版本冲突

本文详细介绍了在Ubuntu 22.04系统中解决Minkowski Engine编译时Cuda 12.2与Pytorch cu118版本冲突的实用方法。通过修改版本检查逻辑、创建兼容符号链接等技巧,帮助开发者顺利完成编译,并提供了性能优化建议和替代方案,确保三维点云处理任务的高效运行。

weixin_42543309的博客 162

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

a bit 202

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8384

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 698

用PyTorch实战清华SSVEP数据集:手把手教你搭建第一个脑机接口分类模型(附完整代码)

本文详细介绍了如何使用PyTorch实战清华大学SSVEP数据集,从数据预处理到CNN模型构建的全流程。通过手把手教学,帮助读者搭建第一个脑机接口分类模型,特别针对数据维度转换等关键难点提供可视化解析,并附完整代码实现。

weixin_42566121的博客 352

混合动作空间在强化学习中的创新应用:PDQN与MPDQN算法解析

本文深入解析了强化学习中处理混合动作空间的PDQN与MPDQN算法。针对既有离散选择又有连续调节的复杂决策场景,PDQN通过参数化深度Q网络,巧妙结合DQN与DDPG进行交替优化;MPDQN则进一步改进,为每个离散动作提供专属参数评估以减少干扰。文章通过游戏、自动驾驶等实例阐述了其应用价值与面临的挑战。

efc123456的博客 864

C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?

第17课:用大白话讲清 list 的双向链表结构、哨兵头、push_back 四步、迭代器封装、merge 与 splice 的区别,以及 vector 排序为什么常比 list 快。

wo_jack的博客 236

SO逆向入门实战教程一:OASIS

文章目录一、前言二、准备三、Unidbg模拟执行四、ExAndroidNativeEmu 模拟执行五、算法分析六、尾声 一、前言 这是SO逆向入门实战教程的第一篇,总共会有十三篇,十三个实战。有以下几个注意点: 主打入门级的实战,适合有一定基础但缺少实战的朋友(了解JNI,也上过一些Native层逆向的课,但感觉实战匮乏,想要壮壮胆,入入门)。 侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg Hook + .

lilac的博客 2万+

工厂设备接MES为什么慢:协议识别与点表配置自动化的技术拆解

工业现场设备接 MES 的周期主要消耗在协议识别与点表配置。本文拆解这条链路的四层结构,给出点表映射的数据模型、两种部署架构的对比,以及可直接落地的三项验收口径与校验代码。适合工控集成、MES 实施、设备联网方向的工程师。

emfuture的博客 398

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发...

9374

AI 辅助编程全景:演进、提效场景与未来趋势

本文系统梳理了AI辅助编程的发展历程与应用场景。演进路径分为三代:从代码补全工具(2023)、对话式助手(2024)到自主编程代理(2025)。在软件全生命周期中,AI可显著提升各环节效率:需求分析阶段节省30-60%文档编写时间;设计阶段缩短40-60%技术调研周期;编码阶段通过智能补全提升55%任务速度;测试阶段减少30-60%测试编写时间。数据显示,2025年84%开发者使用AI工具,41%代码由AI生成,平均每周节省3.6小时。AI正推动开发者角色从编写者转变为审核者,但复杂业务逻辑和架构设计仍需人

甘蓝的专栏 473

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 280

英飞凌Tricore实战系列导读

笔者结合项目应用经验对Tricore MCU的开发及应用经验进一步总结,成人达己,渡己渡人。

initiallizer的博客 3791

向 excel、word、pdf 三种文档中占位符插入数据

【代码】向 excel、word、pdf 三种文档中占位符插入数据。

weixin_45934659的博客 66

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

软件商店常见问题标准处理流程

从底层软件源来看,/etc/apt/sources.list配置错误、源地址失效、公网与内网离线源混用、ARM64与x86_64架构源串用,以及DNS解析异常、系统代理配置错误,都会导致商店无法获取应用数据;打开该应用,确认可正常运行;软件商店作为系统内置的图形化软件分发与安装入口(UKUI桌面配套组件,底层依赖APT软件源),承担着应用软件的浏览、搜索、下载、安装、升级与卸载等核心功能,是终端软件部署与管理的关键通道。覆盖软件商店启动、页面加载、应用下载、安装、卸载、搜索、自身更新等全部业务场景。

qq_39496637的博客 285

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【AI 开发从入门到进阶 · 10】收官篇:LoRA 微调、模型评估、推理加速与生产部署全链路

本文系统梳理了大模型微调与生产落地的全流程,从决策是否微调、优选LoRA技术方案,到代码实现、效果评估、推理加速与FastAPI服务封装,最终构建可迭代的生产级AI系统。强调“逐级升级”原则,倡导以数据闭环驱动优化,避免技术冲动。全系列贯穿工程化思维,提供可复用模板与实战建议,助力开发者从模型训练迈向稳定可用的AI服务部署。

信息安全领域优质创作者|操作系统领域专家 112

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ARIA规范

ARIA用来补充原生HTML缺失的语义,原则:优先原生标签,ARIA仅做补充。 ARIA角色role:定义组件身份,分为地标角色、构件角色、文档角色;构件角色用于自定义弹窗、tab、下拉菜单等复杂组件; ARIA状态与属性:以aria-开头,描述组件实时状态;常用:aria-label、aria-labelledby、aria-describedby、aria-hidden、aria-expanded、aria-selected、aria-modal、aria-live; 常用场景:图标按钮用aria-l

2401_83227843的博客 455

LangGraph 的分离思想总结

LangGraph 的分离思想,本质上是对"高内聚、低耦合"这一经典工程原则在 LLM 应用领域的落地。它通过状态与逻辑分离、节点职责分离、控制流与执行分离、计算与持久化分离、编排与实现分离五个层面,把一个难以维护的"大黑盒"拆解成一组可组合、可测试、可观测的部件。理解这套分离思想,比记住 API 更重要——因为当你面对新的智能体场景时,真正指导你做出合理拆分的,正是这些分离原则。

张晨光老师的播客 388

Java基础:泛型、类型擦除与 PECS 原则

泛型允许类、接口和方法使用类型参数,把许多类型检查提前到编译期,减少显式类型转换,提高代码复用性。例如。

cjpabc的博客 455

RT-Thread 5.4.0 完整版架构剖析(下):IPC、时钟、内存、设备与组件

从 IPC 全量、时钟与定时器、内存管理,到设备框架、组件层、软件包机制、移植裁剪与速查表,补齐 RT-Thread 5.4.0 完整版的下半张地图。

205

CMake 多目录工程实战:静态库与动态库的完整构建示例

本文通过一个完整CMake项目示例,展示了如何构建静态库(math)与动态库(sort),并分别在test1、test2中链接使用。项目结构清晰,顶层CMakeLists.txt统一管理变量,各子目录独立配置编译规则。通过add_library生成库,link_directories和link_libraries实现链接,最终完成构建与验证。重点区分了静态库(打包进可执行文件)与动态库(运行时加载)的差异,适用于实际工程化开发与面试准备。

2303_77004089的博客 124

第2讲:提示注入攻击——原理与防御

提示注入是攻击者通过恶意指令绕过AI系统规则的安全威胁,分为直接注入(如覆盖指令、角色扮演越狱)和间接注入(藏于文档或搜索结果中)。防御需三重机制:检测(识别高危模式与多轮诱导)、加固(设置优先级、随机分隔符、锁定输出)、净化(清除控制字符、编码、截断超长输入)。结合上下文分析与多模态处理,可有效防范编码绕过、过度净化等陷阱。核心理念:防御需检测、加固、净化联动,筑牢AI应用安全防线。

sandaoliuge的博客 268

TypeError: must be str, not list

【代码】TypeError: must be str, not list。

Forerunner and Successor 先駆者と後継者 53

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 491

CMake 实战指南:从基础语法到静态库/动态库制作与链接

本文系统介绍了CMake的基本用法,涵盖注释、变量定义、C++标准设置、可执行文件输出路径配置、文件查找及头文件引入。重点讲解了如何通过add_library创建静态库与动态库,并结合include_directories和target_link_libraries实现依赖管理。内容实用,适合作为CMake入门与项目构建参考。

2303_77004089的博客 216

本地chatbot4--引入LangGraph

上一节实现了chatbot的连续调用工具的功能,但目前流程还是提示词→模型→解析→调用工具(可选)→输出线性的一条路走到底(LangChain)只适合简单线性任务(问答、摘要、简单RAG)agent的本质是:“模型决定调工具→执行→结果喂回模型→再决定……直到完成”。举例:读日志 → 解析 ─失败→ 重试(≤3次) ─→ 退出│成功↓算统计 → 对比历史 → 生成报告 → [人工审核卡点] → 发送。

weixin_45859446的博客 97
上一篇: RAG 重排序实战指南:从自检清单到 5 种部署方案
下一篇: 重新理解 LangChain v1.x:LangChain、LangGraph、langchain-core 与 Classic 到底是什么关系?
StevenCaoDL
博客等级 码龄23年 9粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值