当前位置: 首页 > article >正文

第六章:异步访问的同步:6.3.1 dma_resv_usage 层级机制详解

1. 概述dma_resvDMA reservation object是 Linux 内核中管理 GPU buffer 同步的核心机制。每个dma_resv对象维护一组dma_fence用于追踪对该 buffer 的各种操作。enum dma_resv_usage定义了 fence 的用途级别控制谁能看到这个 fence。这套层级机制是理解 TTM 内存管理、GPU 命令提交、隐式同步的关键。2. 四个 Usage 级别enumdma_resv_usage{DMA_RESV_USAGE_KERNEL,// 0 — 内核内存管理DMA_RESV_USAGE_WRITE,// 1 — 隐式写同步DMA_RESV_USAGE_READ,// 2 — 隐式读同步DMA_RESV_USAGE_BOOKKEEP,// 3 — 无隐式同步仅记账};2.1 KERNEL — 内核内存管理操作级别值: 0最低/最严格 语义: 内核内部的内存管理 DMA 操作 场景: BO 搬迁move、内存清零clear、页表更新谁应该等待 KERNEL fence所有人。任何访问该 buffer 的代码都必须先等待 KERNEL fence 完成。唯一的例外是 buffer 已被 pin 住位置锁定的情况。amdgpu 实例// TTM 搬迁时添加 KERNEL fencedma_resv_add_fence(bo-base.resv,fence,DMA_RESV_USAGE_KERNEL);// VM 页表更新等待 KERNEL fencedma_resv_wait_timeout(bo-tbo.base.resv,DMA_RESV_USAGE_KERNEL,...);2.2 WRITE — 隐式写同步级别值: 1 语义: 用户空间命令提交的写操作 场景: GPU 渲染写入 render target、compute shader 写入 bufferamdgpu 实例命令提交amdgpu_cs.c// gang leader 的 fence 作为 WRITE 添加dma_resv_add_fence(gobj-resv,p-fence,DMA_RESV_USAGE_WRITE);2.3 READ — 隐式读同步级别值: 2 语义: 用户空间命令提交的读操作 场景: GPU 采样纹理、读取 uniform bufferamdgpu 实例命令提交amdgpu_cs.c// gang 非 leader 的 fence 作为 READ 添加dma_resv_add_fence(gobj-resv,p-jobs[i]-base.s_fence-finished,DMA_RESV_USAGE_READ);2.4 BOOKKEEP — 无隐式同步级别值: 3最高/最宽松 语义: 不参与隐式同步仅内部记账 场景: 抢占 fence、页表更新、TLB flush、eviction fenceBOOKKEEP fence不会被隐式同步查询READ、WRITE 级别看到。只有显式使用DMA_RESV_USAGE_BOOKKEEP级别查询时才会被返回。KFD eviction fence 实例amdgpu_amdkfd_gpuvm.cdma_resv_add_fence(vm-root.bo-tbo.base.resv,vm-process_info-eviction_fence-base,DMA_RESV_USAGE_BOOKKEEP);3. 层级包含规则3.1 核心规则查询某个级别的 fence 时该级别及所有更低级别的 fence 都会被返回。这是由数值大小决定的KERNEL(0)WRITE(1)READ(2)BOOKKEEP(3)\text{KERNEL}(0) \text{WRITE}(1) \text{READ}(2) \text{BOOKKEEP}(3)KERNEL(0)WRITE(1)READ(2)BOOKKEEP(3)查询 KERNEL → 返回 KERNEL 查询 WRITE → 返回 KERNEL WRITE 查询 READ → 返回 KERNEL WRITE READ 查询 BOOKKEEP → 返回 KERNEL WRITE READ BOOKKEEP全部3.2 实现原理fence 列表中每个条目存储的是(fence_ptr | usage)usage 编码在指针的低 2 位。迭代器的过滤逻辑dma-resv.cstaticvoiddma_resv_iter_walk_unlocked(structdma_resv_iter*cursor){do{dma_resv_list_entry(cursor-fences,cursor-index,cursor-obj,cursor-fence,cursor-fence_usage);// ...if(!dma_fence_is_signaled(cursor-fence)cursor-usagecursor-fence_usage)// ← 关键过滤条件break;}while(true);}过滤条件cursor-usage cursor-fence_usage的含义查询级别cursor-usage大于等于fence 的实际级别fence_usage时该 fence 被返回例查询 READ(2)fence 级别为 WRITE(1) → 2 ≥ 1 → ✅ 返回例查询 WRITE(1)fence 级别为 READ(2) → 1 ≥ 2 → ❌ 跳过3.3 可见性矩阵查询级别 ↓ / Fence 级别 →KERNELWRITEREADBOOKKEEPKERNEL✅❌❌❌WRITE✅✅❌❌READ✅✅✅❌BOOKKEEP✅✅✅✅4. Fence 升降级规则4.1 可以升级提升可见性// 原来是 BOOKKEEP再次添加为 READ → 升级为 READdma_resv_add_fence(resv,fence,DMA_RESV_USAGE_BOOKKEEP);// fence 级别 3dma_resv_add_fence(resv,fence,DMA_RESV_USAGE_READ);// fence 级别 → 2升级意味着数值变小 → 被更多查询可见 → 参与更多同步。4.2 不能降级降低可见性// 原来是 WRITE再次添加为 READ → 不变仍为 WRITEdma_resv_add_fence(resv,fence,DMA_RESV_USAGE_WRITE);// fence 级别 1dma_resv_add_fence(resv,fence,DMA_RESV_USAGE_READ);// fence 级别仍然 1实现dma_resv_add_fencefor(i0;icount;i){dma_resv_list_entry(fobj,i,obj,old,old_usage);if((old-contextfence-contextold_usageusagedma_fence_is_later_or_same(fence,old))||dma_fence_is_signaled(old)){dma_resv_list_set(fobj,i,fence,usage);// 替换return;}}替换条件中old_usage usage确保只有当旧 fence 的 usage 值 ≥ 新 usage 值时即旧 fence 可见性 ≤ 新 fence 可见性才执行替换。5. 主要 API5.1 添加 Fence// 预留 slot不可失败的后续 add 需要预先分配intdma_resv_reserve_fences(structdma_resv*obj,unsignedintnum_fences);// 添加 fence必须先 reserve且持有 resv lockvoiddma_resv_add_fence(structdma_resv*obj,structdma_fence*fence,enumdma_resv_usageusage);5.2 等待 Fence// 等待指定级别及以下的所有 fencelongdma_resv_wait_timeout(structdma_resv*obj,enumdma_resv_usageusage,bool intr,unsignedlongtimeout);// 返回值: 0 成功, 0 超时, 0 错误5.3 测试 Fence 状态// 检查指定级别及以下的所有 fence 是否都已 signaledbooldma_resv_test_signaled(structdma_resv*obj,enumdma_resv_usageusage);5.4 遍历 Fence// 需要持锁遍历structdma_resv_itercursor;structdma_fence*fence;dma_resv_for_each_fence(cursor,obj,DMA_RESV_USAGE_READ,fence){// fence 的 usage READ 的都会被遍历到}// 无锁遍历RCU 保护可能 restartdma_resv_for_each_fence_unlocked(cursor,fence){if(dma_resv_iter_is_restarted(cursor))// 处理 restart}5.5 获取所有 Fence// 获取指定级别及以下的所有 fence返回数组调用者负责释放intdma_resv_get_fences(structdma_resv*obj,enumdma_resv_usageusage,unsignedint*num_fences,structdma_fence***fences);5.6 辅助函数// 隐式同步用写操作需要等读写读操作只需等写staticinlineenumdma_resv_usagedma_resv_usage_rw(bool write){returnwrite?DMA_RESV_USAGE_READ:DMA_RESV_USAGE_WRITE;}这个看似反直觉的映射逻辑新写操作writetrue→ 返回READ(2) → 等待 KERNEL WRITE READ → 等所有读写完成新读操作writefalse→ 返回WRITE(1) → 等待 KERNEL WRITE → 只等写完成6. TTM 如何使用 Usage 层级6.1 TTM 搬迁时添加 KERNEL fence// ttm_bo.c — ttm_bo_handle_move_memdma_resv_add_fence(bo-base.resv,fence,DMA_RESV_USAGE_KERNEL);搬迁产生的 DMA 操作是内核内部行为必须被所有后续操作等待。6.2 TTM eviction 等待所有 fence// ttm_bo.c — ttm_bo_wait_ctxintttm_bo_wait_ctx(structttm_buffer_object*bo,structttm_operation_ctx*ctx){retdma_resv_wait_timeout(bo-base.resv,DMA_RESV_USAGE_BOOKKEEP,ctx-interruptible,15*HZ);}TTM 在驱逐 BO 前用BOOKKEEP级别等待 →等待所有 fence包括 BOOKKEEP。这确保了所有 GPU 命令已完成WRITE/READ fence所有内核搬迁已完成KERNEL fence所有内部记账 fence 已完成BOOKKEEP fence6.3 DISCARDABLE BO 的驱逐流程ttm_bo_evict(bo) // num_placement 0 (DISCARDABLE) → ttm_bo_wait_ctx(bo) // 等 BOOKKEEP 级全部 fence → dma_resv_wait_timeout(..., DMA_RESV_USAGE_BOOKKEEP, ...) → 遍历所有 fence等待每一个 → ttm_bo_pipeline_gutting(bo) // 丢弃 BO 内容7. 实际应用场景7.1 GPU 命令提交隐式同步// amdgpu_cs.c — 提交完成后在每个引用的 BO 上添加 fence// 所有 gang member 的 fence → READ其他人能并行读dma_resv_add_fence(gobj-resv,p-jobs[i]-base.s_fence-finished,DMA_RESV_USAGE_READ);// gang leader 的 fence → WRITE后续读写都要等它dma_resv_add_fence(gobj-resv,p-fence,DMA_RESV_USAGE_WRITE);后续对同一 BO 的操作会按需等待另一个写操作提交时 → 查询 READ → 等待所有读写 fence另一个读操作提交时 → 查询 WRITE → 只等写 fence7.2 DMA-BUF 导出/隐式同步// dma-buf.c — 用户空间 DMA_BUF_IOCTL_SYNCusage(arg.flagsDMA_BUF_SYNC_WRITE)?DMA_RESV_USAGE_WRITE:DMA_RESV_USAGE_READ;dma_resv_wait_timeout(dmabuf-resv,dma_resv_usage_rw(write),...);跨设备共享 buffer 时隐式同步依赖 WRITE/READ fence。BOOKKEEP fence 不参与 → 不会阻塞跨设备共享。7.3 SVM Eviction Fencedma_resv_reserve_fences(bo-tbo.base.resv,1);dma_resv_add_fence(bo-tbo.base.resv,evict_fence-base,DMA_RESV_USAGE_BOOKKEEP);选择 BOOKKEEP 的原因语义正确eviction fence 是内部管理用途不代表 GPU 读写操作不干扰隐式同步READ/WRITE 级别的查询看不到这个 fenceTTM 驱逐时可见ttm_bo_wait_ctx使用 BOOKKEEP 查询 → 能等到我们的 fence7.4 Xe 驱动中的 Page Table 更新// xe_vm.c — 页表更新 fence 使用 BOOKKEEPdma_resv_add_fence(xe_vm_resv(vm),fence-base,DMA_RESV_USAGE_BOOKKEEP);页表更新是内部操作不参与 buffer 隐式同步。8. 如何选择正确的 Usage 级别我的 fence 代表什么操作 │ ├─ 内核内存管理 DMA搬迁/清零/拷贝 │ → DMA_RESV_USAGE_KERNEL │ ├─ GPU 命令提交的写操作 │ → DMA_RESV_USAGE_WRITE │ ├─ GPU 命令提交的读操作 │ → DMA_RESV_USAGE_READ │ └─ 内部管理/不参与隐式同步 抢占、页表更新、eviction fence、TLB flush → DMA_RESV_USAGE_BOOKKEEP等待时应该用什么级别我需要等什么 │ ├─ 只等内核搬迁完成 │ → dma_resv_wait_timeout(resv, DMA_RESV_USAGE_KERNEL, ...) │ ├─ 等之前的写操作完成我要读 │ → dma_resv_wait_timeout(resv, DMA_RESV_USAGE_WRITE, ...) │ ├─ 等之前的所有读写完成我要写 │ → dma_resv_wait_timeout(resv, DMA_RESV_USAGE_READ, ...) │ └─ 等所有操作完成驱逐/释放 BO → dma_resv_wait_timeout(resv, DMA_RESV_USAGE_BOOKKEEP, ...)9. amdgpu_bo_fence 封装说明amdgpu_bo_fence是 amdgpu 对dma_resv_add_fence的封装voidamdgpu_bo_fence(structamdgpu_bo*bo,structdma_fence*fence,bool shared){structdma_resv*resvbo-tbo.base.resv;intr;rdma_resv_reserve_fences(resv,1);if(r){dma_fence_wait(fence,false);// OOM 时退化为同步等待return;}dma_resv_add_fence(resv,fence,shared?DMA_RESV_USAGE_READ:DMA_RESV_USAGE_WRITE);}sharedtrue→DMA_RESV_USAGE_READsharedfalse→DMA_RESV_USAGE_WRITE注意amdgpu_bo_fence只支持 READ 和 WRITE 两个级别。如果需要 KERNEL 或 BOOKKEEP必须直接调用dma_resv_add_fence。10. 总结级别数值语义典型场景被谁等待KERNEL0内核内存管理BO move/clear所有操作WRITE1隐式写同步GPU 写命令后续读写READ2隐式读同步GPU 读命令后续写操作BOOKKEEP3无隐式同步eviction fence, PT update仅 BOOKKEEP 查询核心设计思想数值越小可见范围越广同步约束越强数值越大可见范围越窄越不影响其他操作TTM eviction 和 BO 释放用 BOOKKEEP 查询 → 保证等待一切隐式同步dma-buf 共享只看 KERNEL/WRITE/READ → BOOKKEEP 完全透明选择 BOOKKEEP 给内部管理 fence 是最安全的做法不干扰外部同步只在需要时驱逐/释放被等待

相关文章:

第六章:异步访问的同步:6.3.1 dma_resv_usage 层级机制详解

1. 概述 dma_resv(DMA reservation object)是 Linux 内核中管理 GPU buffer 同步的核心机制。每个 dma_resv 对象维护一组 dma_fence,用于追踪对该 buffer 的各种操作。 enum dma_resv_usage 定义了 fence 的用途级别,控制"谁…...

C语言调用MiniCPM-V-2_6推理引擎:高性能嵌入式AI接口开发指南

C语言调用MiniCPM-V-2_6推理引擎:高性能嵌入式AI接口开发指南 如果你是一名C语言开发者,或者正在为嵌入式设备寻找一个既强大又高效的视觉语言模型,那么你来对地方了。今天我们要聊的,是如何用最纯粹的C语言,去直接调…...

YOLOv12官版镜像实战:手把手教你验证COCO数据集,小白也能轻松上手

YOLOv12官版镜像实战:手把手教你验证COCO数据集,小白也能轻松上手 1. 环境准备与快速部署 1.1 镜像环境概览 YOLOv12官版镜像已经预装了所有必要的运行环境,开箱即用。主要配置包括: Python 3.11环境PyTorch 2.5深度学习框架C…...

【THM-题目答案】:Privilege Escalation-Linux Privilege Escalation-Privilege Escalation:PATH

1. 你有写权限的文件夹是什么? What is the odd folder you have write access for?/home/murdoch【思路】:find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -u2. 利用$PATH漏洞读取flag6.txt文件的内容。 Explo…...

ACE-Step应用场景解析:如何为视频快速生成背景音乐?

ACE-Step应用场景解析:如何为视频快速生成背景音乐? 1. 引言:视频创作者的背景音乐痛点 在视频创作过程中,背景音乐的选择往往成为最耗时的环节之一。专业音乐授权费用高昂,免费音乐库又难以找到完全匹配的内容&…...

华为OD机试真题 新系统2026-04-01 C++实现【空间占用计算】

目录 题目 思路 Code 题目 员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。 规则说明…...

IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决

IndexTTS2 V23问题排查:端口冲突、模型下载慢?常见问题一键解决 1. 快速入门:IndexTTS2 V23简介 IndexTTS2 V23是由开发者"科哥"推出的最新开源文本转语音(TTS)系统,相比前代版本,它在情感控制和语音自然度…...

Qwen3-14B-Int4-AWQ实战:利用VLOOKUP函数思想实现跨数据源信息智能关联

Qwen3-14B-Int4-AWQ实战:利用VLOOKUP函数思想实现跨数据源信息智能关联 1. 引言:当Excel遇到大数据 "小王,帮我把这两个表格的数据匹配一下。"这样的需求在数据分析工作中再常见不过了。在Excel里,我们通常会使用VLOO…...

数据库安全与运维管控(二):从“共享账号”到本地账密泄露分析

在日常的研发联调和生产排障中,开发人员不可避免地需要连接数据库来核对数据或验证逻辑。目前绝大多数企业的做法依然是:DBA 在底层数据库中执行 GRANT 命令,创建一个只读账号(如 dev_readonly),然后将 IP …...

基于影墨·今颜的Java面试题智能生成与解析系统

基于影墨今颜的Java面试题智能生成与解析系统 面试,对于技术人来说,既是展示能力的舞台,也是一场需要精心准备的“考试”。无论是面试官绞尽脑汁设计能考察真实水平的题目,还是求职者海量刷题却不得要领,传统的面试准…...

Janus-Pro-7B集成Dify实战:构建企业级AI应用工作流

Janus-Pro-7B集成Dify实战:构建企业级AI应用工作流 最近和几个做企业服务的朋友聊天,他们都在头疼一件事:公司里各种业务场景都想用上AI,比如自动审核用户上传的图片、根据商品图生成营销文案,但真要动手做&#xff0…...

大模型学习第8天--python基础(数据结构:列表字典元组)

2026.04.08周二第四部分数据结构:列表list 字典dict 元组tuple 已看完 还剩集合set明天看#列表——增 # stu [] #空列表 # stu ["小明", 18, True, "boys"] # teacher [张老师, 赵老师, 徐老师] # school [teacher, stu, 工作人员, 100] …...

nanobot惊艳效果展示:用‘生成一份Python爬虫获取CSDN文章标题’指令执行结果

nanobot惊艳效果展示:用‘生成一份Python爬虫获取CSDN文章标题’指令执行结果 今天,我想和大家分享一个让我眼前一亮的AI助手体验。最近,我在一个预置了nanobot的镜像环境中,尝试了一个非常具体的指令:“生成一份Pyth…...

Kandinsky-5.0-I2V-Lite-5s本地化部署精讲:JDK环境配置与Docker封装

Kandinsky-5.0-I2V-Lite-5s本地化部署精讲:JDK环境配置与Docker封装 1. 开篇:为什么选择本地化部署 如果你正在寻找一个高效的图像转视频解决方案,Kandinsky-5.0-I2V-Lite-5s绝对值得考虑。这个轻量级模型能够在5秒内完成图像到视频的转换&…...

C++ 入门学习经验 02—— 新手最容易遇到的几个问题以及如何解决

大家好啊!这里是阳阳的博客,一个正在努力学习技术的大学生。上一篇和大家聊了刚接触 C 时的环境搭建、学习路径和心态问题,收到了很多同学的共鸣。所以今天这第二篇,我想继续沿着新手学习时的路线,来和大家聊聊刚学 C …...

.NET源码生成器基于partial范式开发和nuget打包绞

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

stock-sdk-mcp 的实践整理郊

一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...

你的SSH密钥可能已经过期了档

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

samba服务配置

仅主机 模式下 Samba 完整最简流程(从头到尾)一、虚拟机先改网络(必做)VMware → 虚拟机设置 → 网络适配器选:仅主机模式 (Host-only)二、Linux 自动获取 IP(root)一定得干不然不是同网段后面访…...

知识表示是什么:为什么人工智能离不开知识表示

人工智能不仅要处理数据,还要理解对象、关系、规则和约束。要做到这一点,系统就不能只保存原始记录,而必须把有关内容组织成机器能够处理的形式,这就是知识表示。知识表示并不是人工智能中的附属技术,而是智能系统建立…...

LSTM与GRU的深度解析:门控机制如何解决长时依赖问题?

点击 “AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力,沉浸式云原生集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。 1. 引言:当序列遇见记忆 自然语言、语音信…...

集合、元素、隶属与包含:知识分类的数学基础

在知识表示与知识图谱中,分类并不是随意进行的。无论是区分类与实例,还是建立上位类与下位类,背后都需要一种更基础的结构来支撑,这就是集合观念。集合、元素、隶属关系、包含关系与相等关系,构成了知识分类最基本的数…...

Android Studio项目集成AI:Phi-4-mini-reasoning 3.8B移动端调用方案

Android Studio项目集成AI:Phi-4-mini-reasoning 3.8B移动端调用方案 1. 移动端AI集成的新机遇 最近在移动开发圈里,AI集成成了热门话题。作为一名长期关注移动端AI落地的开发者,我发现Phi-4-mini-reasoning 3.8B这个轻量级模型特别适合移动…...

OpenClaw多模型切换:Qwen3.5-9B与其他开源模型的协作方案

OpenClaw多模型切换:Qwen3.5-9B与其他开源模型的协作方案 1. 为什么需要多模型协作? 去年我在尝试用AI自动化处理日常工作时,发现一个有趣的现象:当我用同一个大模型处理不同类型的任务时,效果差异非常大。比如用擅长…...

FireRed-OCR Studio实战教程:OCR结果与数据库自动同步脚本

FireRed-OCR Studio实战教程:OCR结果与数据库自动同步脚本 1. 学习目标与场景引入 想象一下这个场景:你是一家公司的行政人员,每天需要处理几十份报销单、合同和发票。你用FireRed-OCR Studio把这些纸质文件扫描成清晰的Markdown文档&#…...

OpenClaw自动化调研:Qwen2.5-VL-7B全网信息收集与分析

OpenClaw自动化调研:Qwen2.5-VL-7B全网信息收集与分析 1. 为什么需要自动化调研工具 作为一个经常需要收集行业动态的技术博主,我过去每天要花2-3小时手动浏览各类网站。直到发现OpenClaw这个能操控浏览器的AI助手,配合Qwen2.5-VL-7B的多模…...

从“人海战术”到“算法军团”:TVA引发的劳动力革命(4)

——岗位重构:TVA时代,制造业劳动力的岗位迭代与技能升级TVA“算法军团”的普及,不仅替代了传统的体力型、重复型劳动力,更引发了制造业岗位体系的颠覆性重构——大量传统岗位被淘汰,一批全新岗位应运而生,…...

2026年智能码牌服务商,究竟合不合法合规?

在数字支付行业蓬勃发展的今天,智能码牌服务商逐渐成为市场的焦点。随着2026年的到来,人们对于这些服务商的合法合规性愈发关注。以财联支付为例,我们来深入探讨智能码牌服务商的合法合规性问题。一、合法合规的基础:技术与资质双…...

开箱即用的AI视觉工具:万物识别镜像部署与简单调用演示

开箱即用的AI视觉工具:万物识别镜像部署与简单调用演示 1. 引言:让AI视觉识别触手可及 想象一下,你刚拿到一个功能强大的AI视觉识别工具,它能识别5万多种日常物品,而且直接用中文输出结果。但当你准备使用时&#xf…...

Llama-3.2V-11B-cotGPU优化教程:量化+FlashAttention提升吞吐300%实操

Llama-3.2V-11B-cot GPU优化教程:量化FlashAttention提升吞吐300%实操 1. 项目概述与优化目标 Llama-3.2V-11B-cot 是一个支持系统性推理的视觉语言模型,基于LLaVA-CoT论文实现。这个模型结合了图像理解和逐步推理能力,采用独特的四步推理格…...