Guides / 视频转图文攻略
Clef-Flash 实操教程:在 Ubuntu 上从零安装并本地运行 Cloudflare 9B 多模态决策模型
把 Aleksandar Haber 的 Clef-Flash 视频整理成分步安装教程:apt 更新、testClef2 工作目录加 env1 虚拟环境、六个最小依赖包、可选的 causal-conv1d 与 flash-linear-attention 加速库,然后是两次实测——Acme 发票被判 overdue 0.9728,AI 生成的碎屏手机照片被判 cracked 0.9626、装箱填充物问出 0.957 的 yes。
速览结论
这是 Clef-Flash——Cloudflare 90 亿参数多模态决策模型——的从零安装教程,按机器人学教授 Aleksandar Haber 的视频逐帧整理,本页所有数字均从录像画面读出。先定位:Clef 为结构化决策而建,不是自由聊天。一次测试 = 定义文本 state、可选传一张原始图片、提多选问题、读回每个选项的校准 JSON 概率。Ubuntu 全套安装路径:sudo apt update && sudo apt upgrade;mkdir testClef2 && cd testClef2;python3 -m venv env1 && source env1/bin/activate;pip install torch transformers accelerate pillow huggingface_hub torchvision——作者明言这套最小依赖试了很久,总量约 2–3GB。可选加速:pip install causal-conv1d flash-linear-attention,两者非必需,需要 NVIDIA CUDA toolkit 和 GCC(首次安装本地编译),画面上的运行以 Successfully installed causal-conv1d-1.7.0 einops-0.8.2 fla-core-0.5.2 flash-linear-attention-0.5.2 ninja-1.13.2 收尾。模型本体在 Python 里到位:path = snapshot_download("Cloudflare/clef-flash"),sys.path.insert(0, path),再 from joint_schema_model import load_release_model, systemone——joint_schema_model 是仓库自带的自定义代码,所以 sys.path 这步不能省。视频里可见的模型卡 Usage 区写明:以 torch 2.11 与 transformers 5.10.2 在单张 H200 上测试,图像与视频输入还需 pillow。demo 一(纯文本):state 是一张发票(vendor Acme、total 1250.0、currency USD、status overdue),配 choice 问题「What is the invoice status?」(paid / overdue / draft 三档)外加 noul(是/否)问题「Is the total above 1000 USD?」,返回 status {'draft': 0.00969, 'overdue': 0.97277, 'paid': 0.01754}、large {'true': 0.97344}——两题全对,而且权重载入(760/760,缓存后约两秒)一完成就出结果。demo 二(多模态):一张碎屏手机装在纸箱、箱内可见皱纸填充的照片(作者用 AI 生图引擎做的,任何照片都行)经 images: [Image.open("test_image.jpeg")] 进 record,state 为「Analyze the condition of the smartphone and its packaging.」,问题两个:device_damage 三选一(none / scratched / cracked),has_packing_materials 是/否。输出:{'choice': 'cracked', 'confidence': 0.9626, 'probabilities': {'none': 0.015, 'scratched': 0.0225, 'cracked': 0.9626}},has_packing_materials noul 0.957——纸确实在箱子里,模型看见了。硬件:作者的 RTX 3090 上 nvtop 显示 python3 test2.py 进程占 18,666 MiB,整卡用到 24GiB 中的 20.2GiB、62°C;代码注释自己也写着 9B 模型原生加载、RTX 3090 的 24GB 显存放得下。一个现场踩过的 API 坑:systemone 的 record 必须带 "model" 和 "state" 两个键——漏掉 "model" 就报 ValueError: model and state are required。诚实边界:本页所有概率都是创作者在自己 demo 数据上的一次运行;点赞数(358)与库版本都是录制时点的快照;这里展示的多模态图像输入是 Clef 真有而本站 Jev 相关内容没有对应物的能力——差异是真的,警告也是真的:一张生成的照片只能证明链路通,证明不了基准级准确率。
分步图文攻略
- 1
Clef-Flash 是什么:一个 9B 决策模型,不是聊天模型
开场幻灯先把边界划清:Cloudflare Clef——怎么念随你——是一个专为结构化决策设计的多模态 AI,不做自由对话。这里没有可评测的对话循环:视频承诺的是把高效率的 90 亿参数 Clef-Flash 版本完全本地跑起来,在 Ubuntu 上、从空机器到校准过的概率。这个定位决定预期:聊天模型回你成段的文字、还要自己去解析;Clef-Flash 吃的是一份类型化 record,吐回的是能直接写分支判断的数字。本页按视频顺序走完全程——环境、依赖、两个 demo 脚本——引用的每个概率都读自录像画面,不是旁白转述。

视频自己的论点页:结构化决策、不做聊天——目标是 9B 的 Clef-Flash、全程本地。跳转至 0:05 - 2
测试怎么运作:state、可选图片、多选问题、JSON 概率
「Model test and basic idea」这张幻灯把整个接口压成三步。第一,定义一个文本 state,可选传入一张原始图片——卡上的例子是已签收包裹或收据的照片。第二,提多选问题,比如识别商品类型或评估物理损伤。第三,模型处理视觉上下文,立刻输出每个选项的校准 JSON 概率。注意输出的形状:不是一个赢家,而是你列出的每个选项各有一个概率——这恰好是下游规则或状态机设定自己阈值所需要的东西。视频剩下的部分就是跑通这个循环的两个脚本——一个纯文本、一个带图——外加让它们跑起来的环境。

state 加可选照片进,每个选项各一个概率出——整个产品面就这一页。跳转至 0:30 - 3
多模态输入长什么样:皱纸箱里的碎屏手机
在任何安装步骤之前,视频先给你看多模态输入的实物:编辑器上面开着图片查看器,显示 test_image.jpeg——一台屏幕明显碎裂的智能手机,躺在垫着棕色皱纸的纸箱里。作者对照片来源毫不遮掩:他让 AI 生图引擎生成了一张「手机碎屏、装在箱子里」的照片,并说换任何照片都一样能跑。这一帧里有两个细节后面都会兑现:皱纸填充清晰可见(第二个问题就会问它),屏幕上的裂纹正是入库质检要抓的那种物理损伤。这条图像输入路径——一张图和文本 state 放进同一个 record——也是与本站常覆盖的模型最清楚的能力差异:Jev 的本地技术栈没有对应的图像输入。

demo 输入实物:AI 生成的碎屏手机、真实的皱纸填充——两处细节都变成了问题。跳转至 1:10 - 4
GPU 代价:RTX 3090 上约 18.7GB
demo 中途视频切到 nvtop,这张卡直接回答了大多数人最关心的问题。Device 0 是 PCIe Gen3 x16 上的 NVIDIA GeForce RTX 3090;test2.py 运行期间 python3 进程占 18,666MiB 显存(占卡 76%),整卡读数 24.000GiB 中的 20.198GiB,GPU 1905MHz、62°C、风扇 30%。demo 代码里的注释一行说尽同一件事:9B 模型原生加载,RTX 3090 的 24GB 显存放得下。所以全精度模型的现实门槛就是一张 24GB NVIDIA 卡;一次运行结束后,显存回落到空闲水平(同一个 nvtop 窗口里约 2GiB)。模型缓存后 760/760 的权重载入条约两秒走完——下载是一次性成本。

运行中的 nvtop:进程 18.7GB、整卡 20.2/24GiB、62°C——24GB 档就是诚实的门槛。跳转至 2:29 - 5
机器人学教授为什么在乎:置信度喂进 C++ 控制节点
这个频道本业是机器人学,「Application in robotics」一页把类型化概率的价值说得最透。State:机械臂把实时相机帧和任务描述喂进模型。Questions:预定义检查评估物体易碎性与工作区安全。Outcomes:模型返回数值形式的置信度,由 C++ 控制节点或状态机消费,安全地执行抓取或触发紧急停止。最后这句就是决策模型进自动化的全部论证——「屏幕看起来碎了」这样的字符串闸不住电机,但「cracked: 0.96」可以躺在阈值 if 语句后面,低于阈值就转人工或急停。同一模式可以平移到任何由软件而非人来做动作的流水线。

相机帧进、检查提问、数字出——C++ 节点把数字变成「抓取或停止」。跳转至 3:22 - 6
模型页:Hugging Face 上的 Cloudflare/clef-flash
视频里用到的一切都来自一个仓库:huggingface.co/Cloudflare/clef-flash。页头把它标为 Image-Text-to-Text 管线、Safetensors 权重,标签里有 systemone、multimodal、structured-output、classification,骨干挂 Qwen3.5 标签,而对本地安装最重要的那一行是——Apache-2.0 许可证。录制时页面显示 358 个赞;这个数字和一切播放量一样,是录制日期的快照,不是实时指标。模型卡同时也是测试代码的所在地:本页两个 demo 都照卡上的 Usage 片段走,所以权重、自定义代码、参考脚本,这一个仓库全包。

一个仓库全包:Apache-2.0 权重、systemone 标签、demo 照抄的测试代码。跳转至 3:48 - 7
官方口径:torch 2.11、transformers 5.10.2、图像另需 pillow
模型卡的 Usage 区用三行话写明测试环境:以 torch 2.11 与 transformers 5.10.2 在单张 H200 上测试,图像与视频输入还需 pillow。下面就是整支视频赖以展开的官方片段:import sys 与 torch,用 snapshot_download("Cloudflare/clef-flash") 拉仓库,然后 sys.path.insert(0, path)、from joint_schema_model import collate_records, encode_record, load_release_model。值得停下来的是这条 import——joint_schema_model 是仓库自带的自定义代码,所以路径技巧不是可选项:不插 sys.path,这个模块根本解析不到。这个生态版本变得快;卡上的版本是录制时视频里展示的快照,你安装时 pip 会解析当下最新的。

卡上自己的口径:torch 2.11 加 transformers 5.10.2、单张 H200,图像/视频加 pillow——外加 sys.path 技巧。跳转至 4:00 - 8
Ubuntu 准备:apt、testClef2 工作目录、env1 虚拟环境
终端工作从 Ubuntu 的标准动作开始:sudo apt update && sudo apt upgrade(输密码,耐心等)。然后建工作区:cd ~、mkdir testClef2、cd testClef2——一个新文件夹,实验全部圈在里面。进目录后 python3 -m venv env1 建虚拟环境(demo 跑的是 Python 3.12),source env1/bin/activate 让提示符前面挂上 (env1)。环境激活后,真正要紧的只有一行:pip install torch transformers accelerate pillow huggingface_hub torchvision。作者特别说明这是最小依赖集——而且明说这个最小配置花了他不少时间才摸清——总量约 2–3GB,让 pip 慢慢跑。画面上可见的 install.txt 写着同样六个包,外加下一步会讲到的可选行。

一帧装下整个环境:apt → testClef2 → env1 激活 → 六包 pip 最小集(约 2–3GB)。跳转至 5:22 - 9
可选加速双库:causal-conv1d 与 flash-linear-attention
还有两个库能加速模型执行与推理——视频对它们的地位说得很谨慎:跑模型并不需要。建议原话是:先用前面六个基础库把模型跑起来,再回头看这两个装不装得上。原因是工具链:pip install causal-conv1d flash-linear-attention 需要系统里有 NVIDIA CUDA toolkit 和 GCC 编译器,因为首次安装时 wheel 要本地编译、可能耗时(作者那次已经缓存,所以装得快)。画面上那次运行完成时读作:Successfully installed causal-conv1d-1.7.0 einops-0.8.2 fla-core-0.5.2 flash-linear-attention-0.5.2 ninja-1.13.2——flash-linear-attention 会带上 fla-core,并要求 transformers 4.45 以上。这些版本是录制时的快照,不是承诺。

可选、要编译、定位清楚:causal-conv1d 1.7.0 加 flash-linear-attention 0.5.2——裸跑成功之后再装。跳转至 6:22 - 10
第一跑:发票 demo——overdue 0.9728
test1.py 是纯文字示例,它的 record 展示了一次 Clef 决策的解剖结构。state 是个小字典:一张发票,vendor Acme、total 1250.0、currency USD、status overdue。问题两个:一个 type 为 choice 的「status」——「What is the invoice status?」,criteria 是 paid(发票已付)、overdue(发票已过期)、draft(未发送);外加一个 type 为 noul 的是/否原语「large」——「Is the total above 1000 USD?」。snapshot_download 解析完仓库后,运行拉取 17 个文件、打印 Reconstruction complete、约两秒载入 760/760 权重(已缓存),然后作答:status {'draft': 0.00969, 'overdue': 0.97277, 'paid': 0.01754}、large {'true': 0.97344, 'false': 0.02656}。两个判定都对——发票确实过期、1250 确实超过 1000——顺带一提,整个脚本在磁盘上只有 1,179 字节。

文本进、数字出:overdue 0.9728(draft 0.0097、paid 0.0175),「超过 1000 美元?」true 0.9734。跳转至 8:42 - 11
图像 demo 脚本:一个 record、一张照片、两个问题
test2.py 让多模态轴落地,这一帧是完整配方。导入多了一行——from PIL import Image——然后是同样的脚手架:snapshot_download("Cloudflare/clef-flash")、sys.path.insert(0, path)、from joint_schema_model import load_release_model, systemone。加载调用上方注释写明预期:原生加载 9B 模型,RTX 3090 的 24GB 显存放得下。record 本体:"model": "clef-flash"——注释标明这是 systemone API 的必填项——文本 state(「Analyze the condition of the smartphone and its packaging.」)、图片列表 [Image.open("test_image.jpeg")]、两个问题:device_damage 三选一(「Inspect the smartphone screen for damage.」,none = 完好、scratched = 轻微划痕、cracked = 屏幕已碎)和 has_packing_materials 是/否(「Is there paper or bubble wrap in the box?」)。视频甚至现场演示了漏掉这个键的下场:ValueError: model and state are required。

多模态 record 全貌:model 键必填、照片进 images[]、一个 choice 问题、一个 noul。跳转至 9:42 - 12
多模态判定:cracked 0.9626、填充纸 yes 0.957
最后一次运行把两个 demo 收进同一个终端。上方还挂着 test1 的判定;下方 python3 test2.py 拉取同样 17 个缓存文件、重载 760/760 权重,打印:{'device_damage': {'type': 'choice', 'choice': 'cracked', 'confidence': 0.9626, 'probabilities': {'none': 0.015, 'scratched': 0.0225, 'cracked': 0.9626}},'has_packing_materials': {'type': 'noul', 'noul': 0.957}}。对着第三步那张照片读:屏幕确实碎了,cracked 以 96% 胜出,而且三个档位的完整分布都返回了,不止一个赢家;皱纸确实在箱子里,noul 检查以 0.957 背书。推理本体在权重载入后才发生——按旁白说法,权重一就位,概率计算非常快。诚实边界照旧:一张生成的照片、一次运行、作者的硬件——它证明的是链路端到端能通,仅此而已。

两个 demo 同屏:cracked 0.9626 带完整分布,填充纸 yes 0.957。跳转至 11:02
常见问题(FAQ)
Clef-Flash 怎么安装?
在 Ubuntu 上,五条命令从零到模型:sudo apt update && sudo apt upgrade;mkdir testClef2 && cd testClef2;python3 -m venv env1 && source env1/bin/activate;pip install torch transformers accelerate pillow huggingface_hub torchvision(最小集,约 2–3GB);然后在 Python 里 snapshot_download("Cloudflare/clef-flash") 并 sys.path.insert(0, path),让仓库自带的 joint_schema_model 模块能被 import。可选再 pip install causal-conv1d flash-linear-attention 提速——但先用基础集把模型跑起来。
本地运行 Clef 需要什么条件?
一台带 NVIDIA GPU 的 Linux 机器:demo 机是跑 Ubuntu、Python 3.12 的 RTX 3090,代码注释按 9B 原生加载瞄准 24GB 显存。按视频里展示的模型卡,技术栈以 torch 2.11 与 transformers 5.10.2 在单张 H200 上测试,图像或视频输入另需 pillow。预算上给六包 pip 最小集约 2–3GB,再加下载仓库的磁盘(首次运行拉取 17 个文件)。可选的 causal-conv1d 与 flash-linear-attention 需要 CUDA toolkit 和 GCC,因为首次安装要本地编译。
Clef-Flash 吃多少显存?
视频 nvtop 画面里进程约占 18.7GB:RTX 3090 上 test2.py 运行期间 python3 进程占 18,666MiB,整卡用到 24.000GiB 中的 20.198GiB、62°C;运行结束后回落到约 2GiB。demo 代码一行写明设计边界——9B 模型原生加载、RTX 3090 的 24GB 显存放得下——所以全精度的诚实门槛就是一张 24GB NVIDIA 卡。所有数字来自录制时作者的机器;上你自己的卡实测。
Clef-Flash 真能吃图片输入吗?
能——这正是它 multimodal 的含义,视频里端到端演示过:record 在文本 state 旁边带 images: [Image.open("test_image.jpeg")],装好 pillow 即可支持图像(和视频)输入。demo 里,碎屏手机配皱纸填充的照片给出 device_damage cracked 0.9626 与完整的三档分布,has_packing_materials(noul 是/否)0.957——与照片里可见的皱纸吻合。这条图像输入能力是 Clef 真有的功能,本站覆盖的本地 Jev 技术栈没有对应物。但一张照片、一次 demo,证明的是链路能通,不是基准准确率。
causal-conv1d 和 flash-linear-attention 值得装吗?
它们是可选加速库,视频的建议是「挣」着装:先在六个基础包上把模型跑通,再 pip install causal-conv1d flash-linear-attention。成本是真实的工具链——系统里必须有 NVIDIA CUDA toolkit 和 GCC,首次安装 wheel 要本地编译、可能耗时(录制时版本:causal-conv1d 1.7.0、flash-linear-attention 0.5.2,后者带上 fla-core 并要求 transformers 4.45+)。如果基础栈已经满足你的延迟预算,第一天多花编译时间什么也买不到。
Clef 和 Jev 是同一个东西吗?
不是。Clef 是 Cloudflare 的决策模型家族——Clef-Flash 是其中 9B、Apache-2.0、多模态的成员;Jev 则是本站记录的类型化决策产品。共享一个品类不会转移基准、准确率或安装路径。两者都对类型化问题返回每选项概率,但 Clef-Flash 在 24GB 档 GPU 上多出原始图像输入,本地量化故事也不同:本站的 Clef vs Jev 页测过 Ollama 里的 Q4_K_M 量化版,发现联合 schema 头在量化文件里缺席——这正是本页走全精度、transformers 原生安装这条不同路线的原因。上生产前,两个都在你自己的工作负载上评测。
相关推荐
Clef-Flash vs Jev:Ollama 本地 Q4_K_M 实测
同一个模型的对比轴:8GB 笔记本 Ollama 里的 Q4_K_M 量化版,外加联合 schema 头缺席的发现——本页则是从零开始的全精度安装教程。
阅读Jev vs Clef:官方基准对比
Cloudflare 托管评测里 Clef-Flash 对 Jev 的数字,双方口径都标清——本页这份安装指南刻意不碰的选型视角。
阅读Nox 4B 实测:Decision 2.0 家族
vLLM 路由家族 4B 推荐款的四场景实测;它警告卡里 causal-conv1d 与 flash-linear-attention 回退的说法,正是本页走过的可选库取舍。
阅读CLM-8B:决策模型是怎么练出来的
架构深潜兄弟篇:hard negatives、冻结骨干,以及一个和 Clef-Flash 一样「回概率不回文本」的模型背后的训练配方。
阅读Run Jev Locally:官方产品本地装机
同一件事的官方版本——不同品牌、不同运行时、没有图像输入;投入硬件之前把两条安装路线都看一遍。
阅读自托管 Jev:总览
本地 Clef-Flash 装机在自托管版图里的位置,以及决策模型跑在自己 GPU 上意味着什么。
阅读更多视频攻略
- Jev 极速分类实战:从 API 调用到 Choice/Score/Noul 三大原子类型
- 7 分钟透析 Jev 架构:为什么 70ms 决策模型颠覆了 LLM 自动化工作流?
- Jev 赋能极速浏览器 Agent:178ms DOM 决策循环与双模型协作实战
- OpenJevs 开源 Jev 模型全景:Semif、Nimble、Decider、DiffusionGemma 与 Laya 实测
- Jev 会取代 LLM 吗?Krish Naik 白板图解 Jev vs LLM 与混合架构
- Jev Trader 教程:在 Monad 上搭建亚秒级 AI 交易机器人
- Jev Model Router 实战:用 Jev 搭建带隐私门控的本地模型路由器
- Jev 入门教程:State、三类问题与 TypeScript SDK 实操
- 本地跑 Jev:Kev、SemIf 与 Von,自己的 GPU 就够了
- Jev RAG Reranker 实战:用可执行 criteria 打造策略化检索重排
- Jev 什么时候该用:工程视角核实宣传口径、守门与失败模式
- LangChain + Jev 集成实战:路由、护栏与评测
- Jev MCP Server 接入指南:把 Jev 决策层接进 Claude Code 与 Cursor
- Jev vs Luna 独立基准实测:「更快更准更便宜」是真是假?
- Jev Agent Harness 实战:决策闸门该装在 LLM 循环的哪个位置
- Jev Playground 实测攻略:热狗课程、criteria 校准与四平台 token 账单
- Jev 文本分类 API 实战:用 classifier.dev 打通零样本 CLI 与 REST 调用
- Jev API 实战示例:第一条 curl、载荷结构与三种问题类型
- 用 Expanso Edge 和 Jev 搭建日志分流流程
- Treg + Jev 线索丰富:ICP 分类与注册用户评分
- 在 Heym 中使用 Jev 决策节点:语言判断与模型路由
- Laya 上手教程:开源自托管决策引擎的安装、路由与概率校准(Laya vs Jev 实操)
- 训练自己的 Jev:花 $5–$17 微调一个 Jev 式决策模型(能训什么、不能训什么)
- Jev 实用技巧:拿到更好决策结果的 8 条最佳实践(state、questions、criteria 与阈值)
- Jev 上下文压缩实战:不用生成式摘要,直接剪枝 Agent 记忆
- Jev 当 LLM 评审:置信度级联,只要强模型 0.36% 的成本
- TypeSafe Computer Use 实操:用 Jev 做本地桌面自动化
- Jev 简历筛选实战:Express + Jev JavaScript SDK 搭一个 AI 简历评估器
- Jev + Claude Code 实战:语音控制浏览器,类型化决策全程接管
- Jev 接入 Codex 实操:typesafe-ai/skills 安装与 Gmail 30 封邮件分诊
- Jev vs Ollama:本地跑 AI 决策,数据不出门真的可行吗?
- 自己动手造一个 Jev:免费开源零样本分类器(还能打 Doom)
- CUA-S1-Forms:706K 参数的 Jev 型表单填写模型,CPU 就能跑
- 用 Jev 做 NOC/SOC 告警分诊:规则先行、一个类型化问题、一道策略闸门
- Ollama 决策模型实测:tev1 + nimble 跑在 8GB 显卡上
- Jev 生产环境护栏:五步接入实战手册
- Pi Agent 防跑偏插件实战:让 Jev 出概率,让代码做决定
- Tev1 用例实测:50 个任务看尽本地决策模型的能力边界
- Jev 实测:官方宣称与独立复测之间的距离
- Jev 工单分类实战:after-insert hook 与计算字段两种接法
- OpenJev RLCD 实操:开源校准决策模型本地部署全指南
- Clef-Flash vs Jev 实测:把 Cloudflare 决策模型装进 Ollama(Q4_K_M)
- CLM-8B 架构深潜:44 毫秒打分 1,024 个候选的对比决策模型(比 Jev 快 13 倍)
- Nox 4B 实测教程:本地跑通 Decision 2.0 决策模型,四道真实考题与一次诚实的失败
- Julia-1 实操教程:纯 Python 装上开源 Jev 替代品,10 条客服消息实测 9 比 2
- OpenJev 0.8B CPU 实战:用工单收件箱校准 NLI 路由阈值
- Jev n8n 集成实战:JevGate 社区节点分步攻略(附纯 HTTP 备选路线)