1. 背景介绍
近期昆仑万维开源的Skywork R1V模型,是基于InternViT-6B-448px-V2_5以及deepseek-ai/DeepSeek-R1-Distill-Qwen-32B 通过强化学习得到。当然语言模型也可以切换成QwQ-32B。因此该模型最终的参数量大小为38B。
该模型具备多模态推理能力,能够同时处理视觉和文本等多种模态的数据,适用于智能视频分析、复杂场景理解等场景。
Skywork R1V 的开源特性如下:
- 视觉思维链(Visual Chain-of-Thought):能够对视觉输入进行多步逻辑推理,将复杂的基于图像的问题拆解为可管理的步骤。
- 数学与科学分析(Mathematical & Scientific Analysis):能够解决视觉数学问题,并以高精度解析科学或医学图像。
- 跨模态理解(Cross-Modal Understanding):无缝融合文本与图像,实现更丰富、具有上下文感知的理解。
2. 相关评测
Skywork R1V 表现还可以,但不得不说kimi1.5也是很强。我们之前在《》中也讨论了kimi1.5。
3. 模型实验
话不多说,直接下载下来玩一下。下载后的模型文件结构及大小如下:
total 72G
-rw-r--r-- 1 rese rese 179 Mar 19 19:28 added_tokens.json
-rw-r--r-- 1 rese rese 3.6K Mar 19 19:28 config.json
-rw-r--r-- 1 rese rese 76 Mar 19 19:28 configuration.json
-rw-r--r-- 1 rese rese 3.7K Mar 19 19:28 configuration_skywork_chat.py
-rw-r--r-- 1 rese rese 6.3K Mar 19 19:28 configuration_skywork_lm2.py
-rw-r--r-- 1 rese rese 4.5K Mar 19 19:28 configuration_skywork_vit.py
-rw-r--r-- 1 rese rese 5.1K Mar 19 19:28 conversation.py
-rw-r--r-- 1 rese rese 84K Mar 19 19:28 eval.jpeg
-rw-r--r-- 1 rese rese 181 Mar 19 19:28 generation_config.json
-rw-r--r-- 1 rese rese 565K Mar 19 19:28 logo.jpeg
-rw-r--r-- 1 rese rese 4.7G Mar 19 19:43 model-00001-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:48 model-00002-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.5G Mar 19 19:44 model-00003-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:49 model-00004-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:43 model-00005-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:43 model-00006-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:47 model-00007-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:34 model-00008-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:55 model-00009-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 20:04 model-00010-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 19:59 model-00011-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 20:04 model-00012-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 20:05 model-00013-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 20:07 model-00014-of-00016.safetensors
-rw-r--r-- 1 rese rese 4.6G Mar 19 20:00 model-00015-of-00016.safetensors
-rw-r--r-- 1 rese rese 3.4G Mar 19 19:58 model-00016-of-00016.safetensors
-rw-r--r-- 1 rese rese 16K Mar 19 19:55 modeling_skywork_chat.py
-rw-r--r-- 1 rese rese 59K Mar 19 19:55 modeling_skywork_lm2.py
-rw-r--r-- 1 rese rese 18K Mar 19 19:55 modeling_skywork_vit.py
-rw-r--r-- 1 rese rese 124K Mar 19 19:55 model.safetensors.index.json
-rw-r--r-- 1 rese rese 287 Mar 19 19:55 preprocessor_config.json
-rw-r--r-- 1 rese rese 8.6K Mar 19 19:55 README.md
-rw-r--r-- 1 rese rese 957 Mar 19 19:55 special_tokens_map.json
-rw-r--r-- 1 rese rese 3.0K Mar 19 19:55 tokenizer_config.json
-rw-r--r-- 1 rese rese 6.8M Mar 19 19:55 tokenizer.json
-rw-r--r-- 1 rese rese 3.3M Mar 19 19:55 vocab.json
-rw-r--r-- 1 rese rese 25K Mar 19 19:55 zero_to_fp32.py
部署也比较方便,从git中拉取相应的推理代码:
git clone https://github.com/SkyworkAI/Skywork-R1V.git
cd skywork-r1v/inference
conda create -n r1-v python=3.10
conda activate r1-v
bash setup.sh
部署推理,使用两张A800-80G卡:
CUDA_VISIBLE_DEVICES="0,1" python inference_with_transformers.py \--model_path /data/Skywork/Skywork-R1V-38B \--image_paths /data/Skywork-R1V/imgs/733f3616-be13-4976-ba59-99c8971b0347.png \--question "请描述下图片中的内容"
执行结果:
(r1-v) $ sh infer_r1v.sh
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:19<00:00, 1.22s/it]
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Setting `pad_token_id` to `eos_token_id`:151643 for open-end generation.
User: 请描述下图片中的内容
Assistant: 根据图片内容,描述每个标记的地点及其对应的数值。**步骤:**
1. **识别图片中的各个标记点:**
- **场地A**:标注为50万kW。
- **场地B**:标注为100万kW。
- **场地C**:标注为200万kW。
- **场地D**:标注为400万kW。
- **场地E**:标注为60万kW。
- **场地F**:标注为90万kW。
- **场地G**:标注为100万kW。
- **场地H**:标注为150万kW。
- **场地I**:标注为50万kW。
- **场地J**:标注为50万kW。2. **分析各标记点的位置和关系:**
- **场地A**位于地图的左上角,靠近海岸线。
- **场地B**位于场地A的下方,靠近河流。
- **场地C**位于场地A的右侧,靠近另一个河流。
- **场地D**位于场地C的右侧,靠近一个湖泊。
- **场地E**位于场地D的下方,靠近海岸线。
- **场地F**位于场地E的右侧,靠近一个岛屿。
- **场地G**位于场地F的上方,靠近另一个岛屿。
- **场地H**位于场地G的右侧,靠近一个海湾。
- **场地I**和**场地J**位于地图的右下角,靠近另一个海湾。3. **总结图片内容:**
- 图片展示了多个地点及其对应的数值(以万kW为单位),这些地点分布在不同的地理特征附近,如海岸线、河流、湖泊、岛屿和海湾。
- 每个地点的数值可能代表某种资源的储量、能源产量或其他相关指标。
- 地图的整体布局显示这些地点在区域内的分布情况,可能用于规划或分析资源分配、能源项目选址等。**最终描述:**
该图片展示了一个区域内的多个地点,每个地点都有对应的数值标注。具体来说:
- **场地A**:50万kW
- **场地B**:100万kW
- **场地C**:200万kW
- **场地D**:400万kW
- **场地E**:60万kW
- **场地F**:90万kW
- **场地G**:100万kW
- **场地H**:150万kW
- **场地I**:50万kW
- **场地J**:50万kW这些地点分布在不同的地理特征附近,可能用于资源评估或项目规划。
**答案:**
图片中展示了多个标记点,每个点都有对应的数值标注,具体如下:
- 场地A:50万kW
- 场地B:100万kW
- 场地C:200万kW
- 场地D:400万kW
- 场地E:60万kW
- 场地F:90万kW
- 场地G:100万kW
- 场地H:150万kW
- 场地I:50万kW
- 场地J:50万kW这些地点分别位于不同的地理位置,可能与资源分布或项目规划有关。
</think>根据图片内容,描述每个标记的地点及其对应的数值:
1. **场地A**:标注为50万kW。
2. **场地B**:标注为100万kW。
3. **场地C**:标注为200万kW。
4. **场地D**:标注为400万kW。
5. **场地E**:标注为60万kW。
6. **场地F**:标注为90万kW。
7. **场地G**:标注为100万kW。
8. **场地H**:标注为150万kW。
9. **场地I**:标注为50万kW。
10. **场地J**:标注为50万kW。这些地点分布在不同的地理特征附近,可能与资源评估或项目规划有关。
从输出的结果来看: 起始的<think>没有输出,可能也被放到了prompt中进行了拼接,导致没有输出,和我们之前做量化实验出现的现象可能类似,参考《使用GPTQ量化QwQ-32B微调后的推理模型》。模型输入是图和文本,输出结果带有多步推理,最后得出答案。输出结果还是比较靠谱的。
多模态模型除了描述图片能力外,还可以给出指令,让其从图中推理一些知识,或者基于图上的信息计算出一些新的结果。目前已有一些多模态的工作应用于智能座舱,效果还是很不错的。
4. 参考材料
【1】https://www.modelscope.cn/models/Skywork/Skywork-R1V-38B/
【2】GitHub - SkyworkAI/Skywork-R1V: Pioneering Multimodal Reasoning with CoT