Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +91 -0
- Inference/inference_demo_data_drivelmm.json +246 -0
- Inference/inference_demo_data_drivemllm.json +63 -0
- Inference/inference_demo_drivelmm.py +288 -0
- Inference/inference_demo_drivemllm.py +255 -0
- __pycache__/main.cpython-310.pyc +0 -0
- assets/AgentThink.png +3 -0
- assets/AgentThink2.png +3 -0
- assets/demo.gif +3 -0
- assets/planning-night.png +3 -0
- assets/planning.png +3 -0
- assets/poster.png +3 -0
- assets/zero-visual.png +3 -0
- demo_image/nuscenes_CAM_FRONT_3590.webp +0 -0
- demo_image/nuscenes_CAM_FRONT_3757.webp +3 -0
- demo_image/nuscenes_CAM_FRONT_3896.webp +3 -0
- evaluation/evaluation_script.py +342 -0
- evaluation/inference.py +298 -0
- evaluation/inference_agentthink.py +300 -0
- evaluation/inference_withtool.py +334 -0
- evaluation/prepare_data.py +43 -0
- main.py +246 -0
- pretrained_model/AgentThink-model/added_tokens.json +24 -0
- pretrained_model/AgentThink-model/args.json +360 -0
- pretrained_model/AgentThink-model/chat_template.json +3 -0
- pretrained_model/AgentThink-model/config.json +66 -0
- pretrained_model/AgentThink-model/generation_config.json +14 -0
- pretrained_model/AgentThink-model/merges.txt +0 -0
- pretrained_model/AgentThink-model/model-00001-of-00004.safetensors +3 -0
- pretrained_model/AgentThink-model/model-00002-of-00004.safetensors +3 -0
- pretrained_model/AgentThink-model/model-00003-of-00004.safetensors +3 -0
- pretrained_model/AgentThink-model/model-00004-of-00004.safetensors +3 -0
- pretrained_model/AgentThink-model/model.safetensors.index.json +736 -0
- pretrained_model/AgentThink-model/preprocessor_config.json +19 -0
- pretrained_model/AgentThink-model/special_tokens_map.json +31 -0
- pretrained_model/AgentThink-model/tokenizer.json +3 -0
- pretrained_model/AgentThink-model/tokenizer_config.json +209 -0
- pretrained_model/AgentThink-model/vocab.json +0 -0
- pretrained_model/depth_anything_v2_vitb.pth +3 -0
- pretrained_model/yolov8x-worldv2.pt +3 -0
- requirements.txt +9 -0
- results/DriveLMMo1_qwen_7B_exp_rlfh_reward_Full_agent.json +0 -0
- results/DriveLMMo1_qwen_7B_exp_sft_rlhf_Fullv1_ep20.json +0 -0
- results/DriveLMMo1_qwen_7B_swift_exp_sft_rlhf_Fullv2_ep8.json +3 -0
- results/agentthink/DriveLMMo1_AgentThink.json +0 -0
- scripts/__init__.py +0 -0
- scripts/__pycache__/__init__.cpython-310.pyc +0 -0
- scripts/__pycache__/utlis.cpython-310.pyc +0 -0
- scripts/debug_scripts/debug_agentthink_inference.sh +9 -0
- scripts/debug_scripts/debug_inference.sh +9 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,94 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
third_party/yoloworld/data/__pycache__/augment.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/AgentThink.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
assets/AgentThink2.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
assets/demo.gif filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
assets/planning-night.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
assets/planning.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
assets/poster.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
assets/zero-visual.png filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
demo_image/nuscenes_CAM_FRONT_3757.webp filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
demo_image/nuscenes_CAM_FRONT_3896.webp filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
results/DriveLMMo1_qwen_7B_swift_exp_sft_rlhf_Fullv2_ep8.json filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
third_party/nuscenes_CAM_FRONT_5978.webp filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
third_party/yoloworld/assets/bus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
third_party/YOLO-World/demo/sample_images/bus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
third_party/YOLO-World/demo/sample_images/zidane.jpg filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
third_party/YOLO-World/assets/finetune_yoloworld.png filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
third_party/YOLO-World/assets/yolo_arch.png filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
third_party/YOLO-World/assets/yolo_logo.png filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
third_party/ms-swift/asset/banner.png filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
third_party/ms-swift/asset/ding.png filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
third_party/ms-swift/docs/resources/asyncengine.png filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
third_party/ms-swift/docs/resources/deepeyes.png filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
third_party/ms-swift/docs/resources/dpo_data.png filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
third_party/ms-swift/docs/resources/grpo_clevr_count.png filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
third_party/ms-swift/docs/resources/grpo_countdown.png filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
third_party/ms-swift/docs/resources/grpo_code.png filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
third_party/ms-swift/docs/resources/grpo_countdown_1.png filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
third_party/ms-swift/docs/resources/grpo_geoqa.png filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
third_party/ms-swift/docs/resources/grpo_multi_turn.png filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
third_party/ms-swift/docs/resources/gym_env.png filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
third_party/ms-swift/docs/resources/kto_data.png filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
third_party/ms-swift/docs/resources/grpo_openr1_multimodal.png filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
third_party/ms-swift/docs/resources/multiturn_pipeline.png filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
third_party/ms-swift/docs/resources/sapo_tau.png filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
third_party/ms-swift/docs/resources/web-ui.jpg filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
third_party/ms-swift/docs/resources/web-ui-en.jpg filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
third_party/Depth-Anything-V2/assets/DA-2K.png filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
third_party/Depth-Anything-V2/assets/teaser.png filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
third_party/Depth-Anything-V2/metric_depth/assets/compare_zoedepth.png filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
third_party/Depth-Anything-V2/metric_depth/dataset/splits/hypersim/train.txt filter=lfs diff=lfs merge=lfs -text
|
| 76 |
+
third_party/Depth-Anything-V2/assets/examples/demo01.jpg filter=lfs diff=lfs merge=lfs -text
|
| 77 |
+
third_party/Depth-Anything-V2/assets/examples/demo03.jpg filter=lfs diff=lfs merge=lfs -text
|
| 78 |
+
third_party/Depth-Anything-V2/assets/examples/demo02.jpg filter=lfs diff=lfs merge=lfs -text
|
| 79 |
+
third_party/Depth-Anything-V2/assets/examples/demo04.jpg filter=lfs diff=lfs merge=lfs -text
|
| 80 |
+
third_party/Depth-Anything-V2/assets/examples/demo05.jpg filter=lfs diff=lfs merge=lfs -text
|
| 81 |
+
third_party/Depth-Anything-V2/assets/examples/demo06.jpg filter=lfs diff=lfs merge=lfs -text
|
| 82 |
+
third_party/Depth-Anything-V2/assets/examples/demo07.jpg filter=lfs diff=lfs merge=lfs -text
|
| 83 |
+
third_party/Depth-Anything-V2/assets/examples/demo08.jpg filter=lfs diff=lfs merge=lfs -text
|
| 84 |
+
third_party/Depth-Anything-V2/assets/examples/demo09.jpg filter=lfs diff=lfs merge=lfs -text
|
| 85 |
+
third_party/Depth-Anything-V2/assets/examples/demo10.jpg filter=lfs diff=lfs merge=lfs -text
|
| 86 |
+
third_party/Depth-Anything-V2/assets/examples/demo11.jpg filter=lfs diff=lfs merge=lfs -text
|
| 87 |
+
third_party/Depth-Anything-V2/assets/examples/demo12.jpg filter=lfs diff=lfs merge=lfs -text
|
| 88 |
+
third_party/Depth-Anything-V2/assets/examples/demo13.jpg filter=lfs diff=lfs merge=lfs -text
|
| 89 |
+
third_party/Depth-Anything-V2/assets/examples/demo14.jpg filter=lfs diff=lfs merge=lfs -text
|
| 90 |
+
third_party/Depth-Anything-V2/assets/examples/demo15.jpg filter=lfs diff=lfs merge=lfs -text
|
| 91 |
+
third_party/Depth-Anything-V2/assets/examples/demo16.jpg filter=lfs diff=lfs merge=lfs -text
|
| 92 |
+
third_party/Depth-Anything-V2/assets/examples/demo17.jpg filter=lfs diff=lfs merge=lfs -text
|
| 93 |
+
third_party/Depth-Anything-V2/assets/examples/demo18.jpg filter=lfs diff=lfs merge=lfs -text
|
| 94 |
+
third_party/Depth-Anything-V2/assets/examples/demo19.jpg filter=lfs diff=lfs merge=lfs -text
|
| 95 |
+
third_party/Depth-Anything-V2/assets/examples/demo20.jpg filter=lfs diff=lfs merge=lfs -text
|
| 96 |
+
third_party/DAM/assets/DA-2K.png filter=lfs diff=lfs merge=lfs -text
|
| 97 |
+
third_party/Depth-Anything-V2/assets/examples_video/ferris_wheel.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 98 |
+
third_party/DAM/assets/teaser.png filter=lfs diff=lfs merge=lfs -text
|
| 99 |
+
third_party/Depth-Anything-V2/assets/examples_video/basketball.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 100 |
+
third_party/DAM/metric_depth/assets/compare_zoedepth.png filter=lfs diff=lfs merge=lfs -text
|
| 101 |
+
third_party/DAM/metric_depth/dataset/splits/hypersim/train.txt filter=lfs diff=lfs merge=lfs -text
|
| 102 |
+
third_party/DAM/assets/examples/demo01.jpg filter=lfs diff=lfs merge=lfs -text
|
| 103 |
+
third_party/DAM/assets/examples/demo03.jpg filter=lfs diff=lfs merge=lfs -text
|
| 104 |
+
third_party/DAM/assets/examples/demo02.jpg filter=lfs diff=lfs merge=lfs -text
|
| 105 |
+
third_party/DAM/assets/examples/demo04.jpg filter=lfs diff=lfs merge=lfs -text
|
| 106 |
+
third_party/DAM/assets/examples/demo05.jpg filter=lfs diff=lfs merge=lfs -text
|
| 107 |
+
third_party/DAM/assets/examples/demo06.jpg filter=lfs diff=lfs merge=lfs -text
|
| 108 |
+
third_party/DAM/assets/examples/demo08.jpg filter=lfs diff=lfs merge=lfs -text
|
| 109 |
+
third_party/DAM/assets/examples/demo07.jpg filter=lfs diff=lfs merge=lfs -text
|
| 110 |
+
third_party/DAM/assets/examples/demo09.jpg filter=lfs diff=lfs merge=lfs -text
|
| 111 |
+
third_party/DAM/assets/examples/demo10.jpg filter=lfs diff=lfs merge=lfs -text
|
| 112 |
+
third_party/DAM/assets/examples/demo11.jpg filter=lfs diff=lfs merge=lfs -text
|
| 113 |
+
third_party/DAM/assets/examples/demo13.jpg filter=lfs diff=lfs merge=lfs -text
|
| 114 |
+
third_party/DAM/assets/examples/demo12.jpg filter=lfs diff=lfs merge=lfs -text
|
| 115 |
+
third_party/DAM/assets/examples/demo14.jpg filter=lfs diff=lfs merge=lfs -text
|
| 116 |
+
third_party/DAM/assets/examples/demo15.jpg filter=lfs diff=lfs merge=lfs -text
|
| 117 |
+
third_party/DAM/assets/examples/demo16.jpg filter=lfs diff=lfs merge=lfs -text
|
| 118 |
+
third_party/DAM/assets/examples/demo17.jpg filter=lfs diff=lfs merge=lfs -text
|
| 119 |
+
third_party/DAM/assets/examples/demo18.jpg filter=lfs diff=lfs merge=lfs -text
|
| 120 |
+
third_party/DAM/assets/examples/demo19.jpg filter=lfs diff=lfs merge=lfs -text
|
| 121 |
+
third_party/DAM/assets/examples/demo20.jpg filter=lfs diff=lfs merge=lfs -text
|
| 122 |
+
third_party/DAM/assets/examples_video/ferris_wheel.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 123 |
+
third_party/DAM/assets/examples_video/basketball.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 124 |
+
pretrained_model/AgentThink-model/tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
| 125 |
+
.venv/Scripts/python.exe filter=lfs diff=lfs merge=lfs -text
|
| 126 |
+
.venv/Scripts/pythonw.exe filter=lfs diff=lfs merge=lfs -text
|
Inference/inference_demo_data_drivelmm.json
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"idx": "e7ef871f77f44331aefdebc24ec034b7_b10f0cd792b64d16a1a5e8349b20504c_1",
|
| 4 |
+
"image": [
|
| 5 |
+
"samples/CAM_FRONT_LEFT/n015-2018-08-02-17-16-37+0800__CAM_FRONT_LEFT__1533201471404844.jpg",
|
| 6 |
+
"samples/CAM_FRONT/n015-2018-08-02-17-16-37+0800__CAM_FRONT__1533201471412477.jpg",
|
| 7 |
+
"samples/CAM_FRONT_RIGHT/n015-2018-08-02-17-16-37+0800__CAM_FRONT_RIGHT__1533201471420339.jpg",
|
| 8 |
+
"samples/CAM_BACK_RIGHT/n015-2018-08-02-17-16-37+0800__CAM_BACK_RIGHT__1533201471427893.jpg",
|
| 9 |
+
"samples/CAM_BACK/n015-2018-08-02-17-16-37+0800__CAM_BACK__1533201471437636.jpg",
|
| 10 |
+
"samples/CAM_BACK_LEFT/n015-2018-08-02-17-16-37+0800__CAM_BACK_LEFT__1533201471447423.jpg"
|
| 11 |
+
],
|
| 12 |
+
"question": "Describe the 3 most important objects in the current scene that the ego vehicle must take into consideration.",
|
| 13 |
+
"final_answer": "The three most important objects the ego vehicle must consider are the car directly ahead, the barrier indicating restricted access, and the pedestrian standing on the side of the road. These objects are crucial for safety and navigation.",
|
| 14 |
+
"steps": "\n\n1. In the top middle image, the ego vehicle is right behind another vehicle. This car is directly in its path and needs to be considered for speed and distance management.\n2. The top middle image also shows a barrier ahead. This indicates restricted access which the ego vehicle must consider before proceeding.\n3. The top right image includes a person standing near the road. The ego vehicle should be cautious of pedestrians and maintain a safe distance.",
|
| 15 |
+
"lidar": "n015-2018-08-02-17-16-37+0800__LIDAR_TOP__1533201471447336.pcd.bin",
|
| 16 |
+
"cot_data": {
|
| 17 |
+
"Question": "Describe the 3 most important objects in the current scene that the ego vehicle must take into consideration.",
|
| 18 |
+
"Chain": [
|
| 19 |
+
{
|
| 20 |
+
"Tool": {
|
| 21 |
+
"function_name": "get_leading_object_detection",
|
| 22 |
+
"parameters": [
|
| 23 |
+
""
|
| 24 |
+
]
|
| 25 |
+
},
|
| 26 |
+
"Sub": "What is the leading object detected directly in front of the ego vehicle?",
|
| 27 |
+
"Guess_Answer": "A car is detected directly ahead of the ego vehicle.",
|
| 28 |
+
"key_words": [
|
| 29 |
+
"leading object",
|
| 30 |
+
"car ahead",
|
| 31 |
+
"front vehicle",
|
| 32 |
+
"directly in path",
|
| 33 |
+
"preceding car"
|
| 34 |
+
],
|
| 35 |
+
"Missing_flag": "False",
|
| 36 |
+
"next_action": "continue reasoning"
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"Tool": {
|
| 40 |
+
"function_name": "get_surrounding_object_detections",
|
| 41 |
+
"parameters": [
|
| 42 |
+
""
|
| 43 |
+
]
|
| 44 |
+
},
|
| 45 |
+
"Sub": "What surrounding objects are detected near the ego vehicle that could pose a restriction or obstacle?",
|
| 46 |
+
"Guess_Answer": "A barrier is detected ahead indicating restricted access.",
|
| 47 |
+
"key_words": [
|
| 48 |
+
"barrier",
|
| 49 |
+
"obstacle",
|
| 50 |
+
"restriction",
|
| 51 |
+
"roadblock",
|
| 52 |
+
"access limitation"
|
| 53 |
+
],
|
| 54 |
+
"Missing_flag": "False",
|
| 55 |
+
"next_action": "continue reasoning"
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"Tool": {
|
| 59 |
+
"function_name": "get_surrounding_object_detections",
|
| 60 |
+
"parameters": [
|
| 61 |
+
""
|
| 62 |
+
]
|
| 63 |
+
},
|
| 64 |
+
"Sub": "Are there any pedestrians near the road that the ego vehicle must be cautious of?",
|
| 65 |
+
"Guess_Answer": "A pedestrian is detected standing near the road.",
|
| 66 |
+
"key_words": [
|
| 67 |
+
"pedestrian",
|
| 68 |
+
"person",
|
| 69 |
+
"roadside walker",
|
| 70 |
+
"foot traffic",
|
| 71 |
+
"bystander"
|
| 72 |
+
],
|
| 73 |
+
"Missing_flag": "False",
|
| 74 |
+
"next_action": "conclude"
|
| 75 |
+
}
|
| 76 |
+
],
|
| 77 |
+
"final_answer_keywords": [
|
| 78 |
+
"car ahead",
|
| 79 |
+
"barrier",
|
| 80 |
+
"pedestrian",
|
| 81 |
+
"ego vehicle consideration",
|
| 82 |
+
"critical objects"
|
| 83 |
+
],
|
| 84 |
+
"final_answer": "The three most important objects the ego vehicle must consider are the car directly ahead, the barrier indicating restricted access, and the pedestrian standing on the side of the road. These objects are crucial for safety and navigation."
|
| 85 |
+
},
|
| 86 |
+
"tool_result": [
|
| 87 |
+
{
|
| 88 |
+
"name": "get_leading_object_detection",
|
| 89 |
+
"args": {},
|
| 90 |
+
"prompt": "Leading object detections:\nLeading object detected, object type: car, object id: 4, position: (-0.06, 6.58), size: (1.82, 4.37)\n"
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"name": "get_surrounding_object_detections",
|
| 94 |
+
"args": {},
|
| 95 |
+
"prompt": "Surrounding object detections:\nSurrounding object detected, object type: car, object id: 0, position: (-16.95, -8.55), size: (1.93, 4.50)\nSurrounding object detected, object type: car, object id: 2, position: (-17.31, -11.72), size: (1.97, 4.67)\nSurrounding object detected, object type: car, object id: 4, position: (-0.06, 6.58), size: (1.82, 4.37)\nSurrounding object detected, object type: car, object id: 5, position: (-7.22, -8.74), size: (1.87, 4.52)\nSurrounding object detected, object type: car, object id: 6, position: (-1.74, -5.43), size: (1.87, 4.61)\nSurrounding object detected, object type: car, object id: 7, position: (5.29, -12.03), size: (1.85, 4.43)\nSurrounding object detected, object type: pedestrian, object id: 9, position: (8.89, 15.36), size: (0.78, 0.88)\nSurrounding object detected, object type: car, object id: 17, position: (0.11, 14.82), size: (1.90, 4.61)\n"
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"name": "get_surrounding_object_detections",
|
| 99 |
+
"args": {},
|
| 100 |
+
"prompt": "Surrounding object detections:\nSurrounding object detected, object type: car, object id: 0, position: (-16.95, -8.55), size: (1.93, 4.50)\nSurrounding object detected, object type: car, object id: 2, position: (-17.31, -11.72), size: (1.97, 4.67)\nSurrounding object detected, object type: car, object id: 4, position: (-0.06, 6.58), size: (1.82, 4.37)\nSurrounding object detected, object type: car, object id: 5, position: (-7.22, -8.74), size: (1.87, 4.52)\nSurrounding object detected, object type: car, object id: 6, position: (-1.74, -5.43), size: (1.87, 4.61)\nSurrounding object detected, object type: car, object id: 7, position: (5.29, -12.03), size: (1.85, 4.43)\nSurrounding object detected, object type: pedestrian, object id: 9, position: (8.89, 15.36), size: (0.78, 0.88)\nSurrounding object detected, object type: car, object id: 17, position: (0.11, 14.82), size: (1.90, 4.61)\n"
|
| 101 |
+
}
|
| 102 |
+
],
|
| 103 |
+
"system_prompts": "\n **A Language Agent for Autonomous Driving**\n Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).\n \n*****Ego States:*****\nCurrent State:\n - Velocity (vx,vy): (0.00,0.00)\n - Heading Angular Velocity (v_yaw): (0.00)\n - Acceleration (ax,ay): (-0.00,0.02)\n - Can Bus: (-0.02,-0.40)\n - Heading Speed: (0.00)\n - Steering: (-0.07)\nHistorical Trajectory (last 2 seconds): [(0.00,0.07), (0.00,0.05), (0.00,0.03), (0.00,0.00)]\nMission Goal: FORWARD\n\n"
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"idx": "e7ef871f77f44331aefdebc24ec034b7_b10f0cd792b64d16a1a5e8349b20504c_4",
|
| 107 |
+
"image": [
|
| 108 |
+
"samples/CAM_FRONT_LEFT/n015-2018-08-02-17-16-37+0800__CAM_FRONT_LEFT__1533201471404844.jpg",
|
| 109 |
+
"samples/CAM_FRONT/n015-2018-08-02-17-16-37+0800__CAM_FRONT__1533201471412477.jpg",
|
| 110 |
+
"samples/CAM_FRONT_RIGHT/n015-2018-08-02-17-16-37+0800__CAM_FRONT_RIGHT__1533201471420339.jpg",
|
| 111 |
+
"samples/CAM_BACK_RIGHT/n015-2018-08-02-17-16-37+0800__CAM_BACK_RIGHT__1533201471427893.jpg",
|
| 112 |
+
"samples/CAM_BACK/n015-2018-08-02-17-16-37+0800__CAM_BACK__1533201471437636.jpg",
|
| 113 |
+
"samples/CAM_BACK_LEFT/n015-2018-08-02-17-16-37+0800__CAM_BACK_LEFT__1533201471447423.jpg"
|
| 114 |
+
],
|
| 115 |
+
"question": "What is the safest action for the ego vehicle to take in any given situation? Choose from the following answers only\n A) Slow down and assess the situation.\n B) Speed up to maintain momentum.\n C) Steer abruptly to avoid any obstacle.\n D) Maintain the current speed without making adjustments.",
|
| 116 |
+
"final_answer": "A) Slow down and assess the situation.",
|
| 117 |
+
"steps": "\n1. **Front View Observations**: The first image in the top row shows a parking area with a car and visible traffic control devices such as barriers. The second image shows a vehicle waiting at a barrier, indicating potential congestion or a stopping point ahead.\n2. **Back View Observations**: The bottom row images depict narrow roads with parked vehicles and possible oncoming traffic, suggesting a need for cautious navigation.",
|
| 118 |
+
"lidar": "n015-2018-08-02-17-16-37+0800__LIDAR_TOP__1533201471447336.pcd.bin",
|
| 119 |
+
"cot_data": {
|
| 120 |
+
"Question": "What is the safest action for the ego vehicle to take in any given situation? Choose from the following answers only A) Slow down and assess the situation. B) Speed up to maintain momentum. C) Steer abruptly to avoid any obstacle. D) Maintain the current speed without making adjustments.",
|
| 121 |
+
"Chain": [
|
| 122 |
+
{
|
| 123 |
+
"Tool": {
|
| 124 |
+
"function_name": "get_surrounding_object_detections",
|
| 125 |
+
"parameters": [
|
| 126 |
+
""
|
| 127 |
+
]
|
| 128 |
+
},
|
| 129 |
+
"Sub": "What are the surrounding objects detected near the ego vehicle that could influence its safe maneuvering?",
|
| 130 |
+
"Guess_Answer": "There are multiple surrounding objects such as parked vehicles, barriers, and possible oncoming vehicles within a 20m range.",
|
| 131 |
+
"key_words": [
|
| 132 |
+
"surrounding objects",
|
| 133 |
+
"nearby obstacles",
|
| 134 |
+
"adjacent vehicles",
|
| 135 |
+
"proximal barriers"
|
| 136 |
+
],
|
| 137 |
+
"Missing_flag": "False",
|
| 138 |
+
"next_action": "continue reasoning"
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"Tool": {
|
| 142 |
+
"function_name": "get_leading_object_detection",
|
| 143 |
+
"parameters": [
|
| 144 |
+
""
|
| 145 |
+
]
|
| 146 |
+
},
|
| 147 |
+
"Sub": "Is there a leading object ahead that the ego vehicle should consider before deciding on an action?",
|
| 148 |
+
"Guess_Answer": "A vehicle is detected waiting at a barrier ahead, indicating a potential stopping or congestion point.",
|
| 149 |
+
"key_words": [
|
| 150 |
+
"leading object",
|
| 151 |
+
"front vehicle",
|
| 152 |
+
"vehicle ahead",
|
| 153 |
+
"obstruction in path"
|
| 154 |
+
],
|
| 155 |
+
"Missing_flag": "False",
|
| 156 |
+
"next_action": "continue reasoning"
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"Tool": {
|
| 160 |
+
"function_name": "get_current_lane_divider",
|
| 161 |
+
"parameters": [
|
| 162 |
+
""
|
| 163 |
+
]
|
| 164 |
+
},
|
| 165 |
+
"Sub": "What is the current lane environment like including lane dividers or boundaries to support safe driving decisions?",
|
| 166 |
+
"Guess_Answer": "The lane boundaries suggest narrow roads with limited space, requiring cautious navigation.",
|
| 167 |
+
"key_words": [
|
| 168 |
+
"lane boundaries",
|
| 169 |
+
"lane dividers",
|
| 170 |
+
"road edges",
|
| 171 |
+
"lane markers"
|
| 172 |
+
],
|
| 173 |
+
"Missing_flag": "False",
|
| 174 |
+
"next_action": "continue reasoning"
|
| 175 |
+
},
|
| 176 |
+
{
|
| 177 |
+
"Tool": {
|
| 178 |
+
"function_name": "get_current_shoulder",
|
| 179 |
+
"parameters": [
|
| 180 |
+
""
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
"Sub": "How much space is available on the road shoulders on both sides of the ego vehicle that affects maneuverability?",
|
| 184 |
+
"Guess_Answer": "Road shoulders are narrow or not sufficient for safe evasive steering, limiting abrupt maneuvers.",
|
| 185 |
+
"key_words": [
|
| 186 |
+
"road shoulders",
|
| 187 |
+
"side space",
|
| 188 |
+
"shoulder width",
|
| 189 |
+
"side clearance"
|
| 190 |
+
],
|
| 191 |
+
"Missing_flag": "False",
|
| 192 |
+
"next_action": "continue reasoning"
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"Tool": {
|
| 196 |
+
"function_name": "",
|
| 197 |
+
"parameters": [
|
| 198 |
+
""
|
| 199 |
+
]
|
| 200 |
+
},
|
| 201 |
+
"Sub": "Considering object detections, lane constraints, and shoulder space, which action ensures the safest driving behavior?",
|
| 202 |
+
"Guess_Answer": "Slowing down and assessing the situation allows the vehicle to respond safely to nearby obstacles and road conditions.",
|
| 203 |
+
"key_words": [
|
| 204 |
+
"slowing down",
|
| 205 |
+
"safe assessment",
|
| 206 |
+
"cautious navigation",
|
| 207 |
+
"risk mitigation"
|
| 208 |
+
],
|
| 209 |
+
"Missing_flag": "False",
|
| 210 |
+
"next_action": "conclude"
|
| 211 |
+
}
|
| 212 |
+
],
|
| 213 |
+
"final_answer_keywords": [
|
| 214 |
+
"slow down",
|
| 215 |
+
"assess situation",
|
| 216 |
+
"safe driving",
|
| 217 |
+
"caution"
|
| 218 |
+
],
|
| 219 |
+
"final_answer": "A) Slow down and assess the situation."
|
| 220 |
+
},
|
| 221 |
+
"tool_result": [
|
| 222 |
+
{
|
| 223 |
+
"name": "get_surrounding_object_detections",
|
| 224 |
+
"args": {},
|
| 225 |
+
"prompt": "Surrounding object detections:\nSurrounding object detected, object type: car, object id: 0, position: (-16.95, -8.55), size: (1.93, 4.50)\nSurrounding object detected, object type: car, object id: 2, position: (-17.31, -11.72), size: (1.97, 4.67)\nSurrounding object detected, object type: car, object id: 4, position: (-0.06, 6.58), size: (1.82, 4.37)\nSurrounding object detected, object type: car, object id: 5, position: (-7.22, -8.74), size: (1.87, 4.52)\nSurrounding object detected, object type: car, object id: 6, position: (-1.74, -5.43), size: (1.87, 4.61)\nSurrounding object detected, object type: car, object id: 7, position: (5.29, -12.03), size: (1.85, 4.43)\nSurrounding object detected, object type: pedestrian, object id: 9, position: (8.89, 15.36), size: (0.78, 0.88)\nSurrounding object detected, object type: car, object id: 17, position: (0.11, 14.82), size: (1.90, 4.61)\n"
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"name": "get_leading_object_detection",
|
| 229 |
+
"args": {},
|
| 230 |
+
"prompt": "Leading object detections:\nLeading object detected, object type: car, object id: 4, position: (-0.06, 6.58), size: (1.82, 4.37)\n"
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"name": "get_current_lane_divider",
|
| 234 |
+
"args": {},
|
| 235 |
+
"prompt": "Get distance to both sides of road lane_dividers of current ego-vehicle location:\nCurrent ego-vehicle's distance to left lane_divider is uncertain and distance to right lane_divider is 1.0m\n"
|
| 236 |
+
},
|
| 237 |
+
{
|
| 238 |
+
"name": "get_current_shoulder",
|
| 239 |
+
"args": {},
|
| 240 |
+
"prompt": "Distance to both sides of road shoulders of current ego-vehicle location:\nCurrent ego-vehicle's distance to left shoulder is 2.0m and right shoulder is 0.5m\n"
|
| 241 |
+
},
|
| 242 |
+
null
|
| 243 |
+
],
|
| 244 |
+
"system_prompts": "\n **A Language Agent for Autonomous Driving**\n Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).\n \n*****Ego States:*****\nCurrent State:\n - Velocity (vx,vy): (0.00,0.00)\n - Heading Angular Velocity (v_yaw): (0.00)\n - Acceleration (ax,ay): (-0.00,0.02)\n - Can Bus: (-0.02,-0.40)\n - Heading Speed: (0.00)\n - Steering: (-0.07)\nHistorical Trajectory (last 2 seconds): [(0.00,0.07), (0.00,0.05), (0.00,0.03), (0.00,0.00)]\nMission Goal: FORWARD\n\n"
|
| 245 |
+
}
|
| 246 |
+
]
|
Inference/inference_demo_data_drivemllm.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"image": [
|
| 4 |
+
"demo_image/nuscenes_CAM_FRONT_3896.webp"
|
| 5 |
+
],
|
| 6 |
+
"question": "Question: Is white car in front of black motorcycle according to the camera coordination?",
|
| 7 |
+
"final_answer": "Yes",
|
| 8 |
+
"tool_result": [
|
| 9 |
+
{
|
| 10 |
+
"name": "get_3d_loc_in_cam_info",
|
| 11 |
+
"args": {"object_names":["black motorcycle"], "image_path":"demo_image/nuscenes_CAM_FRONT_3896.webp"},
|
| 12 |
+
"prompt": "\n"
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"name": "get_3d_loc_in_cam_info",
|
| 16 |
+
"args": {"object_names":["white car"], "image_path":"demo_image/nuscenes_CAM_FRONT_3896.webp"},
|
| 17 |
+
"prompt": "\n"
|
| 18 |
+
}
|
| 19 |
+
],
|
| 20 |
+
"system_prompts": "\n **A Language Agent for Autonomous Driving**\n Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).\n Task Description: In this task, you are required to determine whether one object is positioned in front of another based on their z-values. The z-value indicates the depth position of an object, where a smaller z-value means the object is closer to the front. If the coordinates of the objects are not be provided directly, you must infer or identify them yourself. \n"
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"image": [
|
| 24 |
+
"demo_image/nuscenes_CAM_FRONT_3590.webp"
|
| 25 |
+
],
|
| 26 |
+
"question": "Question: Which is further left in this 2D image, white car or white bus?",
|
| 27 |
+
"final_answer": "Yes",
|
| 28 |
+
"tool_result": [
|
| 29 |
+
{
|
| 30 |
+
"name": "get_open_world_vocabulary_detection_info",
|
| 31 |
+
"args": {"object_names":["white car"], "image_path":"demo_image/nuscenes_CAM_FRONT_3590.webp"},
|
| 32 |
+
"prompt": "\n"
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"name": "get_open_world_vocabulary_detection_info",
|
| 36 |
+
"args": {"object_names":["white bus"], "image_path":"demo_image/nuscenes_CAM_FRONT_3590.webp"},
|
| 37 |
+
"prompt": "\n"
|
| 38 |
+
}
|
| 39 |
+
],
|
| 40 |
+
"system_prompts": "\n **A Language Agent for Autonomous Driving**\n Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).\n Task Description: In this task, you are tasked with determining which of two specific objects is positioned further to the left based on their x-coordinates. Note that the smaller the x-coordinate, the closer the object is to the left. If the coordinates of the objects are not be provided directly; you must infer or identify them yourself. \n"
|
| 41 |
+
},
|
| 42 |
+
|
| 43 |
+
{
|
| 44 |
+
"image": [
|
| 45 |
+
"demo_image/nuscenes_CAM_FRONT_3757.webp"
|
| 46 |
+
],
|
| 47 |
+
"question": "Question: Is pedestrian wearing black clothes in front of red and white bus(closer proximity to the camera/front)?",
|
| 48 |
+
"final_answer": "Yes",
|
| 49 |
+
"tool_result": [
|
| 50 |
+
{
|
| 51 |
+
"name": "get_3d_loc_in_cam_info",
|
| 52 |
+
"args": {"object_names":["pedestrian with black clothes"], "image_path":"demo_image/nuscenes_CAM_FRONT_3757.webp"},
|
| 53 |
+
"prompt": "\n"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"name": "get_3d_loc_in_cam_info",
|
| 57 |
+
"args": {"object_names":["white and red bus"], "image_path":"demo_image/nuscenes_CAM_FRONT_3757.webp"},
|
| 58 |
+
"prompt": "\n"
|
| 59 |
+
}
|
| 60 |
+
],
|
| 61 |
+
"system_prompts": "\n **A Language Agent for Autonomous Driving**\n Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).\n Task Description: In this task, you are required to determine whether one object is positioned in front of another based on their z-values. The z-value indicates the depth position of an object, where a smaller z-value means the object is closer to the front. If the coordinates of the objects are not be provided directly, you must infer or identify them yourself. \n"
|
| 62 |
+
}
|
| 63 |
+
]
|
Inference/inference_demo_drivelmm.py
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Kangan Qian. All rights reserved.
|
| 2 |
+
# Authors: Kangan Qian (Tsinghua University, Xiaomi Corporation)
|
| 3 |
+
# Description: Tool integration with Qwen2.5-VL model for autonomous driving inference
|
| 4 |
+
|
| 5 |
+
import json
|
| 6 |
+
import os
|
| 7 |
+
import time
|
| 8 |
+
import base64
|
| 9 |
+
import io
|
| 10 |
+
import sys
|
| 11 |
+
from typing import Callable, Any
|
| 12 |
+
from PIL import Image
|
| 13 |
+
import torch
|
| 14 |
+
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
|
| 15 |
+
from scripts.tools.tool_libraries import FuncAgent
|
| 16 |
+
from scripts.tools.gen_tool_result_data import AgentThink
|
| 17 |
+
from qwen_vl_utils import process_vision_info
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def pil_to_base64(pil_image: Image.Image) -> str:
|
| 21 |
+
"""
|
| 22 |
+
Convert a PIL image to a base64-encoded string
|
| 23 |
+
|
| 24 |
+
Args:
|
| 25 |
+
pil_image (Image.Image): PIL image object to convert
|
| 26 |
+
|
| 27 |
+
Returns:
|
| 28 |
+
str: Base64-encoded string representation of the image
|
| 29 |
+
|
| 30 |
+
Raises:
|
| 31 |
+
RuntimeError: If conversion fails
|
| 32 |
+
"""
|
| 33 |
+
try:
|
| 34 |
+
binary_stream = io.BytesIO()
|
| 35 |
+
pil_image.save(binary_stream, format="PNG")
|
| 36 |
+
binary_data = binary_stream.getvalue()
|
| 37 |
+
return base64.b64encode(binary_data).decode('utf-8')
|
| 38 |
+
except Exception as e:
|
| 39 |
+
raise RuntimeError(f"Image to base64 conversion failed: {e}")
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def inference_with_retry(
|
| 43 |
+
inference_func: Callable,
|
| 44 |
+
*args: Any,
|
| 45 |
+
max_retries: int = 3,
|
| 46 |
+
retry_delay: int = 3,
|
| 47 |
+
**kwargs: Any
|
| 48 |
+
) -> str:
|
| 49 |
+
"""
|
| 50 |
+
Execute an inference function with automatic retries on failure
|
| 51 |
+
|
| 52 |
+
Args:
|
| 53 |
+
inference_func (Callable): Inference function to call
|
| 54 |
+
*args: Positional arguments for the inference function
|
| 55 |
+
max_retries (int): Maximum number of retry attempts
|
| 56 |
+
retry_delay (int): Delay between retry attempts in seconds
|
| 57 |
+
**kwargs: Keyword arguments for the inference function
|
| 58 |
+
|
| 59 |
+
Returns:
|
| 60 |
+
str: Output from the inference function
|
| 61 |
+
|
| 62 |
+
Raises:
|
| 63 |
+
RuntimeError: If maximum retries are exceeded without success
|
| 64 |
+
"""
|
| 65 |
+
retries = 0
|
| 66 |
+
while retries < max_retries:
|
| 67 |
+
try:
|
| 68 |
+
return inference_func(*args, **kwargs)
|
| 69 |
+
except Exception as e:
|
| 70 |
+
print(f"Inference error: {e}. Retry {retries+1}/{max_retries}...")
|
| 71 |
+
retries += 1
|
| 72 |
+
time.sleep(retry_delay)
|
| 73 |
+
|
| 74 |
+
raise RuntimeError(f"Inference failed after {max_retries} retries")
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
class Qwen2_5VLInterface:
|
| 78 |
+
def __init__(self, model_path: str) -> None:
|
| 79 |
+
"""
|
| 80 |
+
Initialize Qwen2.5-VL model interface
|
| 81 |
+
|
| 82 |
+
Args:
|
| 83 |
+
model_path (str): Path to pretrained model
|
| 84 |
+
"""
|
| 85 |
+
self.model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
|
| 86 |
+
model_path,
|
| 87 |
+
torch_dtype=torch.bfloat16,
|
| 88 |
+
attn_implementation="flash_attention_2",
|
| 89 |
+
device_map="auto",
|
| 90 |
+
)
|
| 91 |
+
self.processor = AutoProcessor.from_pretrained(model_path)
|
| 92 |
+
|
| 93 |
+
def inference(self, pil_image: Image.Image, prompt: str, max_tokens: int = 4096) -> str:
|
| 94 |
+
"""
|
| 95 |
+
Perform inference using the Qwen2.5-VL model
|
| 96 |
+
|
| 97 |
+
Args:
|
| 98 |
+
pil_image (Image.Image): Input image
|
| 99 |
+
prompt (str): Text prompt for the model
|
| 100 |
+
max_tokens (int): Maximum number of tokens to generate
|
| 101 |
+
|
| 102 |
+
Returns:
|
| 103 |
+
str: Model output text
|
| 104 |
+
"""
|
| 105 |
+
# Convert image to base64 for model input
|
| 106 |
+
image_base64 = pil_to_base64(pil_image)
|
| 107 |
+
image_url = f"data:image;base64,{image_base64}"
|
| 108 |
+
|
| 109 |
+
# Prepare messages for the model
|
| 110 |
+
messages = [
|
| 111 |
+
{
|
| 112 |
+
"role": "user",
|
| 113 |
+
"content": [
|
| 114 |
+
{"type": "image", "image": image_url},
|
| 115 |
+
{"type": "text", "text": prompt},
|
| 116 |
+
],
|
| 117 |
+
}
|
| 118 |
+
]
|
| 119 |
+
|
| 120 |
+
# Process inputs
|
| 121 |
+
text = self.processor.apply_chat_template(
|
| 122 |
+
messages, tokenize=False, add_generation_prompt=True
|
| 123 |
+
)
|
| 124 |
+
image_inputs, video_inputs = process_vision_info(messages)
|
| 125 |
+
inputs = self.processor(
|
| 126 |
+
text=[text],
|
| 127 |
+
images=image_inputs,
|
| 128 |
+
videos=video_inputs,
|
| 129 |
+
padding=True,
|
| 130 |
+
return_tensors="pt",
|
| 131 |
+
)
|
| 132 |
+
inputs = inputs.to("cuda")
|
| 133 |
+
|
| 134 |
+
# Generate model output
|
| 135 |
+
generated_ids = self.model.generate(**inputs, max_new_tokens=max_tokens)
|
| 136 |
+
generated_ids_trimmed = [
|
| 137 |
+
out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
|
| 138 |
+
]
|
| 139 |
+
output_text = self.processor.batch_decode(
|
| 140 |
+
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
|
| 141 |
+
)
|
| 142 |
+
|
| 143 |
+
return output_text[0]
|
| 144 |
+
|
| 145 |
+
|
| 146 |
+
def execute_tool_call(
|
| 147 |
+
func_agent: FuncAgent,
|
| 148 |
+
tool_name: str,
|
| 149 |
+
tool_args: dict,
|
| 150 |
+
verbose: bool = True
|
| 151 |
+
) -> dict:
|
| 152 |
+
"""
|
| 153 |
+
Execute a tool call using the function agent
|
| 154 |
+
|
| 155 |
+
Args:
|
| 156 |
+
func_agent (FuncAgent): Function agent instance
|
| 157 |
+
tool_name (str): Name of the tool to execute
|
| 158 |
+
tool_args (dict): Arguments for the tool
|
| 159 |
+
verbose (bool): Whether to print tool execution details
|
| 160 |
+
|
| 161 |
+
Returns:
|
| 162 |
+
dict: Tool response containing name, arguments, and prompt
|
| 163 |
+
"""
|
| 164 |
+
try:
|
| 165 |
+
tool_function = getattr(func_agent, tool_name)
|
| 166 |
+
except AttributeError:
|
| 167 |
+
print(f"Error: Tool '{tool_name}' not found")
|
| 168 |
+
return None
|
| 169 |
+
|
| 170 |
+
if not callable(tool_function):
|
| 171 |
+
print(f"Error: '{tool_name}' is not a callable function")
|
| 172 |
+
return None
|
| 173 |
+
|
| 174 |
+
try:
|
| 175 |
+
tool_prompt, tool_result_data = tool_function(**tool_args)
|
| 176 |
+
except Exception as e:
|
| 177 |
+
print(f"Error executing tool '{tool_name}': {e}")
|
| 178 |
+
return None
|
| 179 |
+
|
| 180 |
+
if tool_prompt is None:
|
| 181 |
+
tool_prompt = ""
|
| 182 |
+
|
| 183 |
+
tool_response = {
|
| 184 |
+
"name": tool_name,
|
| 185 |
+
"args": tool_args,
|
| 186 |
+
"prompt": tool_prompt,
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
if verbose:
|
| 190 |
+
print(f"Tool: {tool_name}")
|
| 191 |
+
print(f"Arguments: {tool_args}")
|
| 192 |
+
print(f"Prompt: {tool_prompt}")
|
| 193 |
+
|
| 194 |
+
return tool_response
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
def run_model_inference(
|
| 198 |
+
image_path: str,
|
| 199 |
+
prompt: str,
|
| 200 |
+
model_path: str = "./pretrained_model"
|
| 201 |
+
) -> str:
|
| 202 |
+
"""
|
| 203 |
+
Run inference using the chat model
|
| 204 |
+
|
| 205 |
+
Args:
|
| 206 |
+
image_path (str): Path to input image file
|
| 207 |
+
prompt (str): Text prompt for the model
|
| 208 |
+
model_path (str): Path to model checkpoint
|
| 209 |
+
|
| 210 |
+
Returns:
|
| 211 |
+
str: Model output text
|
| 212 |
+
"""
|
| 213 |
+
image = Image.open(image_path)
|
| 214 |
+
model_interface = Qwen2_5VLInterface(model_path)
|
| 215 |
+
return inference_with_retry(
|
| 216 |
+
model_interface.inference,
|
| 217 |
+
image,
|
| 218 |
+
prompt,
|
| 219 |
+
max_retries=3,
|
| 220 |
+
retry_delay=3
|
| 221 |
+
)
|
| 222 |
+
|
| 223 |
+
|
| 224 |
+
def main():
|
| 225 |
+
"""Main function to process JSON data and run model inference"""
|
| 226 |
+
# Path configuration
|
| 227 |
+
json_file = "./Inference/inference_demo_data_drivelmm.json"
|
| 228 |
+
tool_data_path = "./data/tool_results"
|
| 229 |
+
image_base_path = "./data/image2concat"
|
| 230 |
+
model_path = "./pretrained_model"
|
| 231 |
+
|
| 232 |
+
AgentThink_model = os.path.join(model_path, 'AgentThink')
|
| 233 |
+
# AgentThink_model = os.path.join(model_path, 'checkpoint-700-merged')
|
| 234 |
+
|
| 235 |
+
# Load JSON data
|
| 236 |
+
with open(json_file, "r", encoding="utf-8") as file:
|
| 237 |
+
json_data = json.load(file)
|
| 238 |
+
|
| 239 |
+
# Process each sample in the JSON data
|
| 240 |
+
for sample in json_data:
|
| 241 |
+
sample_idx = sample['idx']
|
| 242 |
+
scene_token, frame_token, question_id = sample_idx.split('_', 2)
|
| 243 |
+
# breakpoint()
|
| 244 |
+
|
| 245 |
+
# Initialize agent for tool execution
|
| 246 |
+
agent = AgentThink(
|
| 247 |
+
token=frame_token,
|
| 248 |
+
split='val',
|
| 249 |
+
data_path=tool_data_path,
|
| 250 |
+
model_name='Qwen2.5-VL'
|
| 251 |
+
)
|
| 252 |
+
|
| 253 |
+
# Prepare image path
|
| 254 |
+
filename = sample_idx.rsplit('_', 1)[0] + '.png'
|
| 255 |
+
image_path = os.path.join(image_base_path, filename)
|
| 256 |
+
|
| 257 |
+
# Process tool chain
|
| 258 |
+
tool_chain = sample['tool_result']
|
| 259 |
+
system_prompt = sample['system_prompts']
|
| 260 |
+
question = sample['question']
|
| 261 |
+
tool_prompt = ""
|
| 262 |
+
|
| 263 |
+
for tool_node in tool_chain:
|
| 264 |
+
if tool_node is None:
|
| 265 |
+
continue
|
| 266 |
+
|
| 267 |
+
tool_name = tool_node['name']
|
| 268 |
+
tool_args = tool_node['args']
|
| 269 |
+
tool_response = execute_tool_call(
|
| 270 |
+
agent.func_agent,
|
| 271 |
+
tool_name,
|
| 272 |
+
tool_args
|
| 273 |
+
)
|
| 274 |
+
|
| 275 |
+
if tool_response:
|
| 276 |
+
tool_prompt += tool_response['prompt']
|
| 277 |
+
|
| 278 |
+
# Construct full prompt for model inference
|
| 279 |
+
full_prompt = f"{system_prompt}\n{question}\nTool results:{tool_prompt}"
|
| 280 |
+
|
| 281 |
+
# Run model inference
|
| 282 |
+
|
| 283 |
+
model_output = run_model_inference(image_path, full_prompt, AgentThink_model)
|
| 284 |
+
print(f"Sample {sample_idx} output: {model_output}")
|
| 285 |
+
|
| 286 |
+
|
| 287 |
+
if __name__ == "__main__":
|
| 288 |
+
main()
|
Inference/inference_demo_drivemllm.py
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright (c) Kangan Qian. All rights reserved.
|
| 2 |
+
# Authors: Kangan Qian (Tsinghua University, Xiaomi Corporation)
|
| 3 |
+
# Description: Interface for Qwen2.5-VL model inference with tool integration
|
| 4 |
+
|
| 5 |
+
import json
|
| 6 |
+
import time
|
| 7 |
+
import base64
|
| 8 |
+
import io
|
| 9 |
+
import sys
|
| 10 |
+
from typing import Callable, Any
|
| 11 |
+
from PIL import Image
|
| 12 |
+
import torch
|
| 13 |
+
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
|
| 14 |
+
from scripts.tools.tool_libraries_simple import FuncAgent
|
| 15 |
+
from qwen_vl_utils import process_vision_info
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def pil_to_base64(pil_image: Image.Image) -> str:
|
| 19 |
+
"""
|
| 20 |
+
Convert a PIL image object to a base64-encoded string.
|
| 21 |
+
|
| 22 |
+
Args:
|
| 23 |
+
pil_image (Image.Image): PIL image object to convert
|
| 24 |
+
|
| 25 |
+
Returns:
|
| 26 |
+
str: Base64-encoded string representation of the image
|
| 27 |
+
"""
|
| 28 |
+
try:
|
| 29 |
+
binary_stream = io.BytesIO()
|
| 30 |
+
pil_image.save(binary_stream, format="PNG")
|
| 31 |
+
binary_data = binary_stream.getvalue()
|
| 32 |
+
return base64.b64encode(binary_data).decode('utf-8')
|
| 33 |
+
except Exception as e:
|
| 34 |
+
raise RuntimeError(f"Image to base64 conversion failed: {e}")
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def inference_with_retry(
|
| 38 |
+
inference_func: Callable,
|
| 39 |
+
*args: Any,
|
| 40 |
+
max_retries: int = 3,
|
| 41 |
+
retry_delay: int = 3,
|
| 42 |
+
**kwargs: Any
|
| 43 |
+
) -> str:
|
| 44 |
+
"""
|
| 45 |
+
Execute an inference function with automatic retries on failure.
|
| 46 |
+
|
| 47 |
+
Args:
|
| 48 |
+
inference_func (Callable): Inference function to call
|
| 49 |
+
*args: Positional arguments for the inference function
|
| 50 |
+
max_retries (int): Maximum number of retry attempts
|
| 51 |
+
retry_delay (int): Delay between retry attempts in seconds
|
| 52 |
+
**kwargs: Keyword arguments for the inference function
|
| 53 |
+
|
| 54 |
+
Returns:
|
| 55 |
+
str: Output from the inference function
|
| 56 |
+
|
| 57 |
+
Raises:
|
| 58 |
+
RuntimeError: If maximum retries are exceeded without success
|
| 59 |
+
"""
|
| 60 |
+
retries = 0
|
| 61 |
+
while retries < max_retries:
|
| 62 |
+
try:
|
| 63 |
+
return inference_func(*args, **kwargs)
|
| 64 |
+
except Exception as e:
|
| 65 |
+
print(f"Inference error: {e}. Retry {retries+1}/{max_retries}...")
|
| 66 |
+
retries += 1
|
| 67 |
+
time.sleep(retry_delay)
|
| 68 |
+
|
| 69 |
+
raise RuntimeError(f"Inference failed after {max_retries} retries")
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
class Qwen2_5VLInterface:
|
| 73 |
+
def __init__(self, model_path: str) -> None:
|
| 74 |
+
"""
|
| 75 |
+
Initialize Qwen2.5-VL model interface
|
| 76 |
+
|
| 77 |
+
Args:
|
| 78 |
+
model_path (str): Path to pretrained model
|
| 79 |
+
"""
|
| 80 |
+
self.model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
|
| 81 |
+
model_path,
|
| 82 |
+
torch_dtype=torch.bfloat16,
|
| 83 |
+
attn_implementation="flash_attention_2",
|
| 84 |
+
device_map="auto",
|
| 85 |
+
)
|
| 86 |
+
self.processor = AutoProcessor.from_pretrained(model_path)
|
| 87 |
+
|
| 88 |
+
def inference(self, pil_image: Image.Image, prompt: str, max_tokens: int = 4096) -> str:
|
| 89 |
+
"""
|
| 90 |
+
Perform inference using the Qwen2.5-VL model
|
| 91 |
+
|
| 92 |
+
Args:
|
| 93 |
+
pil_image (Image.Image): Input image
|
| 94 |
+
prompt (str): Text prompt for the model
|
| 95 |
+
max_tokens (int): Maximum number of tokens to generate
|
| 96 |
+
|
| 97 |
+
Returns:
|
| 98 |
+
str: Model output text
|
| 99 |
+
"""
|
| 100 |
+
# Convert image to base64 for model input
|
| 101 |
+
image_base64 = pil_to_base64(pil_image)
|
| 102 |
+
image_url = f"data:image;base64,{image_base64}"
|
| 103 |
+
|
| 104 |
+
# Prepare messages for the model
|
| 105 |
+
messages = [
|
| 106 |
+
{
|
| 107 |
+
"role": "user",
|
| 108 |
+
"content": [
|
| 109 |
+
{"type": "image", "image": image_url},
|
| 110 |
+
{"type": "text", "text": prompt},
|
| 111 |
+
],
|
| 112 |
+
}
|
| 113 |
+
]
|
| 114 |
+
|
| 115 |
+
# Process inputs
|
| 116 |
+
text = self.processor.apply_chat_template(
|
| 117 |
+
messages, tokenize=False, add_generation_prompt=True
|
| 118 |
+
)
|
| 119 |
+
image_inputs, video_inputs = process_vision_info(messages)
|
| 120 |
+
inputs = self.processor(
|
| 121 |
+
text=[text],
|
| 122 |
+
images=image_inputs,
|
| 123 |
+
videos=video_inputs,
|
| 124 |
+
padding=True,
|
| 125 |
+
return_tensors="pt",
|
| 126 |
+
)
|
| 127 |
+
inputs = inputs.to("cuda")
|
| 128 |
+
|
| 129 |
+
# Generate model output
|
| 130 |
+
generated_ids = self.model.generate(**inputs, max_new_tokens=max_tokens)
|
| 131 |
+
generated_ids_trimmed = [
|
| 132 |
+
out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
|
| 133 |
+
]
|
| 134 |
+
output_text = self.processor.batch_decode(
|
| 135 |
+
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
|
| 136 |
+
)
|
| 137 |
+
|
| 138 |
+
return output_text[0]
|
| 139 |
+
|
| 140 |
+
|
| 141 |
+
def execute_tool_call(
|
| 142 |
+
func_agent: FuncAgent,
|
| 143 |
+
tool_name: str,
|
| 144 |
+
tool_args: dict,
|
| 145 |
+
verbose: bool = True
|
| 146 |
+
) -> dict:
|
| 147 |
+
"""
|
| 148 |
+
Execute a tool call using the function agent
|
| 149 |
+
|
| 150 |
+
Args:
|
| 151 |
+
func_agent (FuncAgent): Function agent instance
|
| 152 |
+
tool_name (str): Name of the tool to execute
|
| 153 |
+
tool_args (dict): Arguments for the tool
|
| 154 |
+
verbose (bool): Whether to print tool execution details
|
| 155 |
+
|
| 156 |
+
Returns:
|
| 157 |
+
dict: Tool response containing name, arguments, and prompt
|
| 158 |
+
"""
|
| 159 |
+
try:
|
| 160 |
+
tool_function = getattr(func_agent, tool_name)
|
| 161 |
+
except AttributeError:
|
| 162 |
+
print(f"Error: Tool '{tool_name}' not found")
|
| 163 |
+
return None
|
| 164 |
+
|
| 165 |
+
if not callable(tool_function):
|
| 166 |
+
print(f"Error: '{tool_name}' is not a callable function")
|
| 167 |
+
return None
|
| 168 |
+
|
| 169 |
+
try:
|
| 170 |
+
tool_prompt, tool_result_data = tool_function(**tool_args)
|
| 171 |
+
except Exception as e:
|
| 172 |
+
print(f"Error executing tool '{tool_name}': {e}")
|
| 173 |
+
return None
|
| 174 |
+
|
| 175 |
+
if tool_prompt is None:
|
| 176 |
+
tool_prompt = ""
|
| 177 |
+
|
| 178 |
+
tool_response = {
|
| 179 |
+
"name": tool_name,
|
| 180 |
+
"args": tool_args,
|
| 181 |
+
"prompt": tool_prompt,
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
if verbose:
|
| 185 |
+
print(f"Tool: {tool_name}")
|
| 186 |
+
print(f"Arguments: {tool_args}")
|
| 187 |
+
print(f"Prompt: {tool_prompt}")
|
| 188 |
+
|
| 189 |
+
return tool_response
|
| 190 |
+
|
| 191 |
+
|
| 192 |
+
def run_chat_model_inference(
|
| 193 |
+
image_path: str,
|
| 194 |
+
prompt: str,
|
| 195 |
+
model_path: str = "/path/to/model/checkpoint"
|
| 196 |
+
) -> str:
|
| 197 |
+
"""
|
| 198 |
+
Run inference using the chat model
|
| 199 |
+
|
| 200 |
+
Args:
|
| 201 |
+
image_path (str): Path to input image file
|
| 202 |
+
prompt (str): Text prompt for the model
|
| 203 |
+
model_path (str): Path to model checkpoint
|
| 204 |
+
|
| 205 |
+
Returns:
|
| 206 |
+
str: Model output text
|
| 207 |
+
"""
|
| 208 |
+
image = Image.open(image_path)
|
| 209 |
+
model_interface = Qwen2_5VLInterface(model_path)
|
| 210 |
+
return inference_with_retry(
|
| 211 |
+
model_interface.inference,
|
| 212 |
+
image,
|
| 213 |
+
prompt,
|
| 214 |
+
max_retries=3,
|
| 215 |
+
retry_delay=3
|
| 216 |
+
)
|
| 217 |
+
|
| 218 |
+
|
| 219 |
+
def main():
|
| 220 |
+
"""Main function to process JSON data and run model inference"""
|
| 221 |
+
# Initialize function agent
|
| 222 |
+
func_agent = FuncAgent()
|
| 223 |
+
|
| 224 |
+
# Load JSON data
|
| 225 |
+
json_file = "./Inference/inference_demo_data_drivemllm.json"
|
| 226 |
+
with open(json_file, "r", encoding="utf-8") as file:
|
| 227 |
+
json_data = json.load(file)
|
| 228 |
+
|
| 229 |
+
# Process each sample in the JSON data
|
| 230 |
+
for sample in json_data:
|
| 231 |
+
image_path = sample['image'][0]
|
| 232 |
+
tool_chain = sample['tool_result']
|
| 233 |
+
system_prompt = sample['system_prompts']
|
| 234 |
+
question = sample['question']
|
| 235 |
+
|
| 236 |
+
# Build tool prompt from tool chain
|
| 237 |
+
tool_prompt = ""
|
| 238 |
+
for tool_node in tool_chain:
|
| 239 |
+
tool_name = tool_node['name']
|
| 240 |
+
tool_args = tool_node['args']
|
| 241 |
+
tool_response = execute_tool_call(func_agent, tool_name, tool_args)
|
| 242 |
+
|
| 243 |
+
if tool_response:
|
| 244 |
+
tool_prompt += tool_response['prompt']
|
| 245 |
+
|
| 246 |
+
# Construct full prompt for model inference
|
| 247 |
+
full_prompt = f"{system_prompt}\n{question}\nTool results:{tool_prompt}"
|
| 248 |
+
|
| 249 |
+
# Run model inference
|
| 250 |
+
model_output = run_chat_model_inference(image_path, full_prompt, model_path="pretrained_model/AgentThink")
|
| 251 |
+
print("Model output:", model_output)
|
| 252 |
+
|
| 253 |
+
|
| 254 |
+
if __name__ == "__main__":
|
| 255 |
+
main()
|
__pycache__/main.cpython-310.pyc
ADDED
|
Binary file (6.75 kB). View file
|
|
|
assets/AgentThink.png
ADDED
|
Git LFS Details
|
assets/AgentThink2.png
ADDED
|
Git LFS Details
|
assets/demo.gif
ADDED
|
Git LFS Details
|
assets/planning-night.png
ADDED
|
Git LFS Details
|
assets/planning.png
ADDED
|
Git LFS Details
|
assets/poster.png
ADDED
|
Git LFS Details
|
assets/zero-visual.png
ADDED
|
Git LFS Details
|
demo_image/nuscenes_CAM_FRONT_3590.webp
ADDED
|
demo_image/nuscenes_CAM_FRONT_3757.webp
ADDED
|
Git LFS Details
|
demo_image/nuscenes_CAM_FRONT_3896.webp
ADDED
|
Git LFS Details
|
evaluation/evaluation_script.py
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import re
|
| 3 |
+
import json
|
| 4 |
+
import ast
|
| 5 |
+
import pandas as pd
|
| 6 |
+
from tqdm import tqdm
|
| 7 |
+
from concurrent.futures import ThreadPoolExecutor
|
| 8 |
+
from openai import OpenAI
|
| 9 |
+
|
| 10 |
+
# OpenAI API key (replace with a secure method)
|
| 11 |
+
openai_api_key = ""
|
| 12 |
+
client = OpenAI(api_key=openai_api_key)
|
| 13 |
+
|
| 14 |
+
# Define input and output file paths
|
| 15 |
+
# input_file = "results/DriveLMMo1_internvl.json"
|
| 16 |
+
input_file = "results/DriveLMMo1_250422011413.json" # put your result json here
|
| 17 |
+
output_file = "DriveLMMo1-results_result.json"
|
| 18 |
+
csv_output_file = "DriveLMMo1-results_result.csv"
|
| 19 |
+
|
| 20 |
+
# dataset = "./ReasoningDriveLM_TEST.json"
|
| 21 |
+
dataset = "./data/DriveLMMo1/DriveLMMo1_TEST.json" # put the DriveLMMo1 test gt file here
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
# System prompt for evaluation
|
| 25 |
+
system_prompt = """
|
| 26 |
+
You are an autonomous driving reasoning evaluator. Your task is to assess the alignment, coherence, and quality of reasoning steps in text responses for safety-critical driving scenarios.
|
| 27 |
+
|
| 28 |
+
You will evaluate the model-generated reasoning using the following metrics:
|
| 29 |
+
|
| 30 |
+
1. Faithfulness-Step (1-10)
|
| 31 |
+
Measures how well the model's reasoning steps align with the ground truth.
|
| 32 |
+
9-10: All steps correctly match or closely reflect the reference.
|
| 33 |
+
7-8: Most steps align, with minor deviations.
|
| 34 |
+
5-6: Some steps align, but several are incorrect or missing.
|
| 35 |
+
3-4: Few steps align; most are inaccurate or missing.
|
| 36 |
+
1-2: Majority of steps are incorrect.
|
| 37 |
+
|
| 38 |
+
2. Informativeness-Step (1-10)
|
| 39 |
+
Measures completeness of reasoning:
|
| 40 |
+
9-10: Captures almost all critical information.
|
| 41 |
+
7-8: Covers most key points, with minor omissions.
|
| 42 |
+
5-6: Missing significant details.
|
| 43 |
+
3-4: Only partial reasoning present.
|
| 44 |
+
1-2: Poor extraction of relevant reasoning.
|
| 45 |
+
|
| 46 |
+
3. Risk Assessment Accuracy (1-10)
|
| 47 |
+
Evaluates if the model correctly prioritizes high-risk objects or scenarios.
|
| 48 |
+
9-10: Correctly identifies and prioritizes key dangers.
|
| 49 |
+
7-8: Mostly accurate, with minor misprioritizations.
|
| 50 |
+
5-6: Some important risks are overlooked.
|
| 51 |
+
3-4: Significant misjudgments in risk prioritization.
|
| 52 |
+
1-2: Misidentifies key risks or misses them entirely.
|
| 53 |
+
|
| 54 |
+
4. Traffic Rule Adherence (1-10)
|
| 55 |
+
Evaluates whether the response follows traffic laws and driving best practices.
|
| 56 |
+
9-10: Fully compliant with legal and safe driving practices.
|
| 57 |
+
7-8: Minor deviations, but mostly correct.
|
| 58 |
+
5-6: Some inaccuracies in legal/safe driving recommendations.
|
| 59 |
+
3-4: Several rule violations or unsafe suggestions.
|
| 60 |
+
1-2: Promotes highly unsafe driving behavior.
|
| 61 |
+
|
| 62 |
+
5. Scene Awareness & Object Understanding (1-10)
|
| 63 |
+
Measures how well the response interprets objects, their positions, and actions.
|
| 64 |
+
9-10: Clearly understands all relevant objects and their relationships.
|
| 65 |
+
7-8: Minor misinterpretations but mostly correct.
|
| 66 |
+
5-6: Some key objects misunderstood or ignored.
|
| 67 |
+
3-4: Many errors in object recognition and reasoning.
|
| 68 |
+
1-2: Misidentifies or ignores key objects.
|
| 69 |
+
|
| 70 |
+
6. Repetition-Token (1-10)
|
| 71 |
+
Identifies unnecessary repetition in reasoning.
|
| 72 |
+
9-10: No redundancy, very concise.
|
| 73 |
+
7-8: Minor repetition but still clear.
|
| 74 |
+
5-6: Noticeable redundancy.
|
| 75 |
+
3-4: Frequent repetition that disrupts reasoning.
|
| 76 |
+
1-2: Excessive redundancy, making reasoning unclear.
|
| 77 |
+
|
| 78 |
+
7. Hallucination (1-10)
|
| 79 |
+
Detects irrelevant or invented reasoning steps not aligned with ground truth.
|
| 80 |
+
9-10: No hallucinations, all reasoning is grounded.
|
| 81 |
+
7-8: One or two minor hallucinations.
|
| 82 |
+
5-6: Some fabricated details.
|
| 83 |
+
3-4: Frequent hallucinations.
|
| 84 |
+
1-2: Majority of reasoning is hallucinated.
|
| 85 |
+
|
| 86 |
+
8. Semantic Coverage-Step (1-10)
|
| 87 |
+
Checks if the response fully covers the critical reasoning elements.
|
| 88 |
+
9-10: Nearly complete semantic coverage.
|
| 89 |
+
7-8: Good coverage, some minor omissions.
|
| 90 |
+
5-6: Partial coverage with key gaps.
|
| 91 |
+
3-4: Major gaps in reasoning.
|
| 92 |
+
1-2: Very poor semantic coverage.
|
| 93 |
+
|
| 94 |
+
9. Commonsense Reasoning (1-10)
|
| 95 |
+
Assesses the use of intuitive driving logic in reasoning.
|
| 96 |
+
9-10: Displays strong commonsense understanding.
|
| 97 |
+
7-8: Mostly correct, with minor gaps.
|
| 98 |
+
5-6: Some commonsense errors.
|
| 99 |
+
3-4: Frequent commonsense mistakes.
|
| 100 |
+
1-2: Lacks basic driving commonsense.
|
| 101 |
+
|
| 102 |
+
10. Missing Step (1-10)
|
| 103 |
+
Evaluates if any necessary reasoning steps are missing.
|
| 104 |
+
9-10: No critical steps missing.
|
| 105 |
+
7-8: Minor missing steps, but answer is mostly intact.
|
| 106 |
+
5-6: Some important steps missing.
|
| 107 |
+
3-4: Many critical reasoning gaps.
|
| 108 |
+
1-2: Response is highly incomplete.
|
| 109 |
+
|
| 110 |
+
11. Relevance (1-10)
|
| 111 |
+
Measures how well the response is specific to the given scenario and ground truth. This includes whether the answer is too general or vague instead of directly addressing the key aspects of the scenario.
|
| 112 |
+
9-10: Highly specific and directly relevant to the driving scenario. Captures critical elements precisely, with no unnecessary generalization.
|
| 113 |
+
7-8: Mostly relevant, but some minor parts may be overly generic or slightly off-focus.
|
| 114 |
+
5-6: Somewhat relevant but lacks precision; response contains vague or general reasoning without clear scenario-based details.
|
| 115 |
+
3-4: Mostly generic or off-topic reasoning, with significant irrelevant content.
|
| 116 |
+
1-2: Largely irrelevant, missing key aspects of the scenario and failing to align with the ground truth.
|
| 117 |
+
|
| 118 |
+
12. Missing Details (1-10)
|
| 119 |
+
Evaluates the extent to which critical information is missing from the response, impacting the reasoning quality.
|
| 120 |
+
9-10: No significant details are missing; response is comprehensive and complete.
|
| 121 |
+
7-8: Covers most important details, with minor omissions that do not severely impact reasoning.
|
| 122 |
+
5-6: Some essential details are missing, affecting the completeness of reasoning.
|
| 123 |
+
3-4: Many critical reasoning steps or contextual details are absent, making the response incomplete.
|
| 124 |
+
1-2: Response is highly lacking in necessary details, leaving major gaps in understanding.
|
| 125 |
+
|
| 126 |
+
Final Evaluation:
|
| 127 |
+
|
| 128 |
+
Compute the Overall Score as the average of all metric scores.
|
| 129 |
+
|
| 130 |
+
Avoid subjective interpretation and adhere to the given thresholds.
|
| 131 |
+
|
| 132 |
+
Always strictly follow these scoring guidelines.
|
| 133 |
+
|
| 134 |
+
Do not add any additional explanations beyond the structured JSON output.
|
| 135 |
+
|
| 136 |
+
Example output format:
|
| 137 |
+
|
| 138 |
+
{
|
| 139 |
+
"Faithfulness-Step": 6.0,
|
| 140 |
+
"Informativeness-Step": 6.5,
|
| 141 |
+
"Risk Assessment Accuracy": 7.0,
|
| 142 |
+
"Traffic Rule Adherence": 7.5,
|
| 143 |
+
"Scene Awareness & Object Understanding": 8.0,
|
| 144 |
+
"Repetition-Token": 7.0,
|
| 145 |
+
"Hallucination": 8.5,
|
| 146 |
+
"Semantic Coverage-Step": 7.5,
|
| 147 |
+
"Commonsense Reasoning": 7.0,
|
| 148 |
+
"Missing Step": 8.5,
|
| 149 |
+
"Relevance": 8.5,
|
| 150 |
+
"Missing Details": 7.0,
|
| 151 |
+
"Overall Score": 7.42
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
"""
|
| 155 |
+
|
| 156 |
+
|
| 157 |
+
# OpenAI Response Format
|
| 158 |
+
response_format = {
|
| 159 |
+
"type": "json_schema",
|
| 160 |
+
"json_schema": {
|
| 161 |
+
"name": "EvaluationScores",
|
| 162 |
+
"strict": True,
|
| 163 |
+
"schema": {
|
| 164 |
+
"type": "object",
|
| 165 |
+
"properties": {
|
| 166 |
+
"Faithfulness-Step": {"type": "number"},
|
| 167 |
+
"Informativeness-Step": {"type": "number"},
|
| 168 |
+
"Risk Assessment Accuracy": {"type": "number"},
|
| 169 |
+
"Traffic Rule Adherence":{"type": "number"},
|
| 170 |
+
"Scene Awareness & Object Understanding": {"type": "number"},
|
| 171 |
+
"Repetition-Token": {"type": "number"},
|
| 172 |
+
"Hallucination": {"type": "number"},
|
| 173 |
+
"Semantic Coverage-Step": {"type": "number"},
|
| 174 |
+
"Commonsense": {"type": "number"},
|
| 175 |
+
"Missing Step": {"type": "number"},
|
| 176 |
+
"Relevance": {"type": "number"},
|
| 177 |
+
"Missing Details": {"type": "number"},
|
| 178 |
+
"Overall Score": {"type": "number"}
|
| 179 |
+
},
|
| 180 |
+
"required": [
|
| 181 |
+
"Faithfulness-Step",
|
| 182 |
+
"Informativeness-Step",
|
| 183 |
+
"Risk Assessment Accuracy",
|
| 184 |
+
"Traffic Rule Adherence",
|
| 185 |
+
"Scene Awareness & Object Understanding",
|
| 186 |
+
"Repetition-Token",
|
| 187 |
+
"Hallucination",
|
| 188 |
+
"Semantic Coverage-Step",
|
| 189 |
+
"Commonsense",
|
| 190 |
+
"Missing Step",
|
| 191 |
+
"Relevance",
|
| 192 |
+
"Missing Details",
|
| 193 |
+
"Overall Score"
|
| 194 |
+
],
|
| 195 |
+
"additionalProperties": False
|
| 196 |
+
}
|
| 197 |
+
}
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
def extract_final_answer(text):
|
| 202 |
+
options = ["The final answer is:","**Final Answer:**","Final Answer","Answer","Why take this action?:",
|
| 203 |
+
"**Final Answer**","**Final Decision**:","Final Step:", "<CONCLUSION>"
|
| 204 |
+
]
|
| 205 |
+
final_ans = ""
|
| 206 |
+
for opt in options:
|
| 207 |
+
if opt in text:
|
| 208 |
+
final_ans = text.split(opt)[-1]
|
| 209 |
+
break
|
| 210 |
+
return final_ans
|
| 211 |
+
|
| 212 |
+
def extract_options(text):
|
| 213 |
+
pattern = r'([A-F])\)\s*(.+)'
|
| 214 |
+
matches = re.findall(pattern, text)
|
| 215 |
+
options = [(label, option) for label, option in matches]
|
| 216 |
+
if not options:
|
| 217 |
+
if "none of the " in text.lower():
|
| 218 |
+
return [('F', 'None of the option.')]
|
| 219 |
+
return [('none','none')]
|
| 220 |
+
return options
|
| 221 |
+
|
| 222 |
+
|
| 223 |
+
# Function to evaluate reasoning
|
| 224 |
+
def evaluate_steps(question, ground_truth, llm_response):
|
| 225 |
+
messages = [
|
| 226 |
+
{"role": "system", "content": system_prompt},
|
| 227 |
+
{
|
| 228 |
+
"role": "user",
|
| 229 |
+
"content": [
|
| 230 |
+
{"type": "text", "text": f"Question: {question}\nGround Truth: {ground_truth}\nLLM Response: {llm_response}"}
|
| 231 |
+
],
|
| 232 |
+
}
|
| 233 |
+
]
|
| 234 |
+
|
| 235 |
+
response = client.chat.completions.create(
|
| 236 |
+
model="gpt-4o-mini",
|
| 237 |
+
messages=messages,
|
| 238 |
+
response_format=response_format,
|
| 239 |
+
max_tokens=500,
|
| 240 |
+
temperature=0.0,
|
| 241 |
+
)
|
| 242 |
+
|
| 243 |
+
return response.choices[0].message.content
|
| 244 |
+
|
| 245 |
+
with open(input_file, "r", encoding="utf-8") as f:
|
| 246 |
+
data = json.load(f)
|
| 247 |
+
|
| 248 |
+
with open(dataset, "r", encoding="utf-8") as f:
|
| 249 |
+
dataset = json.load(f)
|
| 250 |
+
|
| 251 |
+
dataset = dataset[:3]
|
| 252 |
+
valid_ids = [item["idx"] for item in dataset if "idx" in item]
|
| 253 |
+
data_dict = {}
|
| 254 |
+
for item in dataset:
|
| 255 |
+
key = item["idx"]
|
| 256 |
+
data_dict[key] = {
|
| 257 |
+
"image": item["image"],
|
| 258 |
+
"question": item["question"],
|
| 259 |
+
"final_answer": item["final_answer"],
|
| 260 |
+
"steps": item["steps"]
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
# List to store results
|
| 264 |
+
evaluation_results = []
|
| 265 |
+
|
| 266 |
+
# Function to process each file
|
| 267 |
+
def process_file(item):
|
| 268 |
+
# breakpoint()
|
| 269 |
+
question = item["question"]
|
| 270 |
+
try:
|
| 271 |
+
idx = item["idx"]
|
| 272 |
+
except:
|
| 273 |
+
idx = item["id"]
|
| 274 |
+
|
| 275 |
+
if idx not in valid_ids:
|
| 276 |
+
return None
|
| 277 |
+
|
| 278 |
+
ground_truth = "**Step-by-Step Reasoning**: "+ data_dict[idx]['steps'] + " **Final Answer**: " + data_dict[idx]["final_answer"]
|
| 279 |
+
try:
|
| 280 |
+
llm_response = item["llm-response"]
|
| 281 |
+
except:
|
| 282 |
+
llm_response = item["answer"]
|
| 283 |
+
|
| 284 |
+
gt_final_answer = data_dict[idx]['final_answer']
|
| 285 |
+
llm_final_answer = extract_final_answer(llm_response)
|
| 286 |
+
|
| 287 |
+
# set mcq -1 for non MCQ questions
|
| 288 |
+
mcq = -1
|
| 289 |
+
gt = ""
|
| 290 |
+
llm = ""
|
| 291 |
+
if int(idx.rsplit("_",1)[-1]) in [2,3,4,5,8]:
|
| 292 |
+
gt, _ = extract_options(gt_final_answer)[0]
|
| 293 |
+
llm, _ = extract_options(llm_final_answer)[0]
|
| 294 |
+
|
| 295 |
+
if llm == gt:
|
| 296 |
+
mcq = 1
|
| 297 |
+
else:
|
| 298 |
+
mcq = 0
|
| 299 |
+
|
| 300 |
+
# Evaluate steps
|
| 301 |
+
res = {}
|
| 302 |
+
try:
|
| 303 |
+
res = evaluate_steps(question, ground_truth, llm_response)
|
| 304 |
+
res = ast.literal_eval(res)
|
| 305 |
+
except Exception as e:
|
| 306 |
+
print(f"Error processing item {idx}: {e}")
|
| 307 |
+
return None
|
| 308 |
+
|
| 309 |
+
res["id"] = idx
|
| 310 |
+
res["question"] = question
|
| 311 |
+
res["ground_truth"] = ground_truth
|
| 312 |
+
res["llm_response"] = llm_response
|
| 313 |
+
res["mcq"] = mcq
|
| 314 |
+
|
| 315 |
+
return res
|
| 316 |
+
|
| 317 |
+
# Process files in parallel
|
| 318 |
+
with ThreadPoolExecutor() as executor:
|
| 319 |
+
results = list(tqdm(executor.map(process_file, data), total=len(data), desc="Processing"))
|
| 320 |
+
|
| 321 |
+
# Remove None values from results
|
| 322 |
+
results = [r for r in results if r is not None]
|
| 323 |
+
|
| 324 |
+
# Save results to JSON
|
| 325 |
+
with open(output_file, "w", encoding="utf-8") as f_out:
|
| 326 |
+
json.dump(results, f_out, indent=4, ensure_ascii=False)
|
| 327 |
+
|
| 328 |
+
# Convert results to DataFrame and save as CSV
|
| 329 |
+
df = pd.DataFrame(results)
|
| 330 |
+
df.to_csv(csv_output_file, index=False)
|
| 331 |
+
|
| 332 |
+
# Accuracy for MCQs
|
| 333 |
+
df_mcq = df[df["mcq"] != -1]
|
| 334 |
+
mcq_accuracy = df_mcq["mcq"].mean()
|
| 335 |
+
print(f"MCQ Accuracy: {mcq_accuracy:.2%}")
|
| 336 |
+
|
| 337 |
+
# Normalized step evaluation
|
| 338 |
+
max_score = 10
|
| 339 |
+
percentage_correct = (df["Overall Score"].sum() / (len(df) * max_score)) * 100
|
| 340 |
+
print(f"Percentage of correct steps (normalized): {percentage_correct:.2f}%")
|
| 341 |
+
|
| 342 |
+
print(f"Results saved: JSON -> {output_file}, CSV -> {csv_output_file}")
|
evaluation/inference.py
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import itertools
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import random
|
| 6 |
+
import math
|
| 7 |
+
import re
|
| 8 |
+
import time
|
| 9 |
+
from functools import partial
|
| 10 |
+
|
| 11 |
+
import torch
|
| 12 |
+
import torchvision.transforms as T
|
| 13 |
+
from torchvision.transforms.functional import InterpolationMode
|
| 14 |
+
from transformers import AutoModel, AutoTokenizer
|
| 15 |
+
from PIL import Image
|
| 16 |
+
from tqdm import tqdm
|
| 17 |
+
|
| 18 |
+
import sys
|
| 19 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
| 20 |
+
root_dir = os.path.dirname(os.path.dirname(current_dir))
|
| 21 |
+
swift_path = os.path.join(root_dir, "third_party", "ms-swift-main")
|
| 22 |
+
if swift_path not in sys.path:
|
| 23 |
+
sys.path.append(swift_path)
|
| 24 |
+
|
| 25 |
+
from swift.llm import (
|
| 26 |
+
PtEngine, RequestConfig, safe_snapshot_download, get_model_tokenizer, get_template, InferRequest
|
| 27 |
+
)
|
| 28 |
+
from swift.tuners import Swift
|
| 29 |
+
|
| 30 |
+
ds_collections = {
|
| 31 |
+
'DriveLMMo1': {
|
| 32 |
+
'root': './data/DriveLMMo1_TEST.jsonl',
|
| 33 |
+
'max_new_tokens': 2000,
|
| 34 |
+
'min_new_tokens': 1,
|
| 35 |
+
'split': 'validation',
|
| 36 |
+
'image_root': './data/image2concat'
|
| 37 |
+
}
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
def collate_fn(batches, tokenizer):
|
| 42 |
+
# pixel_values = torch.cat([_['pixel_values'] for _ in batches], dim=0)
|
| 43 |
+
images = [_['images'] for _ in batches]
|
| 44 |
+
questions = [_['question'] for _ in batches]
|
| 45 |
+
answers = [_['answer'] for _ in batches]
|
| 46 |
+
data_ids = [_['data_id'] for _ in batches]
|
| 47 |
+
return images, questions, answers, data_ids
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
class DriveLMMo1Dataset(torch.utils.data.Dataset):
|
| 51 |
+
|
| 52 |
+
def __init__(self, root, split, prompt, image_path, point_path=None, input_size=224, dynamic_image_size=False,
|
| 53 |
+
use_thumbnail=False, max_num=6, ):
|
| 54 |
+
with open(root, 'r') as f:
|
| 55 |
+
self.data = [json.loads(line) for line in f.readlines()]
|
| 56 |
+
# data_val = json.load(f)
|
| 57 |
+
# merge all dataset
|
| 58 |
+
# self.data = concatenate_datasets(sub_dataset_list)
|
| 59 |
+
self.prompt = prompt
|
| 60 |
+
self.input_size = input_size
|
| 61 |
+
self.dynamic_image_size = dynamic_image_size
|
| 62 |
+
self.use_thumbnail = use_thumbnail
|
| 63 |
+
self.max_num = max_num
|
| 64 |
+
self.image_path = image_path
|
| 65 |
+
self.point_path = point_path
|
| 66 |
+
|
| 67 |
+
def __len__(self):
|
| 68 |
+
return len(self.data)
|
| 69 |
+
|
| 70 |
+
def __getitem__(self, idx):
|
| 71 |
+
|
| 72 |
+
data = self.data[idx]
|
| 73 |
+
data_id = data['id']
|
| 74 |
+
question = data['conversations'][0]['value'].strip()
|
| 75 |
+
|
| 76 |
+
image_file = os.path.join(self.image_path, data['image'])
|
| 77 |
+
image = Image.open(image_file).convert('RGB')
|
| 78 |
+
answer = data['conversations'][1]['value'].strip()
|
| 79 |
+
|
| 80 |
+
if self.dynamic_image_size:
|
| 81 |
+
pil_image = dynamic_preprocess(image, image_size=self.input_size,
|
| 82 |
+
use_thumbnail=self.use_thumbnail,
|
| 83 |
+
max_num=self.max_num)
|
| 84 |
+
images = pil_image
|
| 85 |
+
else:
|
| 86 |
+
images = [image]
|
| 87 |
+
|
| 88 |
+
return {
|
| 89 |
+
'question': self.prompt+'\n<image>\n'+question,
|
| 90 |
+
'images': image_file,
|
| 91 |
+
'answer': answer,
|
| 92 |
+
'data_id': data_id
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
class InferenceSampler(torch.utils.data.sampler.Sampler):
|
| 97 |
+
|
| 98 |
+
def __init__(self, size):
|
| 99 |
+
self._size = int(size)
|
| 100 |
+
assert size > 0
|
| 101 |
+
self._rank = torch.distributed.get_rank()
|
| 102 |
+
self._world_size = torch.distributed.get_world_size()
|
| 103 |
+
self._local_indices = self._get_local_indices(size, self._world_size, self._rank)
|
| 104 |
+
|
| 105 |
+
@staticmethod
|
| 106 |
+
def _get_local_indices(total_size, world_size, rank):
|
| 107 |
+
shard_size = total_size // world_size
|
| 108 |
+
left = total_size % world_size
|
| 109 |
+
shard_sizes = [shard_size + int(r < left) for r in range(world_size)]
|
| 110 |
+
|
| 111 |
+
begin = sum(shard_sizes[:rank])
|
| 112 |
+
end = min(sum(shard_sizes[:rank + 1]), total_size)
|
| 113 |
+
return range(begin, end)
|
| 114 |
+
|
| 115 |
+
def __iter__(self):
|
| 116 |
+
yield from self._local_indices
|
| 117 |
+
|
| 118 |
+
def __len__(self):
|
| 119 |
+
return len(self._local_indices)
|
| 120 |
+
|
| 121 |
+
def load_model(pretrained_model):
|
| 122 |
+
"""Load model and tokenizer"""
|
| 123 |
+
model = pretrained_model
|
| 124 |
+
template_type = None # None: default template_type
|
| 125 |
+
default_system = None # None: default_system
|
| 126 |
+
|
| 127 |
+
# Load models and conversation
|
| 128 |
+
model, tokenizer = get_model_tokenizer(model)
|
| 129 |
+
template_type = template_type or model.model_meta.template
|
| 130 |
+
template = get_template(template_type, tokenizer, default_system=default_system)
|
| 131 |
+
engine = PtEngine.from_model_template(model, template, max_batch_size=1)
|
| 132 |
+
return engine, model, tokenizer
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def retry_torch_distributed_barrier(max_retries=3, delay_seconds=5):
|
| 136 |
+
"""
|
| 137 |
+
Attempts to execute torch.distributed.barrier() with a retry mechanism
|
| 138 |
+
|
| 139 |
+
Args:
|
| 140 |
+
max_retries (int): Maximum number of retry attempts
|
| 141 |
+
delay_seconds (int): Delay in seconds between retry attempts
|
| 142 |
+
"""
|
| 143 |
+
retries = 0
|
| 144 |
+
while retries < max_retries:
|
| 145 |
+
try:
|
| 146 |
+
torch.distributed.barrier()
|
| 147 |
+
# Exit the function upon successful execution
|
| 148 |
+
return
|
| 149 |
+
except Exception as e:
|
| 150 |
+
retries += 1
|
| 151 |
+
print(f"torch.distributed.barrier() failed (retry {retries}/{max_retries}): {str(e)}")
|
| 152 |
+
print(f"Retrying after {delay_seconds} seconds...")
|
| 153 |
+
time.sleep(delay_seconds)
|
| 154 |
+
|
| 155 |
+
# Raise exception if barrier still fails after max retries
|
| 156 |
+
raise RuntimeError(f"torch.distributed.barrier() failed after {max_retries} retries")
|
| 157 |
+
|
| 158 |
+
def evaluate_chat_model():
|
| 159 |
+
random.seed(args.seed)
|
| 160 |
+
prompt = "When answering the question based on the provided image, follow a structured and logical reasoning process. Organize your response using the format, ensuring each step builds upon the previous one and clearly explains how the image(s) contribute to the solution. Your answer should be structured as Reasoning Steps: (step by step reasoning) Final Answer: (final answer) \n Question: "
|
| 161 |
+
for ds_name in args.datasets:
|
| 162 |
+
dataset = DriveLMMo1Dataset(
|
| 163 |
+
root=ds_collections[ds_name]['root'],
|
| 164 |
+
split=ds_collections[ds_name]['split'],
|
| 165 |
+
prompt=prompt,
|
| 166 |
+
image_path=ds_collections[ds_name]['image_root'],
|
| 167 |
+
# image_meta = ds_collections[ds_name]["image_meta"],
|
| 168 |
+
# input_size=image_size,
|
| 169 |
+
dynamic_image_size=args.dynamic,
|
| 170 |
+
# use_thumbnail=use_thumbnail,
|
| 171 |
+
max_num=args.max_num
|
| 172 |
+
)
|
| 173 |
+
dataloader = torch.utils.data.DataLoader(
|
| 174 |
+
dataset=dataset,
|
| 175 |
+
sampler=InferenceSampler(len(dataset)),
|
| 176 |
+
batch_size=args.batch_size,
|
| 177 |
+
num_workers=args.num_workers,
|
| 178 |
+
pin_memory=True,
|
| 179 |
+
drop_last=False,
|
| 180 |
+
collate_fn=partial(collate_fn, tokenizer=tokenizer),
|
| 181 |
+
)
|
| 182 |
+
|
| 183 |
+
outputs = []
|
| 184 |
+
for _, (images, questions, answers, data_ids) in tqdm(enumerate(dataloader)):
|
| 185 |
+
# pixel_values = pixel_values.to(torch.bfloat16).cuda()
|
| 186 |
+
|
| 187 |
+
generation_config = dict(
|
| 188 |
+
num_beams=args.num_beams,
|
| 189 |
+
max_new_tokens=ds_collections[ds_name]['max_new_tokens'],
|
| 190 |
+
min_new_tokens=ds_collections[ds_name]['min_new_tokens'],
|
| 191 |
+
do_sample=True if args.temperature > 0 else False,
|
| 192 |
+
temperature=args.temperature,
|
| 193 |
+
)
|
| 194 |
+
# pred = model.chat(
|
| 195 |
+
# tokenizer=tokenizer,
|
| 196 |
+
# pixel_values=pixel_values,
|
| 197 |
+
# question=questions[0],
|
| 198 |
+
# generation_config=generation_config
|
| 199 |
+
# )
|
| 200 |
+
# breakpoint()
|
| 201 |
+
|
| 202 |
+
infer_requests = [
|
| 203 |
+
InferRequest(messages=[
|
| 204 |
+
{'role': 'user', 'content': f"<image>{questions[0]}"}
|
| 205 |
+
],
|
| 206 |
+
images=images),
|
| 207 |
+
]
|
| 208 |
+
# breakpoint()
|
| 209 |
+
resp_list = engine.infer(infer_requests, RequestConfig(max_tokens=2000, temperature=args.temperature))
|
| 210 |
+
pred = resp_list[0].choices[0].message.content
|
| 211 |
+
# breakpoint()
|
| 212 |
+
preds = [pred]
|
| 213 |
+
|
| 214 |
+
for question, pred, answer, data_id in zip(questions, preds, answers, data_ids):
|
| 215 |
+
outputs.append({
|
| 216 |
+
'question': question,
|
| 217 |
+
'answer': pred,
|
| 218 |
+
'gt_answers': answer,
|
| 219 |
+
'id': data_id
|
| 220 |
+
})
|
| 221 |
+
|
| 222 |
+
# torch.distributed.barrier()
|
| 223 |
+
retry_torch_distributed_barrier(max_retries=15, delay_seconds=5)
|
| 224 |
+
|
| 225 |
+
world_size = torch.distributed.get_world_size()
|
| 226 |
+
merged_outputs = [None for _ in range(world_size)]
|
| 227 |
+
torch.distributed.all_gather_object(merged_outputs, json.dumps(outputs))
|
| 228 |
+
|
| 229 |
+
merged_outputs = [json.loads(_) for _ in merged_outputs]
|
| 230 |
+
merged_outputs = [_ for _ in itertools.chain.from_iterable(merged_outputs)]
|
| 231 |
+
|
| 232 |
+
if torch.distributed.get_rank() == 0:
|
| 233 |
+
print(f'Evaluating {ds_name} ...')
|
| 234 |
+
# time_prefix = time.strftime('%y%m%d%H%M%S', time.localtime())
|
| 235 |
+
# time_prefix = "qwen"
|
| 236 |
+
|
| 237 |
+
results_file = f'{ds_name}_{args.output_name}.json'
|
| 238 |
+
output_path = os.path.join(args.out_dir, results_file)
|
| 239 |
+
|
| 240 |
+
# breakpoint()
|
| 241 |
+
with open(output_path, 'w') as f:
|
| 242 |
+
json.dump(merged_outputs, f, indent=4)
|
| 243 |
+
print('Results saved to {}'.format(output_path))
|
| 244 |
+
|
| 245 |
+
|
| 246 |
+
if __name__ == '__main__':
|
| 247 |
+
parser = argparse.ArgumentParser()
|
| 248 |
+
parser.add_argument('--checkpoint', type=str, default='')
|
| 249 |
+
parser.add_argument('--datasets', type=str, default='DriveLMMo1')
|
| 250 |
+
parser.add_argument('--batch-size', type=int, default=1)
|
| 251 |
+
parser.add_argument('--num-workers', type=int, default=4)
|
| 252 |
+
parser.add_argument('--num-beams', type=int, default=1)
|
| 253 |
+
parser.add_argument('--temperature', type=float, default=0.0)
|
| 254 |
+
parser.add_argument('--out-dir', type=str, default='results')
|
| 255 |
+
parser.add_argument('--output_name', type=str, default='qwen_32B_swift')
|
| 256 |
+
parser.add_argument('--seed', type=int, default=0)
|
| 257 |
+
parser.add_argument('--dynamic', action='store_true', default=False)
|
| 258 |
+
parser.add_argument('--max-num', type=int, default=12)
|
| 259 |
+
parser.add_argument('--load-in-8bit', action='store_true')
|
| 260 |
+
parser.add_argument('--load-in-4bit', action='store_true')
|
| 261 |
+
parser.add_argument('--auto', action='store_true')
|
| 262 |
+
args = parser.parse_args()
|
| 263 |
+
|
| 264 |
+
if not os.path.exists(args.out_dir):
|
| 265 |
+
os.makedirs(args.out_dir, exist_ok=True)
|
| 266 |
+
|
| 267 |
+
args.datasets = args.datasets.split(',')
|
| 268 |
+
print('datasets:', args.datasets)
|
| 269 |
+
assert args.batch_size == 1, 'Only batch size 1 is supported'
|
| 270 |
+
|
| 271 |
+
torch.distributed.init_process_group(
|
| 272 |
+
backend='nccl',
|
| 273 |
+
world_size=int(os.getenv('WORLD_SIZE', '1')),
|
| 274 |
+
rank=int(os.getenv('RANK', '0')),
|
| 275 |
+
)
|
| 276 |
+
|
| 277 |
+
torch.cuda.set_device(int(os.getenv('LOCAL_RANK', 0)))
|
| 278 |
+
|
| 279 |
+
# model, tokenizer = load_model_and_tokenizer()
|
| 280 |
+
# engine, model, tokenizer = load_model("/high_perf_store/mlinfra-vepfs/zy/qwen_vla/Qwen2.5-VL-32B-Instruct")
|
| 281 |
+
engine, model, tokenizer = load_model(args.checkpoint)
|
| 282 |
+
# image_size = model.config.force_image_size or model.config.vision_config.image_size
|
| 283 |
+
# use_thumbnail = model.config.use_thumbnail
|
| 284 |
+
|
| 285 |
+
total_params = sum(p.numel() for p in model.parameters()) / 1e9
|
| 286 |
+
if total_params > 20 or args.dynamic:
|
| 287 |
+
args.num_beams = 1
|
| 288 |
+
print(f'[test] total_params: {total_params}B, use num_beams: {args.num_beams}')
|
| 289 |
+
else:
|
| 290 |
+
print(f'[test] total_params: {total_params}B')
|
| 291 |
+
# print(f'[test] image_size: {image_size}')
|
| 292 |
+
# print(f'[test] template: {model.config.template}')
|
| 293 |
+
# print(f'[test] dynamic_image_size: {args.dynamic}')
|
| 294 |
+
# print(f'[test] use_thumbnail: {use_thumbnail}')
|
| 295 |
+
print(f'[test] max_num: {args.max_num}')
|
| 296 |
+
|
| 297 |
+
evaluate_chat_model()
|
| 298 |
+
|
evaluation/inference_agentthink.py
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import itertools
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import random
|
| 6 |
+
import math
|
| 7 |
+
import re
|
| 8 |
+
import time
|
| 9 |
+
from functools import partial
|
| 10 |
+
|
| 11 |
+
import torch
|
| 12 |
+
import torchvision.transforms as T
|
| 13 |
+
from torchvision.transforms.functional import InterpolationMode
|
| 14 |
+
from transformers import AutoModel, AutoTokenizer
|
| 15 |
+
from PIL import Image
|
| 16 |
+
from tqdm import tqdm
|
| 17 |
+
|
| 18 |
+
import sys
|
| 19 |
+
# sys.path.append(f"{os.getcwd()}/third_party/ms-swift-main")
|
| 20 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
| 21 |
+
root_dir = os.path.dirname(os.path.dirname(current_dir))
|
| 22 |
+
swift_path = os.path.join(root_dir, "third_party", "ms-swift-main")
|
| 23 |
+
if swift_path not in sys.path:
|
| 24 |
+
sys.path.append(swift_path)
|
| 25 |
+
from swift.llm import (
|
| 26 |
+
PtEngine, RequestConfig, safe_snapshot_download, get_model_tokenizer, get_template, InferRequest
|
| 27 |
+
)
|
| 28 |
+
from swift.tuners import Swift
|
| 29 |
+
|
| 30 |
+
ds_collections = {
|
| 31 |
+
'DriveLMMo1': {
|
| 32 |
+
# 'root': './data/DriveLMMo1_TEST.jsonl',
|
| 33 |
+
'root': './data/DriveLMMo1_TEST_tool_results.jsonl',
|
| 34 |
+
# 'root': './DriveLMM-o1-main/data/DriveLMMo1_TEST_tool_results.jsonl',
|
| 35 |
+
'max_new_tokens': 2000,
|
| 36 |
+
'min_new_tokens': 1,
|
| 37 |
+
'split': 'validation',
|
| 38 |
+
'image_root': './data/image2concat'
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
def collate_fn(batches, tokenizer):
|
| 43 |
+
# pixel_values = torch.cat([_['pixel_values'] for _ in batches], dim=0)
|
| 44 |
+
images = [_['images'] for _ in batches]
|
| 45 |
+
questions = [_['question'] for _ in batches]
|
| 46 |
+
answers = [_['answer'] for _ in batches]
|
| 47 |
+
reasons = [_['reason'] for _ in batches]
|
| 48 |
+
data_ids = [_['data_id'] for _ in batches]
|
| 49 |
+
return images, questions, answers, reasons, data_ids
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
class DriveLMMo1Dataset(torch.utils.data.Dataset):
|
| 53 |
+
|
| 54 |
+
def __init__(self, root, split, prompt, image_path, point_path=None, input_size=224, dynamic_image_size=False,
|
| 55 |
+
use_thumbnail=False, max_num=6, tool_result_json:str=None):
|
| 56 |
+
self.data_path = root
|
| 57 |
+
with open(root, 'r') as f:
|
| 58 |
+
self.data = [json.loads(line) for line in f.readlines()]
|
| 59 |
+
# data_val = json.load(f)
|
| 60 |
+
# merge all dataset
|
| 61 |
+
# self.data = concatenate_datasets(sub_dataset_list)
|
| 62 |
+
|
| 63 |
+
self.prompt = prompt
|
| 64 |
+
self.input_size = input_size
|
| 65 |
+
self.dynamic_image_size = dynamic_image_size
|
| 66 |
+
self.use_thumbnail = use_thumbnail
|
| 67 |
+
self.max_num = max_num
|
| 68 |
+
self.image_path = image_path
|
| 69 |
+
self.point_path = point_path
|
| 70 |
+
|
| 71 |
+
def __len__(self):
|
| 72 |
+
return len(self.data)
|
| 73 |
+
|
| 74 |
+
def __getitem__(self, idx):
|
| 75 |
+
|
| 76 |
+
data = self.data[idx]
|
| 77 |
+
data_id = data['id']
|
| 78 |
+
question = data['conversations'][0]['value'].strip()
|
| 79 |
+
|
| 80 |
+
image_file = os.path.join(self.image_path, data['image'])
|
| 81 |
+
image = Image.open(image_file).convert('RGB')
|
| 82 |
+
answer = data['conversations'][1]['value'].strip()
|
| 83 |
+
reason_gt = data['conversations'][2]['value'].strip()
|
| 84 |
+
if 'tool_results' in self.data_path:
|
| 85 |
+
tool_result = data['tool_result']
|
| 86 |
+
system_prompt = data['system_prompts']
|
| 87 |
+
reason = f"{system_prompt}\nTo answer the question, please refer to the tool recomendation results which show in the following dict: (Note: the numerical results are all based on the ego-car coordination axis.)\n{tool_result}"
|
| 88 |
+
if self.dynamic_image_size:
|
| 89 |
+
pil_image = dynamic_preprocess(image, image_size=self.input_size,
|
| 90 |
+
use_thumbnail=self.use_thumbnail,
|
| 91 |
+
max_num=self.max_num)
|
| 92 |
+
images = pil_image
|
| 93 |
+
else:
|
| 94 |
+
images = [image]
|
| 95 |
+
|
| 96 |
+
return {
|
| 97 |
+
'question': self.prompt+'\n<image>\n'+question,
|
| 98 |
+
'images': image_file,
|
| 99 |
+
'answer': answer,
|
| 100 |
+
'reason': reason,
|
| 101 |
+
'data_id': data_id
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
class InferenceSampler(torch.utils.data.sampler.Sampler):
|
| 106 |
+
|
| 107 |
+
def __init__(self, size):
|
| 108 |
+
self._size = int(size)
|
| 109 |
+
assert size > 0
|
| 110 |
+
self._rank = torch.distributed.get_rank()
|
| 111 |
+
self._world_size = torch.distributed.get_world_size()
|
| 112 |
+
self._local_indices = self._get_local_indices(size, self._world_size, self._rank)
|
| 113 |
+
|
| 114 |
+
@staticmethod
|
| 115 |
+
def _get_local_indices(total_size, world_size, rank):
|
| 116 |
+
shard_size = total_size // world_size
|
| 117 |
+
left = total_size % world_size
|
| 118 |
+
shard_sizes = [shard_size + int(r < left) for r in range(world_size)]
|
| 119 |
+
|
| 120 |
+
begin = sum(shard_sizes[:rank])
|
| 121 |
+
end = min(sum(shard_sizes[:rank + 1]), total_size)
|
| 122 |
+
return range(begin, end)
|
| 123 |
+
|
| 124 |
+
def __iter__(self):
|
| 125 |
+
yield from self._local_indices
|
| 126 |
+
|
| 127 |
+
def __len__(self):
|
| 128 |
+
return len(self._local_indices)
|
| 129 |
+
|
| 130 |
+
def load_model(pretrained_model):
|
| 131 |
+
"""Load model and tokenizer"""
|
| 132 |
+
model = pretrained_model
|
| 133 |
+
template_type = None # None: default template_type
|
| 134 |
+
default_system = None # None: default_system
|
| 135 |
+
|
| 136 |
+
# Load models and conversation
|
| 137 |
+
model, tokenizer = get_model_tokenizer(model)
|
| 138 |
+
template_type = template_type or model.model_meta.template
|
| 139 |
+
template = get_template(template_type, tokenizer, default_system=default_system)
|
| 140 |
+
engine = PtEngine.from_model_template(model, template, max_batch_size=1)
|
| 141 |
+
return engine, model, tokenizer
|
| 142 |
+
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
def retry_torch_distributed_barrier(max_retries=3, delay_seconds=5):
|
| 146 |
+
"""
|
| 147 |
+
Attempts to execute torch.distributed.barrier() with a retry mechanism
|
| 148 |
+
|
| 149 |
+
Args:
|
| 150 |
+
max_retries (int): Maximum number of retry attempts
|
| 151 |
+
delay_seconds (int): Delay in seconds between retry attempts
|
| 152 |
+
"""
|
| 153 |
+
retries = 0
|
| 154 |
+
while retries < max_retries:
|
| 155 |
+
try:
|
| 156 |
+
torch.distributed.barrier()
|
| 157 |
+
# Exit the function upon successful execution
|
| 158 |
+
return
|
| 159 |
+
except Exception as e:
|
| 160 |
+
retries += 1
|
| 161 |
+
print(f"torch.distributed.barrier() failed (retry {retries}/{max_retries}): {str(e)}")
|
| 162 |
+
print(f"Retrying after {delay_seconds} seconds...")
|
| 163 |
+
time.sleep(delay_seconds)
|
| 164 |
+
|
| 165 |
+
# Raise exception if barrier still fails after max retries
|
| 166 |
+
raise RuntimeError(f"torch.distributed.barrier() failed after {max_retries} retries")
|
| 167 |
+
|
| 168 |
+
def evaluate_chat_model():
|
| 169 |
+
random.seed(args.seed)
|
| 170 |
+
prompt = "When answering the question based on the provided image, follow a structured and logical reasoning process. Organize your response using the format, ensuring each step builds upon the previous one and clearly explains how the image(s) contribute to the solution. Your answer should be structured as Reasoning Steps: (step by step reasoning) Final Answer: (final answer) \n Question: "
|
| 171 |
+
|
| 172 |
+
for ds_name in args.datasets:
|
| 173 |
+
dataset = DriveLMMo1Dataset(
|
| 174 |
+
root=ds_collections[ds_name]['root'],
|
| 175 |
+
split=ds_collections[ds_name]['split'],
|
| 176 |
+
prompt=prompt,
|
| 177 |
+
image_path=ds_collections[ds_name]['image_root'],
|
| 178 |
+
# image_meta = ds_collections[ds_name]["image_meta"],
|
| 179 |
+
# input_size=image_size,
|
| 180 |
+
dynamic_image_size=args.dynamic,
|
| 181 |
+
# use_thumbnail=use_thumbnail,
|
| 182 |
+
max_num=args.max_num
|
| 183 |
+
)
|
| 184 |
+
dataloader = torch.utils.data.DataLoader(
|
| 185 |
+
dataset=dataset,
|
| 186 |
+
sampler=InferenceSampler(len(dataset)),
|
| 187 |
+
batch_size=args.batch_size,
|
| 188 |
+
num_workers=args.num_workers,
|
| 189 |
+
pin_memory=True,
|
| 190 |
+
drop_last=False,
|
| 191 |
+
collate_fn=partial(collate_fn, tokenizer=tokenizer),
|
| 192 |
+
)
|
| 193 |
+
|
| 194 |
+
outputs = []
|
| 195 |
+
for _, (images, questions, answers, reasons, data_ids) in tqdm(enumerate(dataloader)):
|
| 196 |
+
# pixel_values = pixel_values.to(torch.bfloat16).cuda()
|
| 197 |
+
|
| 198 |
+
generation_config = dict(
|
| 199 |
+
num_beams=args.num_beams,
|
| 200 |
+
max_new_tokens=ds_collections[ds_name]['max_new_tokens'],
|
| 201 |
+
min_new_tokens=ds_collections[ds_name]['min_new_tokens'],
|
| 202 |
+
do_sample=True if args.temperature > 0 else False,
|
| 203 |
+
temperature=args.temperature,
|
| 204 |
+
)
|
| 205 |
+
|
| 206 |
+
reason_prompt = reasons[0]
|
| 207 |
+
infer_requests = [
|
| 208 |
+
InferRequest(messages=[
|
| 209 |
+
{'role': 'system', 'content': "You are the helpful assistant!"},
|
| 210 |
+
{'role': 'user', 'content': f"<image>{questions[0]}\n{reason_prompt}"}
|
| 211 |
+
],
|
| 212 |
+
images=images),
|
| 213 |
+
]
|
| 214 |
+
|
| 215 |
+
resp_list = engine.infer(infer_requests, RequestConfig(max_tokens=12000, temperature=args.temperature))
|
| 216 |
+
pred = resp_list[0].choices[0].message.content
|
| 217 |
+
|
| 218 |
+
preds = [pred]
|
| 219 |
+
|
| 220 |
+
for question, pred, answer, data_id in zip(questions, preds, answers, data_ids):
|
| 221 |
+
outputs.append({
|
| 222 |
+
'question': question,
|
| 223 |
+
'answer': pred,
|
| 224 |
+
'gt_answers': answer,
|
| 225 |
+
'id': data_id
|
| 226 |
+
})
|
| 227 |
+
|
| 228 |
+
# torch.distributed.barrier()
|
| 229 |
+
retry_torch_distributed_barrier(max_retries=15, delay_seconds=5)
|
| 230 |
+
|
| 231 |
+
world_size = torch.distributed.get_world_size()
|
| 232 |
+
merged_outputs = [None for _ in range(world_size)]
|
| 233 |
+
torch.distributed.all_gather_object(merged_outputs, json.dumps(outputs))
|
| 234 |
+
|
| 235 |
+
merged_outputs = [json.loads(_) for _ in merged_outputs]
|
| 236 |
+
merged_outputs = [_ for _ in itertools.chain.from_iterable(merged_outputs)]
|
| 237 |
+
|
| 238 |
+
if torch.distributed.get_rank() == 0:
|
| 239 |
+
print(f'Evaluating {ds_name} ...')
|
| 240 |
+
# time_prefix = time.strftime('%y%m%d%H%M%S', time.localtime())
|
| 241 |
+
# time_prefix = "qwen"
|
| 242 |
+
|
| 243 |
+
results_file = f'{ds_name}_{args.output_name}.json'
|
| 244 |
+
output_path = os.path.join(args.out_dir, results_file)
|
| 245 |
+
|
| 246 |
+
# breakpoint()
|
| 247 |
+
with open(output_path, 'w') as f:
|
| 248 |
+
json.dump(merged_outputs, f, indent=4)
|
| 249 |
+
print('Results saved to {}'.format(output_path))
|
| 250 |
+
|
| 251 |
+
|
| 252 |
+
if __name__ == '__main__':
|
| 253 |
+
parser = argparse.ArgumentParser()
|
| 254 |
+
parser.add_argument('--checkpoint', type=str, default='')
|
| 255 |
+
parser.add_argument('--datasets', type=str, default='DriveLMMo1')
|
| 256 |
+
parser.add_argument('--batch-size', type=int, default=1)
|
| 257 |
+
parser.add_argument('--num-workers', type=int, default=4)
|
| 258 |
+
parser.add_argument('--num-beams', type=int, default=1)
|
| 259 |
+
parser.add_argument('--temperature', type=float, default=0.0)
|
| 260 |
+
parser.add_argument('--out-dir', type=str, default='results')
|
| 261 |
+
parser.add_argument('--output_name', type=str, default='qwen_32B_swift')
|
| 262 |
+
parser.add_argument('--seed', type=int, default=0)
|
| 263 |
+
parser.add_argument('--dynamic', action='store_true', default=False)
|
| 264 |
+
parser.add_argument('--max-num', type=int, default=12)
|
| 265 |
+
parser.add_argument('--load-in-8bit', action='store_true')
|
| 266 |
+
parser.add_argument('--load-in-4bit', action='store_true')
|
| 267 |
+
parser.add_argument('--auto', action='store_true')
|
| 268 |
+
args = parser.parse_args()
|
| 269 |
+
|
| 270 |
+
if not os.path.exists(args.out_dir):
|
| 271 |
+
os.makedirs(args.out_dir, exist_ok=True)
|
| 272 |
+
|
| 273 |
+
args.datasets = args.datasets.split(',')
|
| 274 |
+
print('datasets:', args.datasets)
|
| 275 |
+
assert args.batch_size == 1, 'Only batch size 1 is supported'
|
| 276 |
+
|
| 277 |
+
torch.distributed.init_process_group(
|
| 278 |
+
backend='nccl',
|
| 279 |
+
world_size=int(os.getenv('WORLD_SIZE', '1')),
|
| 280 |
+
rank=int(os.getenv('RANK', '0')),
|
| 281 |
+
)
|
| 282 |
+
|
| 283 |
+
torch.cuda.set_device(int(os.getenv('LOCAL_RANK', 0)))
|
| 284 |
+
|
| 285 |
+
# model, tokenizer = load_model_and_tokenizer()
|
| 286 |
+
# engine, model, tokenizer = load_model("qwen_vla/Qwen2.5-VL-32B-Instruct")
|
| 287 |
+
engine, model, tokenizer = load_model(args.checkpoint)
|
| 288 |
+
|
| 289 |
+
|
| 290 |
+
total_params = sum(p.numel() for p in model.parameters()) / 1e9
|
| 291 |
+
if total_params > 20 or args.dynamic:
|
| 292 |
+
args.num_beams = 1
|
| 293 |
+
print(f'[test] total_params: {total_params}B, use num_beams: {args.num_beams}')
|
| 294 |
+
else:
|
| 295 |
+
print(f'[test] total_params: {total_params}B')
|
| 296 |
+
|
| 297 |
+
print(f'[test] max_num: {args.max_num}')
|
| 298 |
+
|
| 299 |
+
evaluate_chat_model()
|
| 300 |
+
|
evaluation/inference_withtool.py
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import itertools
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import random
|
| 6 |
+
import math
|
| 7 |
+
import re
|
| 8 |
+
import time
|
| 9 |
+
from functools import partial
|
| 10 |
+
|
| 11 |
+
import torch
|
| 12 |
+
import torchvision.transforms as T
|
| 13 |
+
from torchvision.transforms.functional import InterpolationMode
|
| 14 |
+
from transformers import AutoModel, AutoTokenizer
|
| 15 |
+
from PIL import Image
|
| 16 |
+
from tqdm import tqdm
|
| 17 |
+
|
| 18 |
+
import sys
|
| 19 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
| 20 |
+
root_dir = os.path.dirname(os.path.dirname(current_dir))
|
| 21 |
+
swift_path = os.path.join(root_dir, "third_party", "ms-swift-main")
|
| 22 |
+
if swift_path not in sys.path:
|
| 23 |
+
sys.path.append(swift_path)
|
| 24 |
+
|
| 25 |
+
from swift.llm import (
|
| 26 |
+
PtEngine, RequestConfig, safe_snapshot_download, get_model_tokenizer, get_template, InferRequest
|
| 27 |
+
)
|
| 28 |
+
from swift.tuners import Swift
|
| 29 |
+
|
| 30 |
+
from scripts.tools.agentthink_data_generater_pipeline import generate_func_prompt
|
| 31 |
+
from scripts.tools.tool_libraries_simple import FuncAgent
|
| 32 |
+
func_agent = FuncAgent()
|
| 33 |
+
|
| 34 |
+
ds_collections = {
|
| 35 |
+
'DriveLMMo1': {
|
| 36 |
+
'root': './data/DriveLMMo1_TEST.jsonl',
|
| 37 |
+
'max_new_tokens': 2000,
|
| 38 |
+
'min_new_tokens': 1,
|
| 39 |
+
'split': 'validation',
|
| 40 |
+
'image_root': './data/image2concat'
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def collate_fn(batches, tokenizer):
|
| 46 |
+
# pixel_values = torch.cat([_['pixel_values'] for _ in batches], dim=0)
|
| 47 |
+
images = [_['images'] for _ in batches]
|
| 48 |
+
questions = [_['question'] for _ in batches]
|
| 49 |
+
answers = [_['answer'] for _ in batches]
|
| 50 |
+
data_ids = [_['data_id'] for _ in batches]
|
| 51 |
+
return images, questions, answers, data_ids
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
class DriveLMMo1Dataset(torch.utils.data.Dataset):
|
| 55 |
+
|
| 56 |
+
def __init__(self, root, split, prompt, image_path, point_path=None, input_size=224, dynamic_image_size=False,
|
| 57 |
+
use_thumbnail=False, max_num=6, ):
|
| 58 |
+
with open(root, 'r') as f:
|
| 59 |
+
self.data = [json.loads(line) for line in f.readlines()]
|
| 60 |
+
# data_val = json.load(f)
|
| 61 |
+
# merge all dataset
|
| 62 |
+
# self.data = concatenate_datasets(sub_dataset_list)
|
| 63 |
+
self.prompt = prompt
|
| 64 |
+
self.input_size = input_size
|
| 65 |
+
self.dynamic_image_size = dynamic_image_size
|
| 66 |
+
self.use_thumbnail = use_thumbnail
|
| 67 |
+
self.max_num = max_num
|
| 68 |
+
|
| 69 |
+
self.image_path = image_path
|
| 70 |
+
self.point_path = point_path
|
| 71 |
+
|
| 72 |
+
def __len__(self):
|
| 73 |
+
return len(self.data)
|
| 74 |
+
|
| 75 |
+
def __getitem__(self, idx):
|
| 76 |
+
|
| 77 |
+
data = self.data[idx]
|
| 78 |
+
data_id = data['id']
|
| 79 |
+
question = data['conversations'][0]['value'].strip()
|
| 80 |
+
|
| 81 |
+
image_file = os.path.join(self.image_path, data['image'])
|
| 82 |
+
image = Image.open(image_file).convert('RGB')
|
| 83 |
+
answer = data['conversations'][1]['value'].strip()
|
| 84 |
+
|
| 85 |
+
if self.dynamic_image_size:
|
| 86 |
+
pil_image = dynamic_preprocess(image, image_size=self.input_size,
|
| 87 |
+
use_thumbnail=self.use_thumbnail,
|
| 88 |
+
max_num=self.max_num)
|
| 89 |
+
images = pil_image
|
| 90 |
+
else:
|
| 91 |
+
images = [image]
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
return {
|
| 95 |
+
'question': self.prompt+'\n<image>\n'+question,
|
| 96 |
+
'images': image_file,
|
| 97 |
+
'answer': answer,
|
| 98 |
+
'data_id': data_id
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
class InferenceSampler(torch.utils.data.sampler.Sampler):
|
| 103 |
+
|
| 104 |
+
def __init__(self, size):
|
| 105 |
+
self._size = int(size)
|
| 106 |
+
assert size > 0
|
| 107 |
+
self._rank = torch.distributed.get_rank()
|
| 108 |
+
self._world_size = torch.distributed.get_world_size()
|
| 109 |
+
self._local_indices = self._get_local_indices(size, self._world_size, self._rank)
|
| 110 |
+
|
| 111 |
+
@staticmethod
|
| 112 |
+
def _get_local_indices(total_size, world_size, rank):
|
| 113 |
+
shard_size = total_size // world_size
|
| 114 |
+
left = total_size % world_size
|
| 115 |
+
shard_sizes = [shard_size + int(r < left) for r in range(world_size)]
|
| 116 |
+
|
| 117 |
+
begin = sum(shard_sizes[:rank])
|
| 118 |
+
end = min(sum(shard_sizes[:rank + 1]), total_size)
|
| 119 |
+
return range(begin, end)
|
| 120 |
+
|
| 121 |
+
def __iter__(self):
|
| 122 |
+
yield from self._local_indices
|
| 123 |
+
|
| 124 |
+
def __len__(self):
|
| 125 |
+
return len(self._local_indices)
|
| 126 |
+
|
| 127 |
+
def load_model(pretrained_model):
|
| 128 |
+
"""Load model and tokenizer"""
|
| 129 |
+
model = pretrained_model
|
| 130 |
+
template_type = None # None: default template_type
|
| 131 |
+
default_system = None # None: default_system
|
| 132 |
+
|
| 133 |
+
# Load models and conversation
|
| 134 |
+
model, tokenizer = get_model_tokenizer(model)
|
| 135 |
+
template_type = template_type or model.model_meta.template
|
| 136 |
+
template = get_template(template_type, tokenizer, default_system=default_system)
|
| 137 |
+
engine = PtEngine.from_model_template(model, template, max_batch_size=1)
|
| 138 |
+
return engine, model, tokenizer
|
| 139 |
+
|
| 140 |
+
|
| 141 |
+
def retry_torch_distributed_barrier(max_retries=3, delay_seconds=5):
|
| 142 |
+
"""
|
| 143 |
+
Attempts to execute torch.distributed.barrier() with a retry mechanism
|
| 144 |
+
|
| 145 |
+
Args:
|
| 146 |
+
max_retries (int): Maximum number of retry attempts
|
| 147 |
+
delay_seconds (int): Delay in seconds between retry attempts
|
| 148 |
+
"""
|
| 149 |
+
retries = 0
|
| 150 |
+
while retries < max_retries:
|
| 151 |
+
try:
|
| 152 |
+
torch.distributed.barrier()
|
| 153 |
+
# Exit the function upon successful execution
|
| 154 |
+
return
|
| 155 |
+
except Exception as e:
|
| 156 |
+
retries += 1
|
| 157 |
+
print(f"torch.distributed.barrier() failed (retry {retries}/{max_retries}): {str(e)}")
|
| 158 |
+
print(f"Retrying after {delay_seconds} seconds...")
|
| 159 |
+
time.sleep(delay_seconds)
|
| 160 |
+
|
| 161 |
+
# Raise exception if barrier still fails after max retries
|
| 162 |
+
raise RuntimeError(f"torch.distributed.barrier() failed after {max_retries} retries")
|
| 163 |
+
|
| 164 |
+
def evaluate_chat_model():
|
| 165 |
+
random.seed(args.seed)
|
| 166 |
+
# prompt = "When answering the question based on the provided image, follow a structured and logical reasoning process. Organize your response using the format, ensuring each step builds upon the previous one and clearly explains how the image(s) contribute to the solution. Your answer should be structured as Reasoning Steps: (step by step reasoning) Final Answer: (final answer) \n Question: "
|
| 167 |
+
tool_info_intro = generate_func_prompt()
|
| 168 |
+
base_prompt = "When addressing the question presented in the image, please adhere to a structured and logical reasoning process. Ensure that your chain of reasoning consists of no more than six steps to maintain clarity and conciseness."
|
| 169 |
+
tool_use_info = f'For each atomic step of the reasoning chain, you may choose the appropriate tools and their parameters (if blank, the value of "parameters" should be [""]). Refer this list:[{tool_info_intro}] as value of element "Tool" '
|
| 170 |
+
output_format_prompt = """Generate a sub-question for each action or reasoning step like(perception, prediction or planning information) as value of element "Sub".
|
| 171 |
+
Also, generate answer for each Sub as value of element "Guess_Answer" if you make sure it is correct.
|
| 172 |
+
Also, extract the key terms from the content related to the "Guess Answer" and list them as the value of the "keywords" element.
|
| 173 |
+
For each keyword, consider 2-5 synonyms or alternative expressions.
|
| 174 |
+
In addition, if you can not answer some sub-questions, make the element "Missing_flag" value “False”, otherwise, make it “True”.
|
| 175 |
+
And "next_action" should be either "continue reasoning" or "conclude". Continue generating steps until the reasoning chain is complete.
|
| 176 |
+
Final, add the final answer as the value of the "final_answer". Also, you should refer the final answer for extracting the key words and list these key words as the value of the "final_answer_keywords".
|
| 177 |
+
For example:
|
| 178 |
+
|
| 179 |
+
{
|
| 180 |
+
"Question": "",
|
| 181 |
+
"Chain": [
|
| 182 |
+
{
|
| 183 |
+
"Tool": {"function_name":"open vocabulary detector", "parameters":["", ""]},
|
| 184 |
+
"Sub": "",
|
| 185 |
+
"Guess_Answer": "",
|
| 186 |
+
"key_words": ["words1", "words2", ...],
|
| 187 |
+
"Missing_flag": "",
|
| 188 |
+
"next_action": "continue reasoning"
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"Tool": {"function_name":"depth_estimator", "parameters":["", ""]},
|
| 192 |
+
"Sub": "",
|
| 193 |
+
"Guess_Answer": "",
|
| 194 |
+
"key_words": ["words1", "words2", ...],
|
| 195 |
+
"Missing_flag": "",
|
| 196 |
+
"next_action": "conclude"
|
| 197 |
+
}
|
| 198 |
+
],
|
| 199 |
+
"final_answer_keywords": ["words1", "words2", ...],
|
| 200 |
+
"final_answer": ""
|
| 201 |
+
}
|
| 202 |
+
STRICTLY FOLLOW THE JSON RESPONSE FORMAT. THE RESPONDE SHOULD START WITH "{". DO NOT START WITH "```json" OR ANYTHING ELSE."""
|
| 203 |
+
prompt = base_prompt + tool_use_info + output_format_prompt
|
| 204 |
+
for ds_name in args.datasets:
|
| 205 |
+
dataset = DriveLMMo1Dataset(
|
| 206 |
+
root=ds_collections[ds_name]['root'],
|
| 207 |
+
split=ds_collections[ds_name]['split'],
|
| 208 |
+
prompt=prompt,
|
| 209 |
+
image_path=ds_collections[ds_name]['image_root'],
|
| 210 |
+
# image_meta = ds_collections[ds_name]["image_meta"],
|
| 211 |
+
# input_size=image_size,
|
| 212 |
+
dynamic_image_size=args.dynamic,
|
| 213 |
+
# use_thumbnail=use_thumbnail,
|
| 214 |
+
max_num=args.max_num
|
| 215 |
+
)
|
| 216 |
+
dataloader = torch.utils.data.DataLoader(
|
| 217 |
+
dataset=dataset,
|
| 218 |
+
sampler=InferenceSampler(len(dataset)),
|
| 219 |
+
batch_size=args.batch_size,
|
| 220 |
+
num_workers=args.num_workers,
|
| 221 |
+
pin_memory=True,
|
| 222 |
+
drop_last=False,
|
| 223 |
+
collate_fn=partial(collate_fn, tokenizer=tokenizer),
|
| 224 |
+
)
|
| 225 |
+
|
| 226 |
+
outputs = []
|
| 227 |
+
for _, (images, questions, answers, data_ids) in tqdm(enumerate(dataloader)):
|
| 228 |
+
# pixel_values = pixel_values.to(torch.bfloat16).cuda()
|
| 229 |
+
|
| 230 |
+
generation_config = dict(
|
| 231 |
+
num_beams=args.num_beams,
|
| 232 |
+
max_new_tokens=ds_collections[ds_name]['max_new_tokens'],
|
| 233 |
+
min_new_tokens=ds_collections[ds_name]['min_new_tokens'],
|
| 234 |
+
do_sample=True if args.temperature > 0 else False,
|
| 235 |
+
temperature=args.temperature,
|
| 236 |
+
)
|
| 237 |
+
|
| 238 |
+
|
| 239 |
+
infer_requests = [
|
| 240 |
+
InferRequest(messages=[
|
| 241 |
+
{'role': 'user', 'content': f"<image>{questions[0]}"}
|
| 242 |
+
],
|
| 243 |
+
images=images),
|
| 244 |
+
]
|
| 245 |
+
# breakpoint()
|
| 246 |
+
resp_list = engine.infer(infer_requests, RequestConfig(max_tokens=2000, temperature=args.temperature))
|
| 247 |
+
pred = resp_list[0].choices[0].message.content
|
| 248 |
+
# filter those wrong format
|
| 249 |
+
try:
|
| 250 |
+
with open(os.path.join(args.out_dir, 'filter.json'), 'w') as f:
|
| 251 |
+
json.dump(pred, f, indent=4)
|
| 252 |
+
except:
|
| 253 |
+
continue
|
| 254 |
+
|
| 255 |
+
preds = [pred]
|
| 256 |
+
|
| 257 |
+
for question, pred, answer, data_id in zip(questions, preds, answers, data_ids):
|
| 258 |
+
outputs.append({
|
| 259 |
+
'question': question,
|
| 260 |
+
'answer': pred,
|
| 261 |
+
'gt_answers': answer,
|
| 262 |
+
'id': data_id
|
| 263 |
+
})
|
| 264 |
+
|
| 265 |
+
# torch.distributed.barrier()
|
| 266 |
+
retry_torch_distributed_barrier(max_retries=15, delay_seconds=5)
|
| 267 |
+
|
| 268 |
+
world_size = torch.distributed.get_world_size()
|
| 269 |
+
merged_outputs = [None for _ in range(world_size)]
|
| 270 |
+
torch.distributed.all_gather_object(merged_outputs, json.dumps(outputs))
|
| 271 |
+
|
| 272 |
+
merged_outputs = [json.loads(_) for _ in merged_outputs]
|
| 273 |
+
merged_outputs = [_ for _ in itertools.chain.from_iterable(merged_outputs)]
|
| 274 |
+
|
| 275 |
+
if torch.distributed.get_rank() == 0:
|
| 276 |
+
print(f'Evaluating {ds_name} ...')
|
| 277 |
+
results_file = f'{ds_name}_{args.output_name}.json'
|
| 278 |
+
output_path = os.path.join(args.out_dir, results_file)
|
| 279 |
+
|
| 280 |
+
# breakpoint()
|
| 281 |
+
with open(output_path, 'w') as f:
|
| 282 |
+
json.dump(merged_outputs, f, indent=4)
|
| 283 |
+
print('Results saved to {}'.format(output_path))
|
| 284 |
+
|
| 285 |
+
|
| 286 |
+
if __name__ == '__main__':
|
| 287 |
+
parser = argparse.ArgumentParser()
|
| 288 |
+
parser.add_argument('--checkpoint', type=str, default='')
|
| 289 |
+
parser.add_argument('--datasets', type=str, default='DriveLMMo1')
|
| 290 |
+
parser.add_argument('--batch-size', type=int, default=1)
|
| 291 |
+
parser.add_argument('--num-workers', type=int, default=4)
|
| 292 |
+
parser.add_argument('--num-beams', type=int, default=1)
|
| 293 |
+
parser.add_argument('--temperature', type=float, default=0.0)
|
| 294 |
+
parser.add_argument('--out-dir', type=str, default='results')
|
| 295 |
+
parser.add_argument('--output_name', type=str, default='qwen_32B_swift')
|
| 296 |
+
parser.add_argument('--seed', type=int, default=0)
|
| 297 |
+
parser.add_argument('--dynamic', action='store_true', default=False)
|
| 298 |
+
parser.add_argument('--max-num', type=int, default=12)
|
| 299 |
+
parser.add_argument('--load-in-8bit', action='store_true')
|
| 300 |
+
parser.add_argument('--load-in-4bit', action='store_true')
|
| 301 |
+
parser.add_argument('--auto', action='store_true')
|
| 302 |
+
args = parser.parse_args()
|
| 303 |
+
|
| 304 |
+
if not os.path.exists(args.out_dir):
|
| 305 |
+
os.makedirs(args.out_dir, exist_ok=True)
|
| 306 |
+
|
| 307 |
+
args.datasets = args.datasets.split(',')
|
| 308 |
+
print('datasets:', args.datasets)
|
| 309 |
+
assert args.batch_size == 1, 'Only batch size 1 is supported'
|
| 310 |
+
|
| 311 |
+
torch.distributed.init_process_group(
|
| 312 |
+
backend='nccl',
|
| 313 |
+
world_size=int(os.getenv('WORLD_SIZE', '1')),
|
| 314 |
+
rank=int(os.getenv('RANK', '0')),
|
| 315 |
+
)
|
| 316 |
+
|
| 317 |
+
torch.cuda.set_device(int(os.getenv('LOCAL_RANK', 0)))
|
| 318 |
+
|
| 319 |
+
# model, tokenizer = load_model_and_tokenizer()
|
| 320 |
+
# engine, model, tokenizer = load_model("qwen_vla/Qwen2.5-VL-32B-Instruct")
|
| 321 |
+
engine, model, tokenizer = load_model(args.checkpoint)
|
| 322 |
+
|
| 323 |
+
|
| 324 |
+
total_params = sum(p.numel() for p in model.parameters()) / 1e9
|
| 325 |
+
if total_params > 20 or args.dynamic:
|
| 326 |
+
args.num_beams = 1
|
| 327 |
+
print(f'[test] total_params: {total_params}B, use num_beams: {args.num_beams}')
|
| 328 |
+
else:
|
| 329 |
+
print(f'[test] total_params: {total_params}B')
|
| 330 |
+
|
| 331 |
+
print(f'[test] max_num: {args.max_num}')
|
| 332 |
+
|
| 333 |
+
evaluate_chat_model()
|
| 334 |
+
|
evaluation/prepare_data.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import json
|
| 3 |
+
|
| 4 |
+
# Define input and output file paths
|
| 5 |
+
input_file = "./data/tool_results/cot_val_Qwen2.5-VL.json" # Change this to your actual path
|
| 6 |
+
output_file = "./data/DriveLMMo1_TEST_tool_results.jsonl" # Change this to your actual path
|
| 7 |
+
|
| 8 |
+
# Read the combined JSON file
|
| 9 |
+
with open(input_file, "r", encoding="utf-8") as f:
|
| 10 |
+
data = json.load(f)
|
| 11 |
+
|
| 12 |
+
# Open the output JSONL file for writing
|
| 13 |
+
with open(output_file, "w", encoding="utf-8") as f_out:
|
| 14 |
+
for item in data:
|
| 15 |
+
question = item['question']
|
| 16 |
+
# stitched multiview image stored with idx as name
|
| 17 |
+
filename = item['idx'].rsplit('_', 1)[0] + '.png'
|
| 18 |
+
jsonl_entry = {
|
| 19 |
+
"id": item["idx"],
|
| 20 |
+
"image": filename,
|
| 21 |
+
"conversations": [
|
| 22 |
+
{
|
| 23 |
+
"from": "human",
|
| 24 |
+
"value": question
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"from": "gpt",
|
| 28 |
+
"value": f"{item['final_answer']}"
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"from": "gpt",
|
| 32 |
+
"value": f"{item['steps']}"
|
| 33 |
+
}
|
| 34 |
+
],
|
| 35 |
+
# tool_result
|
| 36 |
+
"tool_result": item.get("tool_result", []),
|
| 37 |
+
# system_prompts
|
| 38 |
+
"system_prompts": item.get("system_prompts", "")
|
| 39 |
+
}
|
| 40 |
+
# write -> json
|
| 41 |
+
f_out.write(json.dumps(jsonl_entry, ensure_ascii=False) + "\n")
|
| 42 |
+
|
| 43 |
+
print(f"JSONL file written to {output_file}")
|
main.py
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import io
|
| 3 |
+
import base64
|
| 4 |
+
import json
|
| 5 |
+
from typing import Optional
|
| 6 |
+
from jinja2 import Template
|
| 7 |
+
|
| 8 |
+
import torch
|
| 9 |
+
from PIL import Image
|
| 10 |
+
from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
|
| 11 |
+
from qwen_vl_utils import process_vision_info
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
MODEL_PATH = "./pretrained_model/AgentThink-model"
|
| 15 |
+
IMAGE_PATH = "demo_image/nuscenes_CAM_FRONT_3896.webp"
|
| 16 |
+
QUESTION = "Is the white van ahead of the motorcycle?"
|
| 17 |
+
SYSTEM_PROMPT = ""
|
| 18 |
+
THINKING_A = """
|
| 19 |
+
Locating the Relevant Objects
|
| 20 |
+
I've successfully identified the user's core question – whether a white van is in front of a motorcycle. My initial step focused on locating key objects within the image. Currently, I've identified the white van, situated in the left lane of two lanes traveling in the same direction.
|
| 21 |
+
Confirming Relative Positions
|
| 22 |
+
I've established that the motorcycle is in the right lane, and significantly closer to the camera than the van. The van appears smaller due to distance and is farther down the road. "Ahead of" in this context refers to distance traveled. Hence, the van is indeed ahead of the motorcycle, further along the road in the direction of travel. I'm verifying this assessment by ensuring the visual depth is properly interpreted from the camera's perspective.
|
| 23 |
+
Confirming Final Positions
|
| 24 |
+
I'm now solidifying my conclusion. The vanishing point assessment further confirms the longitudinal distances. The van is near the vanishing point, signifying its greater distance along the road. Therefore, it is definitely ahead of the motorcycle. The formulation of the definitive answer is complete, and it is a simple "yes". I have taken care to ensure that the response is direct, and helpful.
|
| 25 |
+
"""
|
| 26 |
+
|
| 27 |
+
THINKING_B = """
|
| 28 |
+
|
| 29 |
+
### Locating the Relevant Objects
|
| 30 |
+
|
| 31 |
+
I have identified the key elements needed to answer the question of whether the white van is in front of the motorcycle. The image shows a white van positioned in the left lane of a two-lane road and a motorcycle located in the right lane. Both vehicles are traveling in the same direction, making their relative forward positions directly comparable.
|
| 32 |
+
|
| 33 |
+
### Confirming Relative Positions
|
| 34 |
+
|
| 35 |
+
The motorcycle is positioned closer to the camera than the white van. This is evident from its larger appearance and clearer detail in the frame. The van appears smaller and farther away, indicating it is positioned further back along the road. In this context, “ahead of” refers to which vehicle has traveled farther forward relative to the camera’s viewpoint. Based on visual depth and scale, the motorcycle has progressed further along the road than the van.
|
| 36 |
+
|
| 37 |
+
### Confirming Final Positions
|
| 38 |
+
|
| 39 |
+
The depth cues in the image, including vehicle size and perspective convergence, confirm this assessment. The motorcycle is visually in front, while the van recedes toward the background. The van does not extend beyond the motorcycle in the direction of travel. Therefore, the van is positioned behind the motorcycle, not ahead of it.
|
| 40 |
+
|
| 41 |
+
### Definitive Conclusion
|
| 42 |
+
|
| 43 |
+
After carefully verifying object placement, depth, and perspective, the conclusion is clear: **the white van is not ahead of the motorcycle**. thus, the answer to the user's question is a straightforward "no".
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
"""
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
def _pil_to_base64(pil_image: Image.Image) -> str:
|
| 50 |
+
buffer = io.BytesIO()
|
| 51 |
+
pil_image.save(buffer, format="PNG")
|
| 52 |
+
return base64.b64encode(buffer.getvalue()).decode("utf-8")
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def _build_messages(
|
| 56 |
+
image_path: str,
|
| 57 |
+
question: str,
|
| 58 |
+
system_prompt: str,
|
| 59 |
+
injected_thinking: Optional[str],
|
| 60 |
+
) -> list[dict]:
|
| 61 |
+
image = Image.open(image_path)
|
| 62 |
+
image_url = f"data:image;base64,{_pil_to_base64(image)}"
|
| 63 |
+
|
| 64 |
+
messages: list[dict] = [
|
| 65 |
+
# {"role": "system", "content": system_prompt},
|
| 66 |
+
{
|
| 67 |
+
"role": "user",
|
| 68 |
+
"content": [
|
| 69 |
+
{"type": "image", "image": image_url},
|
| 70 |
+
{"type": "text", "text": question},
|
| 71 |
+
],
|
| 72 |
+
},
|
| 73 |
+
]
|
| 74 |
+
|
| 75 |
+
return messages
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def run_experiment(
|
| 79 |
+
model: Qwen2_5_VLForConditionalGeneration,
|
| 80 |
+
processor: AutoProcessor,
|
| 81 |
+
image_path: str,
|
| 82 |
+
question: str,
|
| 83 |
+
system_prompt: str,
|
| 84 |
+
injected_thinking: Optional[str],
|
| 85 |
+
max_new_tokens: int,
|
| 86 |
+
temperature: float,
|
| 87 |
+
top_p: float,
|
| 88 |
+
chat_template_path: str,
|
| 89 |
+
) -> str:
|
| 90 |
+
vision_messages = _build_messages(
|
| 91 |
+
image_path=image_path,
|
| 92 |
+
question=question,
|
| 93 |
+
system_prompt=system_prompt,
|
| 94 |
+
injected_thinking=None, # Use baseline messages for vision extraction
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
+
# Get text from processor's apply_chat_template
|
| 98 |
+
text = processor.apply_chat_template(
|
| 99 |
+
vision_messages,
|
| 100 |
+
tokenize=False,
|
| 101 |
+
add_generation_prompt=True
|
| 102 |
+
)
|
| 103 |
+
if injected_thinking:
|
| 104 |
+
if text.endswith("<|im_start|>assistant\n"):
|
| 105 |
+
thinking_lines = injected_thinking.strip().split('\n')
|
| 106 |
+
text = text.rstrip('\n') + f"\n{injected_thinking}\n"
|
| 107 |
+
|
| 108 |
+
# Extract vision inputs
|
| 109 |
+
image_inputs, video_inputs = process_vision_info(vision_messages) # ty:ignore[invalid-assignment]
|
| 110 |
+
|
| 111 |
+
# Use processor's call to handle the combined text+image processing properly
|
| 112 |
+
inputs = processor(
|
| 113 |
+
text=[text],
|
| 114 |
+
images=image_inputs,
|
| 115 |
+
videos=video_inputs,
|
| 116 |
+
padding=True,
|
| 117 |
+
return_tensors="pt",
|
| 118 |
+
).to(model.device) # ty:ignore[call-non-callable]
|
| 119 |
+
|
| 120 |
+
generated_ids = model.generate(
|
| 121 |
+
**inputs,
|
| 122 |
+
max_new_tokens=max_new_tokens,
|
| 123 |
+
temperature=temperature,
|
| 124 |
+
top_p=top_p,
|
| 125 |
+
do_sample=temperature > 0,
|
| 126 |
+
)
|
| 127 |
+
|
| 128 |
+
trimmed_ids = [
|
| 129 |
+
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
|
| 130 |
+
]
|
| 131 |
+
|
| 132 |
+
decoded = processor.batch_decode( # ty:ignore[unresolved-attribute]
|
| 133 |
+
trimmed_ids, skip_special_tokens=False, clean_up_tokenization_spaces=False
|
| 134 |
+
)
|
| 135 |
+
return decoded[0]
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
def main() -> None:
|
| 139 |
+
parser = argparse.ArgumentParser(description="Run AgentThink VLA reasoning injection test.")
|
| 140 |
+
parser.add_argument(
|
| 141 |
+
"--model-path",
|
| 142 |
+
default=MODEL_PATH,
|
| 143 |
+
help="Path to the AgentThink model checkpoint.",
|
| 144 |
+
)
|
| 145 |
+
parser.add_argument(
|
| 146 |
+
"--image-path",
|
| 147 |
+
default=IMAGE_PATH,
|
| 148 |
+
help="Path to the input image.",
|
| 149 |
+
)
|
| 150 |
+
parser.add_argument(
|
| 151 |
+
"--question",
|
| 152 |
+
default=QUESTION,
|
| 153 |
+
help="User question to test.",
|
| 154 |
+
)
|
| 155 |
+
parser.add_argument(
|
| 156 |
+
"--system-prompt",
|
| 157 |
+
default=SYSTEM_PROMPT,
|
| 158 |
+
help="System prompt for the conversation.",
|
| 159 |
+
)
|
| 160 |
+
parser.add_argument(
|
| 161 |
+
"--max-new-tokens",
|
| 162 |
+
type=int,
|
| 163 |
+
default=1024,
|
| 164 |
+
help="Maximum number of tokens to generate.",
|
| 165 |
+
)
|
| 166 |
+
parser.add_argument(
|
| 167 |
+
"--temperature",
|
| 168 |
+
type=float,
|
| 169 |
+
default=0.5,
|
| 170 |
+
help="Sampling temperature.",
|
| 171 |
+
)
|
| 172 |
+
parser.add_argument("--top-p", type=float, default=0.9, help="Top-p sampling.")
|
| 173 |
+
parser.add_argument(
|
| 174 |
+
"--thinking-a",
|
| 175 |
+
default=THINKING_A,
|
| 176 |
+
help="Injected reasoning for the first run.",
|
| 177 |
+
)
|
| 178 |
+
parser.add_argument(
|
| 179 |
+
"--thinking-b",
|
| 180 |
+
default=THINKING_B,
|
| 181 |
+
help="Injected reasoning for the second run.",
|
| 182 |
+
)
|
| 183 |
+
parser.add_argument(
|
| 184 |
+
"--chat-template-path",
|
| 185 |
+
default=f"{MODEL_PATH}/chat_template.json",
|
| 186 |
+
help="Path to the chat template JSON file.",
|
| 187 |
+
)
|
| 188 |
+
args = parser.parse_args()
|
| 189 |
+
|
| 190 |
+
# Load model on CUDA if available, else CPU
|
| 191 |
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 192 |
+
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
|
| 193 |
+
args.model_path,
|
| 194 |
+
torch_dtype=torch.bfloat16,
|
| 195 |
+
attn_implementation="eager",
|
| 196 |
+
).to(device)
|
| 197 |
+
processor = AutoProcessor.from_pretrained(args.model_path)
|
| 198 |
+
|
| 199 |
+
print("\n===== Baseline (no injected thinking) =====\n")
|
| 200 |
+
baseline = run_experiment(
|
| 201 |
+
model=model,
|
| 202 |
+
processor=processor,
|
| 203 |
+
image_path=args.image_path,
|
| 204 |
+
question=args.question,
|
| 205 |
+
system_prompt=args.system_prompt,
|
| 206 |
+
injected_thinking=None,
|
| 207 |
+
max_new_tokens=args.max_new_tokens,
|
| 208 |
+
temperature=args.temperature,
|
| 209 |
+
top_p=args.top_p,
|
| 210 |
+
chat_template_path=args.chat_template_path,
|
| 211 |
+
)
|
| 212 |
+
print(baseline)
|
| 213 |
+
|
| 214 |
+
print("\n===== Injected thinking A =====\n")
|
| 215 |
+
output_a = run_experiment(
|
| 216 |
+
model=model,
|
| 217 |
+
processor=processor,
|
| 218 |
+
image_path=args.image_path,
|
| 219 |
+
question=args.question,
|
| 220 |
+
system_prompt=args.system_prompt,
|
| 221 |
+
injected_thinking=args.thinking_a,
|
| 222 |
+
max_new_tokens=args.max_new_tokens,
|
| 223 |
+
temperature=args.temperature,
|
| 224 |
+
top_p=args.top_p,
|
| 225 |
+
chat_template_path=args.chat_template_path,
|
| 226 |
+
)
|
| 227 |
+
print(output_a)
|
| 228 |
+
|
| 229 |
+
print("\n===== Injected thinking B =====\n")
|
| 230 |
+
output_b = run_experiment(
|
| 231 |
+
model=model,
|
| 232 |
+
processor=processor,
|
| 233 |
+
image_path=args.image_path,
|
| 234 |
+
question=args.question,
|
| 235 |
+
system_prompt=args.system_prompt,
|
| 236 |
+
injected_thinking=args.thinking_b,
|
| 237 |
+
max_new_tokens=args.max_new_tokens,
|
| 238 |
+
temperature=args.temperature,
|
| 239 |
+
top_p=args.top_p,
|
| 240 |
+
chat_template_path=args.chat_template_path,
|
| 241 |
+
)
|
| 242 |
+
print(output_b)
|
| 243 |
+
|
| 244 |
+
|
| 245 |
+
if __name__ == "__main__":
|
| 246 |
+
main()
|
pretrained_model/AgentThink-model/added_tokens.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"</tool_call>": 151658,
|
| 3 |
+
"<tool_call>": 151657,
|
| 4 |
+
"<|box_end|>": 151649,
|
| 5 |
+
"<|box_start|>": 151648,
|
| 6 |
+
"<|endoftext|>": 151643,
|
| 7 |
+
"<|file_sep|>": 151664,
|
| 8 |
+
"<|fim_middle|>": 151660,
|
| 9 |
+
"<|fim_pad|>": 151662,
|
| 10 |
+
"<|fim_prefix|>": 151659,
|
| 11 |
+
"<|fim_suffix|>": 151661,
|
| 12 |
+
"<|im_end|>": 151645,
|
| 13 |
+
"<|im_start|>": 151644,
|
| 14 |
+
"<|image_pad|>": 151655,
|
| 15 |
+
"<|object_ref_end|>": 151647,
|
| 16 |
+
"<|object_ref_start|>": 151646,
|
| 17 |
+
"<|quad_end|>": 151651,
|
| 18 |
+
"<|quad_start|>": 151650,
|
| 19 |
+
"<|repo_name|>": 151663,
|
| 20 |
+
"<|video_pad|>": 151656,
|
| 21 |
+
"<|vision_end|>": 151653,
|
| 22 |
+
"<|vision_pad|>": 151654,
|
| 23 |
+
"<|vision_start|>": 151652
|
| 24 |
+
}
|
pretrained_model/AgentThink-model/args.json
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/exp_GRPO/exp_GRPO/output_lora_7B_ckpt_sft_rlhf_reward_Full_v2/v2-20250514-112630/checkpoint-2860-merged",
|
| 3 |
+
"model_type": "qwen2_5_vl",
|
| 4 |
+
"model_revision": null,
|
| 5 |
+
"task_type": "causal_lm",
|
| 6 |
+
"torch_dtype": "bfloat16",
|
| 7 |
+
"attn_impl": null,
|
| 8 |
+
"num_labels": null,
|
| 9 |
+
"problem_type": null,
|
| 10 |
+
"rope_scaling": null,
|
| 11 |
+
"device_map": null,
|
| 12 |
+
"max_memory": {},
|
| 13 |
+
"local_repo_path": null,
|
| 14 |
+
"template": "qwen2_5_vl",
|
| 15 |
+
"system": null,
|
| 16 |
+
"max_length": 12800,
|
| 17 |
+
"truncation_strategy": "delete",
|
| 18 |
+
"max_pixels": null,
|
| 19 |
+
"agent_template": null,
|
| 20 |
+
"norm_bbox": null,
|
| 21 |
+
"response_prefix": null,
|
| 22 |
+
"padding_side": "right",
|
| 23 |
+
"loss_scale": "default",
|
| 24 |
+
"sequence_parallel_size": 1,
|
| 25 |
+
"use_chat_template": true,
|
| 26 |
+
"template_backend": "swift",
|
| 27 |
+
"dataset": [
|
| 28 |
+
"/high_perf_store/mlinfra-vepfs/qiankangan/DriveLMM-o1-main/data/DriveLMMo1_swift_VAL_withtool_stage2v2.jsonl"
|
| 29 |
+
],
|
| 30 |
+
"val_dataset": [],
|
| 31 |
+
"split_dataset_ratio": 0.01,
|
| 32 |
+
"data_seed": 42,
|
| 33 |
+
"dataset_num_proc": 4,
|
| 34 |
+
"dataset_shuffle": true,
|
| 35 |
+
"val_dataset_shuffle": false,
|
| 36 |
+
"streaming": false,
|
| 37 |
+
"interleave_prob": null,
|
| 38 |
+
"stopping_strategy": "first_exhausted",
|
| 39 |
+
"shuffle_buffer_size": 1000,
|
| 40 |
+
"enable_cache": false,
|
| 41 |
+
"download_mode": "reuse_dataset_if_exists",
|
| 42 |
+
"columns": {},
|
| 43 |
+
"strict": false,
|
| 44 |
+
"remove_unused_columns": true,
|
| 45 |
+
"model_name": [
|
| 46 |
+
null,
|
| 47 |
+
null
|
| 48 |
+
],
|
| 49 |
+
"model_author": [
|
| 50 |
+
null,
|
| 51 |
+
null
|
| 52 |
+
],
|
| 53 |
+
"custom_dataset_info": [],
|
| 54 |
+
"quant_method": null,
|
| 55 |
+
"quant_bits": null,
|
| 56 |
+
"hqq_axis": null,
|
| 57 |
+
"bnb_4bit_compute_dtype": "bfloat16",
|
| 58 |
+
"bnb_4bit_quant_type": "nf4",
|
| 59 |
+
"bnb_4bit_use_double_quant": true,
|
| 60 |
+
"bnb_4bit_quant_storage": null,
|
| 61 |
+
"max_new_tokens": 64,
|
| 62 |
+
"temperature": 0.0,
|
| 63 |
+
"top_k": null,
|
| 64 |
+
"top_p": null,
|
| 65 |
+
"repetition_penalty": null,
|
| 66 |
+
"num_beams": 1,
|
| 67 |
+
"stream": false,
|
| 68 |
+
"stop_words": [],
|
| 69 |
+
"logprobs": false,
|
| 70 |
+
"top_logprobs": null,
|
| 71 |
+
"ckpt_dir": "/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/exp_GRPO/exp_GRPO/output_lora_7B_ckpt_sft_rlhf_reward_Full_v2/v2-20250514-112630/checkpoint-2860-merged",
|
| 72 |
+
"load_dataset_config": null,
|
| 73 |
+
"lora_modules": [],
|
| 74 |
+
"tuner_backend": "peft",
|
| 75 |
+
"train_type": "lora",
|
| 76 |
+
"adapters": [],
|
| 77 |
+
"external_plugins": [],
|
| 78 |
+
"seed": 42,
|
| 79 |
+
"model_kwargs": {},
|
| 80 |
+
"load_args": false,
|
| 81 |
+
"load_data_args": false,
|
| 82 |
+
"use_hf": false,
|
| 83 |
+
"hub_token": null,
|
| 84 |
+
"custom_register_path": [],
|
| 85 |
+
"ignore_args_error": false,
|
| 86 |
+
"use_swift_lora": false,
|
| 87 |
+
"output_dir": "/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/sft_checkpoint/drivelmm-sftstage2v2-results_7B/v1-20250625-132009",
|
| 88 |
+
"overwrite_output_dir": false,
|
| 89 |
+
"do_train": false,
|
| 90 |
+
"do_eval": false,
|
| 91 |
+
"do_predict": false,
|
| 92 |
+
"eval_strategy": "steps",
|
| 93 |
+
"prediction_loss_only": false,
|
| 94 |
+
"per_device_train_batch_size": 2,
|
| 95 |
+
"per_device_eval_batch_size": 2,
|
| 96 |
+
"per_gpu_train_batch_size": null,
|
| 97 |
+
"per_gpu_eval_batch_size": null,
|
| 98 |
+
"gradient_accumulation_steps": 16,
|
| 99 |
+
"eval_accumulation_steps": null,
|
| 100 |
+
"eval_delay": 0,
|
| 101 |
+
"torch_empty_cache_steps": null,
|
| 102 |
+
"learning_rate": 0.0001,
|
| 103 |
+
"weight_decay": 0.1,
|
| 104 |
+
"adam_beta1": 0.9,
|
| 105 |
+
"adam_beta2": 0.95,
|
| 106 |
+
"adam_epsilon": 1e-08,
|
| 107 |
+
"max_grad_norm": 1.0,
|
| 108 |
+
"num_train_epochs": 20.0,
|
| 109 |
+
"max_steps": -1,
|
| 110 |
+
"lr_scheduler_type": "cosine",
|
| 111 |
+
"lr_scheduler_kwargs": null,
|
| 112 |
+
"warmup_ratio": 0.05,
|
| 113 |
+
"warmup_steps": 0,
|
| 114 |
+
"log_level": "passive",
|
| 115 |
+
"log_level_replica": "warning",
|
| 116 |
+
"log_on_each_node": true,
|
| 117 |
+
"logging_dir": "/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/sft_checkpoint/drivelmm-sftstage2v2-results_7B/v1-20250625-132009/runs",
|
| 118 |
+
"logging_strategy": "steps",
|
| 119 |
+
"logging_first_step": true,
|
| 120 |
+
"logging_steps": 5,
|
| 121 |
+
"logging_nan_inf_filter": true,
|
| 122 |
+
"save_strategy": "steps",
|
| 123 |
+
"save_steps": 1000.0,
|
| 124 |
+
"save_total_limit": 5,
|
| 125 |
+
"save_safetensors": true,
|
| 126 |
+
"save_on_each_node": false,
|
| 127 |
+
"save_only_model": false,
|
| 128 |
+
"restore_callback_states_from_checkpoint": false,
|
| 129 |
+
"no_cuda": false,
|
| 130 |
+
"use_cpu": false,
|
| 131 |
+
"use_mps_device": false,
|
| 132 |
+
"jit_mode_eval": false,
|
| 133 |
+
"use_ipex": false,
|
| 134 |
+
"bf16": true,
|
| 135 |
+
"fp16": false,
|
| 136 |
+
"fp16_opt_level": "O1",
|
| 137 |
+
"half_precision_backend": "auto",
|
| 138 |
+
"bf16_full_eval": false,
|
| 139 |
+
"fp16_full_eval": false,
|
| 140 |
+
"tf32": null,
|
| 141 |
+
"local_rank": 0,
|
| 142 |
+
"ddp_backend": null,
|
| 143 |
+
"tpu_num_cores": null,
|
| 144 |
+
"tpu_metrics_debug": false,
|
| 145 |
+
"debug": null,
|
| 146 |
+
"dataloader_drop_last": false,
|
| 147 |
+
"eval_steps": 1000.0,
|
| 148 |
+
"dataloader_num_workers": 4,
|
| 149 |
+
"dataloader_prefetch_factor": null,
|
| 150 |
+
"past_index": -1,
|
| 151 |
+
"run_name": null,
|
| 152 |
+
"disable_tqdm": null,
|
| 153 |
+
"label_names": null,
|
| 154 |
+
"load_best_model_at_end": false,
|
| 155 |
+
"metric_for_best_model": "loss",
|
| 156 |
+
"greater_is_better": false,
|
| 157 |
+
"ignore_data_skip": false,
|
| 158 |
+
"fsdp": "",
|
| 159 |
+
"fsdp_min_num_params": 0,
|
| 160 |
+
"fsdp_config": null,
|
| 161 |
+
"tp_size": 0,
|
| 162 |
+
"fsdp_transformer_layer_cls_to_wrap": null,
|
| 163 |
+
"accelerator_config": {
|
| 164 |
+
"dispatch_batches": false
|
| 165 |
+
},
|
| 166 |
+
"deepspeed": {
|
| 167 |
+
"fp16": {
|
| 168 |
+
"enabled": "auto",
|
| 169 |
+
"loss_scale": 0,
|
| 170 |
+
"loss_scale_window": 1000,
|
| 171 |
+
"initial_scale_power": 16,
|
| 172 |
+
"hysteresis": 2,
|
| 173 |
+
"min_loss_scale": 1
|
| 174 |
+
},
|
| 175 |
+
"bf16": {
|
| 176 |
+
"enabled": "auto"
|
| 177 |
+
},
|
| 178 |
+
"zero_optimization": {
|
| 179 |
+
"stage": 2,
|
| 180 |
+
"offload_optimizer": {
|
| 181 |
+
"device": "none",
|
| 182 |
+
"pin_memory": true
|
| 183 |
+
},
|
| 184 |
+
"allgather_partitions": true,
|
| 185 |
+
"allgather_bucket_size": 200000000.0,
|
| 186 |
+
"overlap_comm": false,
|
| 187 |
+
"reduce_scatter": true,
|
| 188 |
+
"reduce_bucket_size": 200000000.0,
|
| 189 |
+
"contiguous_gradients": true
|
| 190 |
+
},
|
| 191 |
+
"gradient_accumulation_steps": "auto",
|
| 192 |
+
"gradient_clipping": "auto",
|
| 193 |
+
"steps_per_print": 2000,
|
| 194 |
+
"train_batch_size": "auto",
|
| 195 |
+
"train_micro_batch_size_per_gpu": "auto",
|
| 196 |
+
"wall_clock_breakdown": false
|
| 197 |
+
},
|
| 198 |
+
"label_smoothing_factor": 0.0,
|
| 199 |
+
"optim": "adamw_torch",
|
| 200 |
+
"optim_args": null,
|
| 201 |
+
"adafactor": false,
|
| 202 |
+
"group_by_length": false,
|
| 203 |
+
"length_column_name": "length",
|
| 204 |
+
"report_to": [
|
| 205 |
+
"tensorboard"
|
| 206 |
+
],
|
| 207 |
+
"ddp_find_unused_parameters": null,
|
| 208 |
+
"ddp_bucket_cap_mb": null,
|
| 209 |
+
"ddp_broadcast_buffers": null,
|
| 210 |
+
"dataloader_pin_memory": true,
|
| 211 |
+
"dataloader_persistent_workers": false,
|
| 212 |
+
"skip_memory_metrics": true,
|
| 213 |
+
"use_legacy_prediction_loop": false,
|
| 214 |
+
"push_to_hub": false,
|
| 215 |
+
"resume_from_checkpoint": null,
|
| 216 |
+
"hub_model_id": null,
|
| 217 |
+
"hub_strategy": "every_save",
|
| 218 |
+
"hub_private_repo": null,
|
| 219 |
+
"hub_always_push": false,
|
| 220 |
+
"gradient_checkpointing": true,
|
| 221 |
+
"gradient_checkpointing_kwargs": "{\"use_reentrant\": false}",
|
| 222 |
+
"include_inputs_for_metrics": false,
|
| 223 |
+
"include_for_metrics": [],
|
| 224 |
+
"eval_do_concat_batches": true,
|
| 225 |
+
"fp16_backend": "auto",
|
| 226 |
+
"push_to_hub_model_id": null,
|
| 227 |
+
"push_to_hub_organization": null,
|
| 228 |
+
"push_to_hub_token": null,
|
| 229 |
+
"mp_parameters": "",
|
| 230 |
+
"auto_find_batch_size": false,
|
| 231 |
+
"full_determinism": false,
|
| 232 |
+
"torchdynamo": null,
|
| 233 |
+
"ray_scope": "last",
|
| 234 |
+
"ddp_timeout": 1800,
|
| 235 |
+
"torch_compile": false,
|
| 236 |
+
"torch_compile_backend": null,
|
| 237 |
+
"torch_compile_mode": null,
|
| 238 |
+
"include_tokens_per_second": false,
|
| 239 |
+
"include_num_input_tokens_seen": false,
|
| 240 |
+
"neftune_noise_alpha": null,
|
| 241 |
+
"optim_target_modules": null,
|
| 242 |
+
"batch_eval_metrics": false,
|
| 243 |
+
"eval_on_start": false,
|
| 244 |
+
"use_liger_kernel": false,
|
| 245 |
+
"eval_use_gather_object": false,
|
| 246 |
+
"average_tokens_across_devices": false,
|
| 247 |
+
"sortish_sampler": false,
|
| 248 |
+
"predict_with_generate": false,
|
| 249 |
+
"generation_max_length": null,
|
| 250 |
+
"generation_num_beams": null,
|
| 251 |
+
"generation_config": null,
|
| 252 |
+
"check_model": true,
|
| 253 |
+
"acc_strategy": "token",
|
| 254 |
+
"train_dataloader_shuffle": true,
|
| 255 |
+
"metric_warmup_step": 0,
|
| 256 |
+
"fsdp_num": 1,
|
| 257 |
+
"acc_steps": 1,
|
| 258 |
+
"eval_use_evalscope": false,
|
| 259 |
+
"eval_datasets": [],
|
| 260 |
+
"eval_limit": null,
|
| 261 |
+
"eval_datasets_args": null,
|
| 262 |
+
"eval_generation_config": null,
|
| 263 |
+
"freeze_parameters": [
|
| 264 |
+
"visual",
|
| 265 |
+
"visual.merger"
|
| 266 |
+
],
|
| 267 |
+
"freeze_parameters_ratio": 0.0,
|
| 268 |
+
"trainable_parameters": [],
|
| 269 |
+
"freeze_llm": false,
|
| 270 |
+
"freeze_vit": true,
|
| 271 |
+
"freeze_aligner": true,
|
| 272 |
+
"target_modules": [
|
| 273 |
+
"all-linear"
|
| 274 |
+
],
|
| 275 |
+
"target_regex": null,
|
| 276 |
+
"modules_to_save": [],
|
| 277 |
+
"lora_rank": 8,
|
| 278 |
+
"lora_alpha": 32,
|
| 279 |
+
"lora_dropout": 0.05,
|
| 280 |
+
"lora_bias": "none",
|
| 281 |
+
"lora_dtype": null,
|
| 282 |
+
"lorap_lr_ratio": null,
|
| 283 |
+
"use_rslora": false,
|
| 284 |
+
"use_dora": false,
|
| 285 |
+
"lora_ga_batch_size": 2,
|
| 286 |
+
"lora_ga_iters": 2,
|
| 287 |
+
"lora_ga_max_length": 1024,
|
| 288 |
+
"lora_ga_direction": "ArB2r",
|
| 289 |
+
"lora_ga_scale": "stable",
|
| 290 |
+
"lora_ga_stable_gamma": 16,
|
| 291 |
+
"init_weights": true,
|
| 292 |
+
"fourier_n_frequency": 2000,
|
| 293 |
+
"fourier_scaling": 300.0,
|
| 294 |
+
"boft_block_size": 4,
|
| 295 |
+
"boft_block_num": 0,
|
| 296 |
+
"boft_n_butterfly_factor": 1,
|
| 297 |
+
"boft_dropout": 0.0,
|
| 298 |
+
"vera_rank": 256,
|
| 299 |
+
"vera_projection_prng_key": 0,
|
| 300 |
+
"vera_dropout": 0.0,
|
| 301 |
+
"vera_d_initial": 0.1,
|
| 302 |
+
"adapter_act": "gelu",
|
| 303 |
+
"adapter_length": 128,
|
| 304 |
+
"use_galore": false,
|
| 305 |
+
"galore_target_modules": null,
|
| 306 |
+
"galore_rank": 128,
|
| 307 |
+
"galore_update_proj_gap": 50,
|
| 308 |
+
"galore_scale": 1.0,
|
| 309 |
+
"galore_proj_type": "std",
|
| 310 |
+
"galore_optim_per_parameter": false,
|
| 311 |
+
"galore_with_embedding": false,
|
| 312 |
+
"galore_quantization": false,
|
| 313 |
+
"galore_proj_quant": false,
|
| 314 |
+
"galore_proj_bits": 4,
|
| 315 |
+
"galore_proj_group_size": 256,
|
| 316 |
+
"galore_cos_threshold": 0.4,
|
| 317 |
+
"galore_gamma_proj": 2,
|
| 318 |
+
"galore_queue_size": 5,
|
| 319 |
+
"adalora_target_r": 8,
|
| 320 |
+
"adalora_init_r": 12,
|
| 321 |
+
"adalora_tinit": 0,
|
| 322 |
+
"adalora_tfinal": 0,
|
| 323 |
+
"adalora_deltaT": 1,
|
| 324 |
+
"adalora_beta1": 0.85,
|
| 325 |
+
"adalora_beta2": 0.85,
|
| 326 |
+
"adalora_orth_reg_weight": 0.5,
|
| 327 |
+
"llamapro_num_new_blocks": 4,
|
| 328 |
+
"llamapro_num_groups": null,
|
| 329 |
+
"lisa_activated_layers": 0,
|
| 330 |
+
"lisa_step_interval": 20,
|
| 331 |
+
"reft_layer_key": null,
|
| 332 |
+
"reft_layers": null,
|
| 333 |
+
"reft_rank": 4,
|
| 334 |
+
"reft_intervention_type": "LoreftIntervention",
|
| 335 |
+
"reft_args": null,
|
| 336 |
+
"swanlab_token": null,
|
| 337 |
+
"swanlab_project": null,
|
| 338 |
+
"swanlab_workspace": null,
|
| 339 |
+
"swanlab_exp_name": null,
|
| 340 |
+
"swanlab_mode": "cloud",
|
| 341 |
+
"add_version": true,
|
| 342 |
+
"resume_only_model": false,
|
| 343 |
+
"create_checkpoint_symlink": false,
|
| 344 |
+
"packing": false,
|
| 345 |
+
"lazy_tokenize": true,
|
| 346 |
+
"loss_type": null,
|
| 347 |
+
"optimizer": null,
|
| 348 |
+
"metric": null,
|
| 349 |
+
"zero_hpz_partition_size": null,
|
| 350 |
+
"rank": 0,
|
| 351 |
+
"global_world_size": 8,
|
| 352 |
+
"local_world_size": 8,
|
| 353 |
+
"model_suffix": "checkpoint-2860-merged",
|
| 354 |
+
"model_info": "ModelInfo(model_type='qwen2_5_vl', model_dir='/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/exp_GRPO/exp_GRPO/output_lora_7B_ckpt_sft_rlhf_reward_Full_v2/v2-20250514-112630/checkpoint-2860-merged', torch_dtype=torch.bfloat16, max_model_len=128000, quant_method=None, quant_bits=None, rope_scaling={'mrope_section': [16, 24, 24], 'rope_type': 'default', 'type': 'default'}, config=None, task_type='causal_lm', num_labels=None)",
|
| 355 |
+
"model_meta": "ModelMeta(model_type='qwen2_5_vl', model_groups=[ModelGroup(models=[Model(ms_model_id='Qwen/Qwen2.5-VL-3B-Instruct', hf_model_id='Qwen/Qwen2.5-VL-3B-Instruct', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-7B-Instruct', hf_model_id='Qwen/Qwen2.5-VL-7B-Instruct', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-32B-Instruct', hf_model_id='Qwen/Qwen2.5-VL-32B-Instruct', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-72B-Instruct', hf_model_id='Qwen/Qwen2.5-VL-72B-Instruct', model_path=None, ms_revision=None, hf_revision=None)], ignore_patterns=None, requires=None, tags=[]), ModelGroup(models=[Model(ms_model_id='Qwen/Qwen2.5-VL-3B-Instruct-AWQ', hf_model_id='Qwen/Qwen2.5-VL-3B-Instruct-AWQ', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-7B-Instruct-AWQ', hf_model_id='Qwen/Qwen2.5-VL-7B-Instruct-AWQ', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-32B-Instruct-AWQ', hf_model_id='Qwen/Qwen2.5-VL-32B-Instruct-AWQ', model_path=None, ms_revision=None, hf_revision=None), Model(ms_model_id='Qwen/Qwen2.5-VL-72B-Instruct-AWQ', hf_model_id='Qwen/Qwen2.5-VL-72B-Instruct-AWQ', model_path=None, ms_revision=None, hf_revision=None)], ignore_patterns=None, requires=None, tags=[])], template='qwen2_5_vl', get_function=<function get_model_tokenizer_qwen2_5_vl at 0x7fb45808cc10>, model_arch='qwen2_vl', architectures=['Qwen2_5_VLForConditionalGeneration'], additional_saved_files=[], torch_dtype=None, is_multimodal=True, is_reward=False, task_type=None, ignore_patterns=None, requires=['transformers>=4.49', 'qwen_vl_utils>=0.0.6', 'decord'], tags=['vision', 'video'])",
|
| 356 |
+
"model_dir": "/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/exp_GRPO/exp_GRPO/output_lora_7B_ckpt_sft_rlhf_reward_Full_v2/v2-20250514-112630/checkpoint-2860-merged",
|
| 357 |
+
"hub": "<class 'swift.hub.hub.MSHub'>",
|
| 358 |
+
"evaluation_strategy": "steps",
|
| 359 |
+
"training_args": "Seq2SeqTrainingArguments(output_dir='/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/sft_checkpoint/drivelmm-sftstage2v2-results_7B/v1-20250625-132009', overwrite_output_dir=False, do_train=False, do_eval=True, do_predict=False, eval_strategy=<IntervalStrategy.STEPS: 'steps'>, prediction_loss_only=False, per_device_train_batch_size=2, per_device_eval_batch_size=2, per_gpu_train_batch_size=None, per_gpu_eval_batch_size=None, gradient_accumulation_steps=16, eval_accumulation_steps=None, eval_delay=0, torch_empty_cache_steps=None, learning_rate=0.0001, weight_decay=0.1, adam_beta1=0.9, adam_beta2=0.95, adam_epsilon=1e-08, max_grad_norm=1.0, num_train_epochs=20.0, max_steps=-1, lr_scheduler_type=<SchedulerType.COSINE: 'cosine'>, lr_scheduler_kwargs=None, warmup_ratio=0.05, warmup_steps=0, log_level='passive', log_level_replica='warning', log_on_each_node=True, logging_dir='/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/sft_checkpoint/drivelmm-sftstage2v2-results_7B/v1-20250625-132009/runs', logging_strategy=<IntervalStrategy.STEPS: 'steps'>, logging_first_step=True, logging_steps=5, logging_nan_inf_filter=True, save_strategy=<SaveStrategy.STEPS: 'steps'>, save_steps=1000, save_total_limit=5, save_safetensors=True, save_on_each_node=False, save_only_model=False, restore_callback_states_from_checkpoint=False, no_cuda=False, use_cpu=False, use_mps_device=False, seed=42, data_seed=42, jit_mode_eval=False, use_ipex=False, bf16=True, fp16=False, fp16_opt_level='O1', half_precision_backend='auto', bf16_full_eval=False, fp16_full_eval=False, tf32=None, local_rank=0, ddp_backend=None, tpu_num_cores=None, tpu_metrics_debug=False, debug=[], dataloader_drop_last=False, eval_steps=1000, dataloader_num_workers=4, dataloader_prefetch_factor=10, past_index=-1, run_name='/high_perf_store2/tfl-vepfs/qiankangan-vla/swift_exp/sft_checkpoint/drivelmm-sftstage2v2-results_7B/v1-20250625-132009', disable_tqdm=False, remove_unused_columns=False, label_names=None, load_best_model_at_end=False, metric_for_best_model='loss', greater_is_better=False, ignore_data_skip=False, fsdp=[], fsdp_min_num_params=0, fsdp_config={'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}, tp_size=0, fsdp_transformer_layer_cls_to_wrap=None, accelerator_config=AcceleratorConfig(split_batches=False, dispatch_batches=False, even_batches=True, use_seedable_sampler=True, non_blocking=False, gradient_accumulation_kwargs=None, use_configured_state=False), deepspeed={'fp16': {'enabled': 'auto', 'loss_scale': 0, 'loss_scale_window': 1000, 'initial_scale_power': 16, 'hysteresis': 2, 'min_loss_scale': 1}, 'bf16': {'enabled': 'auto'}, 'zero_optimization': {'stage': 2, 'offload_optimizer': {'device': 'none', 'pin_memory': True}, 'allgather_partitions': True, 'allgather_bucket_size': 200000000.0, 'overlap_comm': False, 'reduce_scatter': True, 'reduce_bucket_size': 200000000.0, 'contiguous_gradients': True}, 'gradient_accumulation_steps': 'auto', 'gradient_clipping': 'auto', 'steps_per_print': 2000, 'train_batch_size': 'auto', 'train_micro_batch_size_per_gpu': 'auto', 'wall_clock_breakdown': False}, label_smoothing_factor=0.0, optim=<OptimizerNames.ADAMW_TORCH: 'adamw_torch'>, optim_args=None, adafactor=False, group_by_length=False, length_column_name='length', report_to=['tensorboard'], ddp_find_unused_parameters=None, ddp_bucket_cap_mb=None, ddp_broadcast_buffers=None, dataloader_pin_memory=True, dataloader_persistent_workers=False, skip_memory_metrics=True, use_legacy_prediction_loop=False, push_to_hub=False, resume_from_checkpoint=None, hub_model_id=None, hub_strategy=<HubStrategy.EVERY_SAVE: 'every_save'>, hub_token=None, hub_private_repo=None, hub_always_push=False, gradient_checkpointing=True, gradient_checkpointing_kwargs={'use_reentrant': False}, include_inputs_for_metrics=False, include_for_metrics=[], eval_do_concat_batches=True, fp16_backend='auto', push_to_hub_model_id=None, push_to_hub_organization=None, push_to_hub_token=None, mp_parameters='', auto_find_batch_size=False, full_determinism=False, torchdynamo=None, ray_scope='last', ddp_timeout=1800, torch_compile=False, torch_compile_backend=None, torch_compile_mode=None, include_tokens_per_second=None, include_num_input_tokens_seen=None, neftune_noise_alpha=None, optim_target_modules=None, batch_eval_metrics=False, eval_on_start=False, use_liger_kernel=False, eval_use_gather_object=False, average_tokens_across_devices=None, sortish_sampler=False, predict_with_generate=False, generation_max_length=None, generation_num_beams=None, generation_config=None, check_model=True, acc_strategy='token', train_dataloader_shuffle=True, metric_warmup_step=0, fsdp_num=1, acc_steps=1, eval_use_evalscope=False, eval_datasets=[], eval_limit=None, eval_datasets_args=None, eval_generation_config=None, train_type='lora', optimizer=None, local_repo_path=None, galore_config=None)"
|
| 360 |
+
}
|
pretrained_model/AgentThink-model/chat_template.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"chat_template": "{% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}Picture {{ image_count.value }}: {% endif %}<|vision_start|><|image_pad|><|vision_end|>{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}Video {{ video_count.value }}: {% endif %}<|vision_start|><|video_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% if injected_thinking %}<think>\n{{ injected_thinking }}\n</think>\n{% endif %}{% endif %}"
|
| 3 |
+
}
|
pretrained_model/AgentThink-model/config.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"Qwen2_5_VLForConditionalGeneration"
|
| 4 |
+
],
|
| 5 |
+
"attention_dropout": 0.0,
|
| 6 |
+
"bos_token_id": 151643,
|
| 7 |
+
"eos_token_id": 151645,
|
| 8 |
+
"hidden_act": "silu",
|
| 9 |
+
"hidden_size": 3584,
|
| 10 |
+
"image_token_id": 151655,
|
| 11 |
+
"initializer_range": 0.02,
|
| 12 |
+
"intermediate_size": 18944,
|
| 13 |
+
"max_position_embeddings": 128000,
|
| 14 |
+
"max_window_layers": 28,
|
| 15 |
+
"model_type": "qwen2_5_vl",
|
| 16 |
+
"num_attention_heads": 28,
|
| 17 |
+
"num_hidden_layers": 28,
|
| 18 |
+
"num_key_value_heads": 4,
|
| 19 |
+
"pad_token_id": 151643,
|
| 20 |
+
"rms_norm_eps": 1e-06,
|
| 21 |
+
"rope_scaling": {
|
| 22 |
+
"mrope_section": [
|
| 23 |
+
16,
|
| 24 |
+
24,
|
| 25 |
+
24
|
| 26 |
+
],
|
| 27 |
+
"rope_type": "default",
|
| 28 |
+
"type": "default"
|
| 29 |
+
},
|
| 30 |
+
"rope_theta": 1000000.0,
|
| 31 |
+
"sliding_window": 32768,
|
| 32 |
+
"tie_word_embeddings": false,
|
| 33 |
+
"torch_dtype": "bfloat16",
|
| 34 |
+
"transformers_version": "4.51.3",
|
| 35 |
+
"use_cache": true,
|
| 36 |
+
"use_sliding_window": false,
|
| 37 |
+
"video_token_id": 151656,
|
| 38 |
+
"vision_config": {
|
| 39 |
+
"depth": 32,
|
| 40 |
+
"fullatt_block_indexes": [
|
| 41 |
+
7,
|
| 42 |
+
15,
|
| 43 |
+
23,
|
| 44 |
+
31
|
| 45 |
+
],
|
| 46 |
+
"hidden_act": "silu",
|
| 47 |
+
"hidden_size": 1280,
|
| 48 |
+
"in_channels": 3,
|
| 49 |
+
"in_chans": 3,
|
| 50 |
+
"intermediate_size": 3420,
|
| 51 |
+
"model_type": "qwen2_5_vl",
|
| 52 |
+
"num_heads": 16,
|
| 53 |
+
"out_hidden_size": 3584,
|
| 54 |
+
"patch_size": 14,
|
| 55 |
+
"spatial_merge_size": 2,
|
| 56 |
+
"spatial_patch_size": 14,
|
| 57 |
+
"temporal_patch_size": 2,
|
| 58 |
+
"tokens_per_second": 2,
|
| 59 |
+
"torch_dtype": "bfloat16",
|
| 60 |
+
"window_size": 112
|
| 61 |
+
},
|
| 62 |
+
"vision_end_token_id": 151653,
|
| 63 |
+
"vision_start_token_id": 151652,
|
| 64 |
+
"vision_token_id": 151654,
|
| 65 |
+
"vocab_size": 152064
|
| 66 |
+
}
|
pretrained_model/AgentThink-model/generation_config.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token_id": 151643,
|
| 3 |
+
"do_sample": true,
|
| 4 |
+
"eos_token_id": [
|
| 5 |
+
151645,
|
| 6 |
+
151643
|
| 7 |
+
],
|
| 8 |
+
"pad_token_id": 151643,
|
| 9 |
+
"repetition_penalty": 1.05,
|
| 10 |
+
"temperature": 0.1,
|
| 11 |
+
"top_k": 1,
|
| 12 |
+
"top_p": 0.001,
|
| 13 |
+
"transformers_version": "4.51.3"
|
| 14 |
+
}
|
pretrained_model/AgentThink-model/merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pretrained_model/AgentThink-model/model-00001-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b1ff136d58068d1c768f272dd783ab66a2427c69ae05f4ecf9ff0e241e27c8d4
|
| 3 |
+
size 4968243304
|
pretrained_model/AgentThink-model/model-00002-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:54a65060ee2d1c0410beccbd3432979e5f58628da28b847f2f678938d6a427e2
|
| 3 |
+
size 4991495816
|
pretrained_model/AgentThink-model/model-00003-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:afd4d5da712388032770b0995fd7bffcc8200a74dc2d4b578e1804d88ef6dcd5
|
| 3 |
+
size 4932751040
|
pretrained_model/AgentThink-model/model-00004-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:959fec69f78dea5608a6720cc2050eccbb6a33802793443453430f014b72b419
|
| 3 |
+
size 1691924384
|
pretrained_model/AgentThink-model/model.safetensors.index.json
ADDED
|
@@ -0,0 +1,736 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"total_size": 16584333312
|
| 4 |
+
},
|
| 5 |
+
"weight_map": {
|
| 6 |
+
"lm_head.weight": "model-00004-of-00004.safetensors",
|
| 7 |
+
"model.embed_tokens.weight": "model-00001-of-00004.safetensors",
|
| 8 |
+
"model.layers.0.input_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 9 |
+
"model.layers.0.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 10 |
+
"model.layers.0.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 11 |
+
"model.layers.0.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 12 |
+
"model.layers.0.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 13 |
+
"model.layers.0.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 14 |
+
"model.layers.0.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 15 |
+
"model.layers.0.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 16 |
+
"model.layers.0.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 17 |
+
"model.layers.0.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 18 |
+
"model.layers.0.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 19 |
+
"model.layers.0.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 20 |
+
"model.layers.1.input_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 21 |
+
"model.layers.1.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 22 |
+
"model.layers.1.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 23 |
+
"model.layers.1.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 24 |
+
"model.layers.1.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 25 |
+
"model.layers.1.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 26 |
+
"model.layers.1.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 27 |
+
"model.layers.1.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 28 |
+
"model.layers.1.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 29 |
+
"model.layers.1.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 30 |
+
"model.layers.1.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 31 |
+
"model.layers.1.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 32 |
+
"model.layers.10.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 33 |
+
"model.layers.10.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 34 |
+
"model.layers.10.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 35 |
+
"model.layers.10.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 36 |
+
"model.layers.10.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 37 |
+
"model.layers.10.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 38 |
+
"model.layers.10.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 39 |
+
"model.layers.10.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 40 |
+
"model.layers.10.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 41 |
+
"model.layers.10.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 42 |
+
"model.layers.10.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 43 |
+
"model.layers.10.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 44 |
+
"model.layers.11.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 45 |
+
"model.layers.11.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 46 |
+
"model.layers.11.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 47 |
+
"model.layers.11.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 48 |
+
"model.layers.11.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 49 |
+
"model.layers.11.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 50 |
+
"model.layers.11.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 51 |
+
"model.layers.11.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 52 |
+
"model.layers.11.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 53 |
+
"model.layers.11.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 54 |
+
"model.layers.11.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 55 |
+
"model.layers.11.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 56 |
+
"model.layers.12.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 57 |
+
"model.layers.12.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 58 |
+
"model.layers.12.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 59 |
+
"model.layers.12.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 60 |
+
"model.layers.12.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 61 |
+
"model.layers.12.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 62 |
+
"model.layers.12.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 63 |
+
"model.layers.12.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 64 |
+
"model.layers.12.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 65 |
+
"model.layers.12.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 66 |
+
"model.layers.12.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 67 |
+
"model.layers.12.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 68 |
+
"model.layers.13.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 69 |
+
"model.layers.13.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 70 |
+
"model.layers.13.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 71 |
+
"model.layers.13.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 72 |
+
"model.layers.13.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 73 |
+
"model.layers.13.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 74 |
+
"model.layers.13.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 75 |
+
"model.layers.13.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 76 |
+
"model.layers.13.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 77 |
+
"model.layers.13.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 78 |
+
"model.layers.13.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 79 |
+
"model.layers.13.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 80 |
+
"model.layers.14.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 81 |
+
"model.layers.14.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 82 |
+
"model.layers.14.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 83 |
+
"model.layers.14.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 84 |
+
"model.layers.14.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 85 |
+
"model.layers.14.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 86 |
+
"model.layers.14.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 87 |
+
"model.layers.14.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 88 |
+
"model.layers.14.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 89 |
+
"model.layers.14.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 90 |
+
"model.layers.14.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 91 |
+
"model.layers.14.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 92 |
+
"model.layers.15.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 93 |
+
"model.layers.15.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 94 |
+
"model.layers.15.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 95 |
+
"model.layers.15.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 96 |
+
"model.layers.15.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 97 |
+
"model.layers.15.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 98 |
+
"model.layers.15.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 99 |
+
"model.layers.15.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 100 |
+
"model.layers.15.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 101 |
+
"model.layers.15.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 102 |
+
"model.layers.15.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 103 |
+
"model.layers.15.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 104 |
+
"model.layers.16.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 105 |
+
"model.layers.16.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 106 |
+
"model.layers.16.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 107 |
+
"model.layers.16.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 108 |
+
"model.layers.16.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 109 |
+
"model.layers.16.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 110 |
+
"model.layers.16.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 111 |
+
"model.layers.16.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 112 |
+
"model.layers.16.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 113 |
+
"model.layers.16.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 114 |
+
"model.layers.16.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 115 |
+
"model.layers.16.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 116 |
+
"model.layers.17.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 117 |
+
"model.layers.17.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 118 |
+
"model.layers.17.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 119 |
+
"model.layers.17.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 120 |
+
"model.layers.17.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 121 |
+
"model.layers.17.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 122 |
+
"model.layers.17.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 123 |
+
"model.layers.17.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 124 |
+
"model.layers.17.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 125 |
+
"model.layers.17.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 126 |
+
"model.layers.17.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 127 |
+
"model.layers.17.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 128 |
+
"model.layers.18.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 129 |
+
"model.layers.18.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 130 |
+
"model.layers.18.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 131 |
+
"model.layers.18.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 132 |
+
"model.layers.18.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 133 |
+
"model.layers.18.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 134 |
+
"model.layers.18.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 135 |
+
"model.layers.18.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 136 |
+
"model.layers.18.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 137 |
+
"model.layers.18.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 138 |
+
"model.layers.18.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 139 |
+
"model.layers.18.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 140 |
+
"model.layers.19.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 141 |
+
"model.layers.19.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 142 |
+
"model.layers.19.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 143 |
+
"model.layers.19.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 144 |
+
"model.layers.19.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 145 |
+
"model.layers.19.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 146 |
+
"model.layers.19.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 147 |
+
"model.layers.19.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 148 |
+
"model.layers.19.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 149 |
+
"model.layers.19.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 150 |
+
"model.layers.19.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 151 |
+
"model.layers.19.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 152 |
+
"model.layers.2.input_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 153 |
+
"model.layers.2.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 154 |
+
"model.layers.2.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 155 |
+
"model.layers.2.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 156 |
+
"model.layers.2.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 157 |
+
"model.layers.2.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 158 |
+
"model.layers.2.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 159 |
+
"model.layers.2.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 160 |
+
"model.layers.2.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 161 |
+
"model.layers.2.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 162 |
+
"model.layers.2.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 163 |
+
"model.layers.2.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 164 |
+
"model.layers.20.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 165 |
+
"model.layers.20.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 166 |
+
"model.layers.20.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 167 |
+
"model.layers.20.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 168 |
+
"model.layers.20.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 169 |
+
"model.layers.20.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 170 |
+
"model.layers.20.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 171 |
+
"model.layers.20.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 172 |
+
"model.layers.20.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 173 |
+
"model.layers.20.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 174 |
+
"model.layers.20.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 175 |
+
"model.layers.20.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 176 |
+
"model.layers.21.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 177 |
+
"model.layers.21.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 178 |
+
"model.layers.21.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 179 |
+
"model.layers.21.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 180 |
+
"model.layers.21.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 181 |
+
"model.layers.21.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 182 |
+
"model.layers.21.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 183 |
+
"model.layers.21.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 184 |
+
"model.layers.21.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 185 |
+
"model.layers.21.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 186 |
+
"model.layers.21.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 187 |
+
"model.layers.21.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 188 |
+
"model.layers.22.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 189 |
+
"model.layers.22.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 190 |
+
"model.layers.22.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 191 |
+
"model.layers.22.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 192 |
+
"model.layers.22.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 193 |
+
"model.layers.22.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 194 |
+
"model.layers.22.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 195 |
+
"model.layers.22.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 196 |
+
"model.layers.22.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 197 |
+
"model.layers.22.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 198 |
+
"model.layers.22.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 199 |
+
"model.layers.22.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 200 |
+
"model.layers.23.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 201 |
+
"model.layers.23.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 202 |
+
"model.layers.23.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 203 |
+
"model.layers.23.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 204 |
+
"model.layers.23.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 205 |
+
"model.layers.23.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 206 |
+
"model.layers.23.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 207 |
+
"model.layers.23.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 208 |
+
"model.layers.23.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 209 |
+
"model.layers.23.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 210 |
+
"model.layers.23.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 211 |
+
"model.layers.23.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 212 |
+
"model.layers.24.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 213 |
+
"model.layers.24.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 214 |
+
"model.layers.24.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 215 |
+
"model.layers.24.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 216 |
+
"model.layers.24.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 217 |
+
"model.layers.24.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 218 |
+
"model.layers.24.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 219 |
+
"model.layers.24.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 220 |
+
"model.layers.24.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 221 |
+
"model.layers.24.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 222 |
+
"model.layers.24.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 223 |
+
"model.layers.24.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 224 |
+
"model.layers.25.input_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 225 |
+
"model.layers.25.mlp.down_proj.weight": "model-00003-of-00004.safetensors",
|
| 226 |
+
"model.layers.25.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 227 |
+
"model.layers.25.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 228 |
+
"model.layers.25.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
|
| 229 |
+
"model.layers.25.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 230 |
+
"model.layers.25.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 231 |
+
"model.layers.25.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 232 |
+
"model.layers.25.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 233 |
+
"model.layers.25.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 234 |
+
"model.layers.25.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 235 |
+
"model.layers.25.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 236 |
+
"model.layers.26.input_layernorm.weight": "model-00004-of-00004.safetensors",
|
| 237 |
+
"model.layers.26.mlp.down_proj.weight": "model-00004-of-00004.safetensors",
|
| 238 |
+
"model.layers.26.mlp.gate_proj.weight": "model-00003-of-00004.safetensors",
|
| 239 |
+
"model.layers.26.mlp.up_proj.weight": "model-00003-of-00004.safetensors",
|
| 240 |
+
"model.layers.26.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
|
| 241 |
+
"model.layers.26.self_attn.k_proj.bias": "model-00003-of-00004.safetensors",
|
| 242 |
+
"model.layers.26.self_attn.k_proj.weight": "model-00003-of-00004.safetensors",
|
| 243 |
+
"model.layers.26.self_attn.o_proj.weight": "model-00003-of-00004.safetensors",
|
| 244 |
+
"model.layers.26.self_attn.q_proj.bias": "model-00003-of-00004.safetensors",
|
| 245 |
+
"model.layers.26.self_attn.q_proj.weight": "model-00003-of-00004.safetensors",
|
| 246 |
+
"model.layers.26.self_attn.v_proj.bias": "model-00003-of-00004.safetensors",
|
| 247 |
+
"model.layers.26.self_attn.v_proj.weight": "model-00003-of-00004.safetensors",
|
| 248 |
+
"model.layers.27.input_layernorm.weight": "model-00004-of-00004.safetensors",
|
| 249 |
+
"model.layers.27.mlp.down_proj.weight": "model-00004-of-00004.safetensors",
|
| 250 |
+
"model.layers.27.mlp.gate_proj.weight": "model-00004-of-00004.safetensors",
|
| 251 |
+
"model.layers.27.mlp.up_proj.weight": "model-00004-of-00004.safetensors",
|
| 252 |
+
"model.layers.27.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
|
| 253 |
+
"model.layers.27.self_attn.k_proj.bias": "model-00004-of-00004.safetensors",
|
| 254 |
+
"model.layers.27.self_attn.k_proj.weight": "model-00004-of-00004.safetensors",
|
| 255 |
+
"model.layers.27.self_attn.o_proj.weight": "model-00004-of-00004.safetensors",
|
| 256 |
+
"model.layers.27.self_attn.q_proj.bias": "model-00004-of-00004.safetensors",
|
| 257 |
+
"model.layers.27.self_attn.q_proj.weight": "model-00004-of-00004.safetensors",
|
| 258 |
+
"model.layers.27.self_attn.v_proj.bias": "model-00004-of-00004.safetensors",
|
| 259 |
+
"model.layers.27.self_attn.v_proj.weight": "model-00004-of-00004.safetensors",
|
| 260 |
+
"model.layers.3.input_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 261 |
+
"model.layers.3.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 262 |
+
"model.layers.3.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 263 |
+
"model.layers.3.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 264 |
+
"model.layers.3.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 265 |
+
"model.layers.3.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 266 |
+
"model.layers.3.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 267 |
+
"model.layers.3.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 268 |
+
"model.layers.3.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 269 |
+
"model.layers.3.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 270 |
+
"model.layers.3.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 271 |
+
"model.layers.3.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 272 |
+
"model.layers.4.input_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 273 |
+
"model.layers.4.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 274 |
+
"model.layers.4.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 275 |
+
"model.layers.4.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 276 |
+
"model.layers.4.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
|
| 277 |
+
"model.layers.4.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 278 |
+
"model.layers.4.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 279 |
+
"model.layers.4.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 280 |
+
"model.layers.4.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 281 |
+
"model.layers.4.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 282 |
+
"model.layers.4.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 283 |
+
"model.layers.4.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 284 |
+
"model.layers.5.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 285 |
+
"model.layers.5.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 286 |
+
"model.layers.5.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 287 |
+
"model.layers.5.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 288 |
+
"model.layers.5.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 289 |
+
"model.layers.5.self_attn.k_proj.bias": "model-00001-of-00004.safetensors",
|
| 290 |
+
"model.layers.5.self_attn.k_proj.weight": "model-00001-of-00004.safetensors",
|
| 291 |
+
"model.layers.5.self_attn.o_proj.weight": "model-00001-of-00004.safetensors",
|
| 292 |
+
"model.layers.5.self_attn.q_proj.bias": "model-00001-of-00004.safetensors",
|
| 293 |
+
"model.layers.5.self_attn.q_proj.weight": "model-00001-of-00004.safetensors",
|
| 294 |
+
"model.layers.5.self_attn.v_proj.bias": "model-00001-of-00004.safetensors",
|
| 295 |
+
"model.layers.5.self_attn.v_proj.weight": "model-00001-of-00004.safetensors",
|
| 296 |
+
"model.layers.6.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 297 |
+
"model.layers.6.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 298 |
+
"model.layers.6.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 299 |
+
"model.layers.6.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 300 |
+
"model.layers.6.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 301 |
+
"model.layers.6.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 302 |
+
"model.layers.6.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 303 |
+
"model.layers.6.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 304 |
+
"model.layers.6.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 305 |
+
"model.layers.6.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 306 |
+
"model.layers.6.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 307 |
+
"model.layers.6.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 308 |
+
"model.layers.7.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 309 |
+
"model.layers.7.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 310 |
+
"model.layers.7.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 311 |
+
"model.layers.7.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 312 |
+
"model.layers.7.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 313 |
+
"model.layers.7.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 314 |
+
"model.layers.7.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 315 |
+
"model.layers.7.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 316 |
+
"model.layers.7.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 317 |
+
"model.layers.7.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 318 |
+
"model.layers.7.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 319 |
+
"model.layers.7.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 320 |
+
"model.layers.8.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 321 |
+
"model.layers.8.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 322 |
+
"model.layers.8.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 323 |
+
"model.layers.8.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 324 |
+
"model.layers.8.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 325 |
+
"model.layers.8.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 326 |
+
"model.layers.8.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 327 |
+
"model.layers.8.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 328 |
+
"model.layers.8.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 329 |
+
"model.layers.8.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 330 |
+
"model.layers.8.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 331 |
+
"model.layers.8.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 332 |
+
"model.layers.9.input_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 333 |
+
"model.layers.9.mlp.down_proj.weight": "model-00002-of-00004.safetensors",
|
| 334 |
+
"model.layers.9.mlp.gate_proj.weight": "model-00002-of-00004.safetensors",
|
| 335 |
+
"model.layers.9.mlp.up_proj.weight": "model-00002-of-00004.safetensors",
|
| 336 |
+
"model.layers.9.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
|
| 337 |
+
"model.layers.9.self_attn.k_proj.bias": "model-00002-of-00004.safetensors",
|
| 338 |
+
"model.layers.9.self_attn.k_proj.weight": "model-00002-of-00004.safetensors",
|
| 339 |
+
"model.layers.9.self_attn.o_proj.weight": "model-00002-of-00004.safetensors",
|
| 340 |
+
"model.layers.9.self_attn.q_proj.bias": "model-00002-of-00004.safetensors",
|
| 341 |
+
"model.layers.9.self_attn.q_proj.weight": "model-00002-of-00004.safetensors",
|
| 342 |
+
"model.layers.9.self_attn.v_proj.bias": "model-00002-of-00004.safetensors",
|
| 343 |
+
"model.layers.9.self_attn.v_proj.weight": "model-00002-of-00004.safetensors",
|
| 344 |
+
"model.norm.weight": "model-00004-of-00004.safetensors",
|
| 345 |
+
"visual.blocks.0.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 346 |
+
"visual.blocks.0.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 347 |
+
"visual.blocks.0.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 348 |
+
"visual.blocks.0.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 349 |
+
"visual.blocks.0.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 350 |
+
"visual.blocks.0.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 351 |
+
"visual.blocks.0.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 352 |
+
"visual.blocks.0.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 353 |
+
"visual.blocks.0.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 354 |
+
"visual.blocks.0.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 355 |
+
"visual.blocks.0.norm1.weight": "model-00001-of-00004.safetensors",
|
| 356 |
+
"visual.blocks.0.norm2.weight": "model-00001-of-00004.safetensors",
|
| 357 |
+
"visual.blocks.1.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 358 |
+
"visual.blocks.1.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 359 |
+
"visual.blocks.1.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 360 |
+
"visual.blocks.1.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 361 |
+
"visual.blocks.1.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 362 |
+
"visual.blocks.1.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 363 |
+
"visual.blocks.1.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 364 |
+
"visual.blocks.1.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 365 |
+
"visual.blocks.1.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 366 |
+
"visual.blocks.1.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 367 |
+
"visual.blocks.1.norm1.weight": "model-00001-of-00004.safetensors",
|
| 368 |
+
"visual.blocks.1.norm2.weight": "model-00001-of-00004.safetensors",
|
| 369 |
+
"visual.blocks.10.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 370 |
+
"visual.blocks.10.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 371 |
+
"visual.blocks.10.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 372 |
+
"visual.blocks.10.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 373 |
+
"visual.blocks.10.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 374 |
+
"visual.blocks.10.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 375 |
+
"visual.blocks.10.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 376 |
+
"visual.blocks.10.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 377 |
+
"visual.blocks.10.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 378 |
+
"visual.blocks.10.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 379 |
+
"visual.blocks.10.norm1.weight": "model-00001-of-00004.safetensors",
|
| 380 |
+
"visual.blocks.10.norm2.weight": "model-00001-of-00004.safetensors",
|
| 381 |
+
"visual.blocks.11.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 382 |
+
"visual.blocks.11.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 383 |
+
"visual.blocks.11.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 384 |
+
"visual.blocks.11.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 385 |
+
"visual.blocks.11.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 386 |
+
"visual.blocks.11.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 387 |
+
"visual.blocks.11.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 388 |
+
"visual.blocks.11.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 389 |
+
"visual.blocks.11.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 390 |
+
"visual.blocks.11.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 391 |
+
"visual.blocks.11.norm1.weight": "model-00001-of-00004.safetensors",
|
| 392 |
+
"visual.blocks.11.norm2.weight": "model-00001-of-00004.safetensors",
|
| 393 |
+
"visual.blocks.12.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 394 |
+
"visual.blocks.12.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 395 |
+
"visual.blocks.12.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 396 |
+
"visual.blocks.12.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 397 |
+
"visual.blocks.12.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 398 |
+
"visual.blocks.12.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 399 |
+
"visual.blocks.12.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 400 |
+
"visual.blocks.12.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 401 |
+
"visual.blocks.12.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 402 |
+
"visual.blocks.12.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 403 |
+
"visual.blocks.12.norm1.weight": "model-00001-of-00004.safetensors",
|
| 404 |
+
"visual.blocks.12.norm2.weight": "model-00001-of-00004.safetensors",
|
| 405 |
+
"visual.blocks.13.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 406 |
+
"visual.blocks.13.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 407 |
+
"visual.blocks.13.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 408 |
+
"visual.blocks.13.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 409 |
+
"visual.blocks.13.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 410 |
+
"visual.blocks.13.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 411 |
+
"visual.blocks.13.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 412 |
+
"visual.blocks.13.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 413 |
+
"visual.blocks.13.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 414 |
+
"visual.blocks.13.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 415 |
+
"visual.blocks.13.norm1.weight": "model-00001-of-00004.safetensors",
|
| 416 |
+
"visual.blocks.13.norm2.weight": "model-00001-of-00004.safetensors",
|
| 417 |
+
"visual.blocks.14.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 418 |
+
"visual.blocks.14.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 419 |
+
"visual.blocks.14.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 420 |
+
"visual.blocks.14.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 421 |
+
"visual.blocks.14.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 422 |
+
"visual.blocks.14.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 423 |
+
"visual.blocks.14.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 424 |
+
"visual.blocks.14.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 425 |
+
"visual.blocks.14.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 426 |
+
"visual.blocks.14.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 427 |
+
"visual.blocks.14.norm1.weight": "model-00001-of-00004.safetensors",
|
| 428 |
+
"visual.blocks.14.norm2.weight": "model-00001-of-00004.safetensors",
|
| 429 |
+
"visual.blocks.15.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 430 |
+
"visual.blocks.15.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 431 |
+
"visual.blocks.15.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 432 |
+
"visual.blocks.15.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 433 |
+
"visual.blocks.15.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 434 |
+
"visual.blocks.15.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 435 |
+
"visual.blocks.15.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 436 |
+
"visual.blocks.15.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 437 |
+
"visual.blocks.15.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 438 |
+
"visual.blocks.15.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 439 |
+
"visual.blocks.15.norm1.weight": "model-00001-of-00004.safetensors",
|
| 440 |
+
"visual.blocks.15.norm2.weight": "model-00001-of-00004.safetensors",
|
| 441 |
+
"visual.blocks.16.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 442 |
+
"visual.blocks.16.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 443 |
+
"visual.blocks.16.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 444 |
+
"visual.blocks.16.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 445 |
+
"visual.blocks.16.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 446 |
+
"visual.blocks.16.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 447 |
+
"visual.blocks.16.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 448 |
+
"visual.blocks.16.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 449 |
+
"visual.blocks.16.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 450 |
+
"visual.blocks.16.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 451 |
+
"visual.blocks.16.norm1.weight": "model-00001-of-00004.safetensors",
|
| 452 |
+
"visual.blocks.16.norm2.weight": "model-00001-of-00004.safetensors",
|
| 453 |
+
"visual.blocks.17.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 454 |
+
"visual.blocks.17.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 455 |
+
"visual.blocks.17.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 456 |
+
"visual.blocks.17.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 457 |
+
"visual.blocks.17.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 458 |
+
"visual.blocks.17.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 459 |
+
"visual.blocks.17.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 460 |
+
"visual.blocks.17.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 461 |
+
"visual.blocks.17.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 462 |
+
"visual.blocks.17.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 463 |
+
"visual.blocks.17.norm1.weight": "model-00001-of-00004.safetensors",
|
| 464 |
+
"visual.blocks.17.norm2.weight": "model-00001-of-00004.safetensors",
|
| 465 |
+
"visual.blocks.18.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 466 |
+
"visual.blocks.18.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 467 |
+
"visual.blocks.18.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 468 |
+
"visual.blocks.18.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 469 |
+
"visual.blocks.18.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 470 |
+
"visual.blocks.18.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 471 |
+
"visual.blocks.18.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 472 |
+
"visual.blocks.18.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 473 |
+
"visual.blocks.18.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 474 |
+
"visual.blocks.18.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 475 |
+
"visual.blocks.18.norm1.weight": "model-00001-of-00004.safetensors",
|
| 476 |
+
"visual.blocks.18.norm2.weight": "model-00001-of-00004.safetensors",
|
| 477 |
+
"visual.blocks.19.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 478 |
+
"visual.blocks.19.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 479 |
+
"visual.blocks.19.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 480 |
+
"visual.blocks.19.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 481 |
+
"visual.blocks.19.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 482 |
+
"visual.blocks.19.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 483 |
+
"visual.blocks.19.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 484 |
+
"visual.blocks.19.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 485 |
+
"visual.blocks.19.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 486 |
+
"visual.blocks.19.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 487 |
+
"visual.blocks.19.norm1.weight": "model-00001-of-00004.safetensors",
|
| 488 |
+
"visual.blocks.19.norm2.weight": "model-00001-of-00004.safetensors",
|
| 489 |
+
"visual.blocks.2.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 490 |
+
"visual.blocks.2.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 491 |
+
"visual.blocks.2.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 492 |
+
"visual.blocks.2.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 493 |
+
"visual.blocks.2.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 494 |
+
"visual.blocks.2.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 495 |
+
"visual.blocks.2.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 496 |
+
"visual.blocks.2.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 497 |
+
"visual.blocks.2.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 498 |
+
"visual.blocks.2.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 499 |
+
"visual.blocks.2.norm1.weight": "model-00001-of-00004.safetensors",
|
| 500 |
+
"visual.blocks.2.norm2.weight": "model-00001-of-00004.safetensors",
|
| 501 |
+
"visual.blocks.20.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 502 |
+
"visual.blocks.20.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 503 |
+
"visual.blocks.20.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 504 |
+
"visual.blocks.20.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 505 |
+
"visual.blocks.20.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 506 |
+
"visual.blocks.20.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 507 |
+
"visual.blocks.20.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 508 |
+
"visual.blocks.20.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 509 |
+
"visual.blocks.20.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 510 |
+
"visual.blocks.20.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 511 |
+
"visual.blocks.20.norm1.weight": "model-00001-of-00004.safetensors",
|
| 512 |
+
"visual.blocks.20.norm2.weight": "model-00001-of-00004.safetensors",
|
| 513 |
+
"visual.blocks.21.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 514 |
+
"visual.blocks.21.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 515 |
+
"visual.blocks.21.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 516 |
+
"visual.blocks.21.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 517 |
+
"visual.blocks.21.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 518 |
+
"visual.blocks.21.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 519 |
+
"visual.blocks.21.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 520 |
+
"visual.blocks.21.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 521 |
+
"visual.blocks.21.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 522 |
+
"visual.blocks.21.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 523 |
+
"visual.blocks.21.norm1.weight": "model-00001-of-00004.safetensors",
|
| 524 |
+
"visual.blocks.21.norm2.weight": "model-00001-of-00004.safetensors",
|
| 525 |
+
"visual.blocks.22.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 526 |
+
"visual.blocks.22.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 527 |
+
"visual.blocks.22.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 528 |
+
"visual.blocks.22.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 529 |
+
"visual.blocks.22.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 530 |
+
"visual.blocks.22.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 531 |
+
"visual.blocks.22.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 532 |
+
"visual.blocks.22.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 533 |
+
"visual.blocks.22.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 534 |
+
"visual.blocks.22.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 535 |
+
"visual.blocks.22.norm1.weight": "model-00001-of-00004.safetensors",
|
| 536 |
+
"visual.blocks.22.norm2.weight": "model-00001-of-00004.safetensors",
|
| 537 |
+
"visual.blocks.23.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 538 |
+
"visual.blocks.23.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 539 |
+
"visual.blocks.23.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 540 |
+
"visual.blocks.23.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 541 |
+
"visual.blocks.23.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 542 |
+
"visual.blocks.23.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 543 |
+
"visual.blocks.23.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 544 |
+
"visual.blocks.23.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 545 |
+
"visual.blocks.23.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 546 |
+
"visual.blocks.23.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 547 |
+
"visual.blocks.23.norm1.weight": "model-00001-of-00004.safetensors",
|
| 548 |
+
"visual.blocks.23.norm2.weight": "model-00001-of-00004.safetensors",
|
| 549 |
+
"visual.blocks.24.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 550 |
+
"visual.blocks.24.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 551 |
+
"visual.blocks.24.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 552 |
+
"visual.blocks.24.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 553 |
+
"visual.blocks.24.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 554 |
+
"visual.blocks.24.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 555 |
+
"visual.blocks.24.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 556 |
+
"visual.blocks.24.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 557 |
+
"visual.blocks.24.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 558 |
+
"visual.blocks.24.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 559 |
+
"visual.blocks.24.norm1.weight": "model-00001-of-00004.safetensors",
|
| 560 |
+
"visual.blocks.24.norm2.weight": "model-00001-of-00004.safetensors",
|
| 561 |
+
"visual.blocks.25.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 562 |
+
"visual.blocks.25.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 563 |
+
"visual.blocks.25.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 564 |
+
"visual.blocks.25.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 565 |
+
"visual.blocks.25.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 566 |
+
"visual.blocks.25.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 567 |
+
"visual.blocks.25.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 568 |
+
"visual.blocks.25.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 569 |
+
"visual.blocks.25.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 570 |
+
"visual.blocks.25.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 571 |
+
"visual.blocks.25.norm1.weight": "model-00001-of-00004.safetensors",
|
| 572 |
+
"visual.blocks.25.norm2.weight": "model-00001-of-00004.safetensors",
|
| 573 |
+
"visual.blocks.26.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 574 |
+
"visual.blocks.26.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 575 |
+
"visual.blocks.26.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 576 |
+
"visual.blocks.26.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 577 |
+
"visual.blocks.26.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 578 |
+
"visual.blocks.26.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 579 |
+
"visual.blocks.26.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 580 |
+
"visual.blocks.26.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 581 |
+
"visual.blocks.26.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 582 |
+
"visual.blocks.26.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 583 |
+
"visual.blocks.26.norm1.weight": "model-00001-of-00004.safetensors",
|
| 584 |
+
"visual.blocks.26.norm2.weight": "model-00001-of-00004.safetensors",
|
| 585 |
+
"visual.blocks.27.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 586 |
+
"visual.blocks.27.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 587 |
+
"visual.blocks.27.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 588 |
+
"visual.blocks.27.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 589 |
+
"visual.blocks.27.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 590 |
+
"visual.blocks.27.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 591 |
+
"visual.blocks.27.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 592 |
+
"visual.blocks.27.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 593 |
+
"visual.blocks.27.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 594 |
+
"visual.blocks.27.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 595 |
+
"visual.blocks.27.norm1.weight": "model-00001-of-00004.safetensors",
|
| 596 |
+
"visual.blocks.27.norm2.weight": "model-00001-of-00004.safetensors",
|
| 597 |
+
"visual.blocks.28.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 598 |
+
"visual.blocks.28.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 599 |
+
"visual.blocks.28.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 600 |
+
"visual.blocks.28.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 601 |
+
"visual.blocks.28.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 602 |
+
"visual.blocks.28.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 603 |
+
"visual.blocks.28.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 604 |
+
"visual.blocks.28.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 605 |
+
"visual.blocks.28.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 606 |
+
"visual.blocks.28.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 607 |
+
"visual.blocks.28.norm1.weight": "model-00001-of-00004.safetensors",
|
| 608 |
+
"visual.blocks.28.norm2.weight": "model-00001-of-00004.safetensors",
|
| 609 |
+
"visual.blocks.29.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 610 |
+
"visual.blocks.29.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 611 |
+
"visual.blocks.29.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 612 |
+
"visual.blocks.29.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 613 |
+
"visual.blocks.29.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 614 |
+
"visual.blocks.29.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 615 |
+
"visual.blocks.29.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 616 |
+
"visual.blocks.29.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 617 |
+
"visual.blocks.29.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 618 |
+
"visual.blocks.29.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 619 |
+
"visual.blocks.29.norm1.weight": "model-00001-of-00004.safetensors",
|
| 620 |
+
"visual.blocks.29.norm2.weight": "model-00001-of-00004.safetensors",
|
| 621 |
+
"visual.blocks.3.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 622 |
+
"visual.blocks.3.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 623 |
+
"visual.blocks.3.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 624 |
+
"visual.blocks.3.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 625 |
+
"visual.blocks.3.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 626 |
+
"visual.blocks.3.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 627 |
+
"visual.blocks.3.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 628 |
+
"visual.blocks.3.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 629 |
+
"visual.blocks.3.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 630 |
+
"visual.blocks.3.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 631 |
+
"visual.blocks.3.norm1.weight": "model-00001-of-00004.safetensors",
|
| 632 |
+
"visual.blocks.3.norm2.weight": "model-00001-of-00004.safetensors",
|
| 633 |
+
"visual.blocks.30.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 634 |
+
"visual.blocks.30.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 635 |
+
"visual.blocks.30.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 636 |
+
"visual.blocks.30.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 637 |
+
"visual.blocks.30.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 638 |
+
"visual.blocks.30.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 639 |
+
"visual.blocks.30.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 640 |
+
"visual.blocks.30.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 641 |
+
"visual.blocks.30.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 642 |
+
"visual.blocks.30.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 643 |
+
"visual.blocks.30.norm1.weight": "model-00001-of-00004.safetensors",
|
| 644 |
+
"visual.blocks.30.norm2.weight": "model-00001-of-00004.safetensors",
|
| 645 |
+
"visual.blocks.31.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 646 |
+
"visual.blocks.31.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 647 |
+
"visual.blocks.31.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 648 |
+
"visual.blocks.31.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 649 |
+
"visual.blocks.31.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 650 |
+
"visual.blocks.31.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 651 |
+
"visual.blocks.31.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 652 |
+
"visual.blocks.31.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 653 |
+
"visual.blocks.31.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 654 |
+
"visual.blocks.31.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 655 |
+
"visual.blocks.31.norm1.weight": "model-00001-of-00004.safetensors",
|
| 656 |
+
"visual.blocks.31.norm2.weight": "model-00001-of-00004.safetensors",
|
| 657 |
+
"visual.blocks.4.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 658 |
+
"visual.blocks.4.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 659 |
+
"visual.blocks.4.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 660 |
+
"visual.blocks.4.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 661 |
+
"visual.blocks.4.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 662 |
+
"visual.blocks.4.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 663 |
+
"visual.blocks.4.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 664 |
+
"visual.blocks.4.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 665 |
+
"visual.blocks.4.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 666 |
+
"visual.blocks.4.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 667 |
+
"visual.blocks.4.norm1.weight": "model-00001-of-00004.safetensors",
|
| 668 |
+
"visual.blocks.4.norm2.weight": "model-00001-of-00004.safetensors",
|
| 669 |
+
"visual.blocks.5.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 670 |
+
"visual.blocks.5.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 671 |
+
"visual.blocks.5.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 672 |
+
"visual.blocks.5.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 673 |
+
"visual.blocks.5.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 674 |
+
"visual.blocks.5.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 675 |
+
"visual.blocks.5.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 676 |
+
"visual.blocks.5.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 677 |
+
"visual.blocks.5.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 678 |
+
"visual.blocks.5.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 679 |
+
"visual.blocks.5.norm1.weight": "model-00001-of-00004.safetensors",
|
| 680 |
+
"visual.blocks.5.norm2.weight": "model-00001-of-00004.safetensors",
|
| 681 |
+
"visual.blocks.6.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 682 |
+
"visual.blocks.6.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 683 |
+
"visual.blocks.6.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 684 |
+
"visual.blocks.6.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 685 |
+
"visual.blocks.6.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 686 |
+
"visual.blocks.6.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 687 |
+
"visual.blocks.6.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 688 |
+
"visual.blocks.6.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 689 |
+
"visual.blocks.6.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 690 |
+
"visual.blocks.6.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 691 |
+
"visual.blocks.6.norm1.weight": "model-00001-of-00004.safetensors",
|
| 692 |
+
"visual.blocks.6.norm2.weight": "model-00001-of-00004.safetensors",
|
| 693 |
+
"visual.blocks.7.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 694 |
+
"visual.blocks.7.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 695 |
+
"visual.blocks.7.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 696 |
+
"visual.blocks.7.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 697 |
+
"visual.blocks.7.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 698 |
+
"visual.blocks.7.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 699 |
+
"visual.blocks.7.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 700 |
+
"visual.blocks.7.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 701 |
+
"visual.blocks.7.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 702 |
+
"visual.blocks.7.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 703 |
+
"visual.blocks.7.norm1.weight": "model-00001-of-00004.safetensors",
|
| 704 |
+
"visual.blocks.7.norm2.weight": "model-00001-of-00004.safetensors",
|
| 705 |
+
"visual.blocks.8.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 706 |
+
"visual.blocks.8.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 707 |
+
"visual.blocks.8.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 708 |
+
"visual.blocks.8.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 709 |
+
"visual.blocks.8.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 710 |
+
"visual.blocks.8.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 711 |
+
"visual.blocks.8.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 712 |
+
"visual.blocks.8.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 713 |
+
"visual.blocks.8.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 714 |
+
"visual.blocks.8.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 715 |
+
"visual.blocks.8.norm1.weight": "model-00001-of-00004.safetensors",
|
| 716 |
+
"visual.blocks.8.norm2.weight": "model-00001-of-00004.safetensors",
|
| 717 |
+
"visual.blocks.9.attn.proj.bias": "model-00001-of-00004.safetensors",
|
| 718 |
+
"visual.blocks.9.attn.proj.weight": "model-00001-of-00004.safetensors",
|
| 719 |
+
"visual.blocks.9.attn.qkv.bias": "model-00001-of-00004.safetensors",
|
| 720 |
+
"visual.blocks.9.attn.qkv.weight": "model-00001-of-00004.safetensors",
|
| 721 |
+
"visual.blocks.9.mlp.down_proj.bias": "model-00001-of-00004.safetensors",
|
| 722 |
+
"visual.blocks.9.mlp.down_proj.weight": "model-00001-of-00004.safetensors",
|
| 723 |
+
"visual.blocks.9.mlp.gate_proj.bias": "model-00001-of-00004.safetensors",
|
| 724 |
+
"visual.blocks.9.mlp.gate_proj.weight": "model-00001-of-00004.safetensors",
|
| 725 |
+
"visual.blocks.9.mlp.up_proj.bias": "model-00001-of-00004.safetensors",
|
| 726 |
+
"visual.blocks.9.mlp.up_proj.weight": "model-00001-of-00004.safetensors",
|
| 727 |
+
"visual.blocks.9.norm1.weight": "model-00001-of-00004.safetensors",
|
| 728 |
+
"visual.blocks.9.norm2.weight": "model-00001-of-00004.safetensors",
|
| 729 |
+
"visual.merger.ln_q.weight": "model-00001-of-00004.safetensors",
|
| 730 |
+
"visual.merger.mlp.0.bias": "model-00001-of-00004.safetensors",
|
| 731 |
+
"visual.merger.mlp.0.weight": "model-00001-of-00004.safetensors",
|
| 732 |
+
"visual.merger.mlp.2.bias": "model-00001-of-00004.safetensors",
|
| 733 |
+
"visual.merger.mlp.2.weight": "model-00001-of-00004.safetensors",
|
| 734 |
+
"visual.patch_embed.proj.weight": "model-00001-of-00004.safetensors"
|
| 735 |
+
}
|
| 736 |
+
}
|
pretrained_model/AgentThink-model/preprocessor_config.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"min_pixels": 3136,
|
| 3 |
+
"max_pixels": 12845056,
|
| 4 |
+
"patch_size": 14,
|
| 5 |
+
"temporal_patch_size": 2,
|
| 6 |
+
"merge_size": 2,
|
| 7 |
+
"image_mean": [
|
| 8 |
+
0.48145466,
|
| 9 |
+
0.4578275,
|
| 10 |
+
0.40821073
|
| 11 |
+
],
|
| 12 |
+
"image_std": [
|
| 13 |
+
0.26862954,
|
| 14 |
+
0.26130258,
|
| 15 |
+
0.27577711
|
| 16 |
+
],
|
| 17 |
+
"image_processor_type": "Qwen2VLImageProcessor",
|
| 18 |
+
"processor_class": "Qwen2_5_VLProcessor"
|
| 19 |
+
}
|
pretrained_model/AgentThink-model/special_tokens_map.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"additional_special_tokens": [
|
| 3 |
+
"<|im_start|>",
|
| 4 |
+
"<|im_end|>",
|
| 5 |
+
"<|object_ref_start|>",
|
| 6 |
+
"<|object_ref_end|>",
|
| 7 |
+
"<|box_start|>",
|
| 8 |
+
"<|box_end|>",
|
| 9 |
+
"<|quad_start|>",
|
| 10 |
+
"<|quad_end|>",
|
| 11 |
+
"<|vision_start|>",
|
| 12 |
+
"<|vision_end|>",
|
| 13 |
+
"<|vision_pad|>",
|
| 14 |
+
"<|image_pad|>",
|
| 15 |
+
"<|video_pad|>"
|
| 16 |
+
],
|
| 17 |
+
"eos_token": {
|
| 18 |
+
"content": "<|im_end|>",
|
| 19 |
+
"lstrip": false,
|
| 20 |
+
"normalized": false,
|
| 21 |
+
"rstrip": false,
|
| 22 |
+
"single_word": false
|
| 23 |
+
},
|
| 24 |
+
"pad_token": {
|
| 25 |
+
"content": "<|endoftext|>",
|
| 26 |
+
"lstrip": false,
|
| 27 |
+
"normalized": false,
|
| 28 |
+
"rstrip": false,
|
| 29 |
+
"single_word": false
|
| 30 |
+
}
|
| 31 |
+
}
|
pretrained_model/AgentThink-model/tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9c5ae00e602b8860cbd784ba82a8aa14e8feecec692e7076590d014d7b7fdafa
|
| 3 |
+
size 11421896
|
pretrained_model/AgentThink-model/tokenizer_config.json
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_bos_token": false,
|
| 3 |
+
"add_prefix_space": false,
|
| 4 |
+
"added_tokens_decoder": {
|
| 5 |
+
"151643": {
|
| 6 |
+
"content": "<|endoftext|>",
|
| 7 |
+
"lstrip": false,
|
| 8 |
+
"normalized": false,
|
| 9 |
+
"rstrip": false,
|
| 10 |
+
"single_word": false,
|
| 11 |
+
"special": true
|
| 12 |
+
},
|
| 13 |
+
"151644": {
|
| 14 |
+
"content": "<|im_start|>",
|
| 15 |
+
"lstrip": false,
|
| 16 |
+
"normalized": false,
|
| 17 |
+
"rstrip": false,
|
| 18 |
+
"single_word": false,
|
| 19 |
+
"special": true
|
| 20 |
+
},
|
| 21 |
+
"151645": {
|
| 22 |
+
"content": "<|im_end|>",
|
| 23 |
+
"lstrip": false,
|
| 24 |
+
"normalized": false,
|
| 25 |
+
"rstrip": false,
|
| 26 |
+
"single_word": false,
|
| 27 |
+
"special": true
|
| 28 |
+
},
|
| 29 |
+
"151646": {
|
| 30 |
+
"content": "<|object_ref_start|>",
|
| 31 |
+
"lstrip": false,
|
| 32 |
+
"normalized": false,
|
| 33 |
+
"rstrip": false,
|
| 34 |
+
"single_word": false,
|
| 35 |
+
"special": true
|
| 36 |
+
},
|
| 37 |
+
"151647": {
|
| 38 |
+
"content": "<|object_ref_end|>",
|
| 39 |
+
"lstrip": false,
|
| 40 |
+
"normalized": false,
|
| 41 |
+
"rstrip": false,
|
| 42 |
+
"single_word": false,
|
| 43 |
+
"special": true
|
| 44 |
+
},
|
| 45 |
+
"151648": {
|
| 46 |
+
"content": "<|box_start|>",
|
| 47 |
+
"lstrip": false,
|
| 48 |
+
"normalized": false,
|
| 49 |
+
"rstrip": false,
|
| 50 |
+
"single_word": false,
|
| 51 |
+
"special": true
|
| 52 |
+
},
|
| 53 |
+
"151649": {
|
| 54 |
+
"content": "<|box_end|>",
|
| 55 |
+
"lstrip": false,
|
| 56 |
+
"normalized": false,
|
| 57 |
+
"rstrip": false,
|
| 58 |
+
"single_word": false,
|
| 59 |
+
"special": true
|
| 60 |
+
},
|
| 61 |
+
"151650": {
|
| 62 |
+
"content": "<|quad_start|>",
|
| 63 |
+
"lstrip": false,
|
| 64 |
+
"normalized": false,
|
| 65 |
+
"rstrip": false,
|
| 66 |
+
"single_word": false,
|
| 67 |
+
"special": true
|
| 68 |
+
},
|
| 69 |
+
"151651": {
|
| 70 |
+
"content": "<|quad_end|>",
|
| 71 |
+
"lstrip": false,
|
| 72 |
+
"normalized": false,
|
| 73 |
+
"rstrip": false,
|
| 74 |
+
"single_word": false,
|
| 75 |
+
"special": true
|
| 76 |
+
},
|
| 77 |
+
"151652": {
|
| 78 |
+
"content": "<|vision_start|>",
|
| 79 |
+
"lstrip": false,
|
| 80 |
+
"normalized": false,
|
| 81 |
+
"rstrip": false,
|
| 82 |
+
"single_word": false,
|
| 83 |
+
"special": true
|
| 84 |
+
},
|
| 85 |
+
"151653": {
|
| 86 |
+
"content": "<|vision_end|>",
|
| 87 |
+
"lstrip": false,
|
| 88 |
+
"normalized": false,
|
| 89 |
+
"rstrip": false,
|
| 90 |
+
"single_word": false,
|
| 91 |
+
"special": true
|
| 92 |
+
},
|
| 93 |
+
"151654": {
|
| 94 |
+
"content": "<|vision_pad|>",
|
| 95 |
+
"lstrip": false,
|
| 96 |
+
"normalized": false,
|
| 97 |
+
"rstrip": false,
|
| 98 |
+
"single_word": false,
|
| 99 |
+
"special": true
|
| 100 |
+
},
|
| 101 |
+
"151655": {
|
| 102 |
+
"content": "<|image_pad|>",
|
| 103 |
+
"lstrip": false,
|
| 104 |
+
"normalized": false,
|
| 105 |
+
"rstrip": false,
|
| 106 |
+
"single_word": false,
|
| 107 |
+
"special": true
|
| 108 |
+
},
|
| 109 |
+
"151656": {
|
| 110 |
+
"content": "<|video_pad|>",
|
| 111 |
+
"lstrip": false,
|
| 112 |
+
"normalized": false,
|
| 113 |
+
"rstrip": false,
|
| 114 |
+
"single_word": false,
|
| 115 |
+
"special": true
|
| 116 |
+
},
|
| 117 |
+
"151657": {
|
| 118 |
+
"content": "<tool_call>",
|
| 119 |
+
"lstrip": false,
|
| 120 |
+
"normalized": false,
|
| 121 |
+
"rstrip": false,
|
| 122 |
+
"single_word": false,
|
| 123 |
+
"special": false
|
| 124 |
+
},
|
| 125 |
+
"151658": {
|
| 126 |
+
"content": "</tool_call>",
|
| 127 |
+
"lstrip": false,
|
| 128 |
+
"normalized": false,
|
| 129 |
+
"rstrip": false,
|
| 130 |
+
"single_word": false,
|
| 131 |
+
"special": false
|
| 132 |
+
},
|
| 133 |
+
"151659": {
|
| 134 |
+
"content": "<|fim_prefix|>",
|
| 135 |
+
"lstrip": false,
|
| 136 |
+
"normalized": false,
|
| 137 |
+
"rstrip": false,
|
| 138 |
+
"single_word": false,
|
| 139 |
+
"special": false
|
| 140 |
+
},
|
| 141 |
+
"151660": {
|
| 142 |
+
"content": "<|fim_middle|>",
|
| 143 |
+
"lstrip": false,
|
| 144 |
+
"normalized": false,
|
| 145 |
+
"rstrip": false,
|
| 146 |
+
"single_word": false,
|
| 147 |
+
"special": false
|
| 148 |
+
},
|
| 149 |
+
"151661": {
|
| 150 |
+
"content": "<|fim_suffix|>",
|
| 151 |
+
"lstrip": false,
|
| 152 |
+
"normalized": false,
|
| 153 |
+
"rstrip": false,
|
| 154 |
+
"single_word": false,
|
| 155 |
+
"special": false
|
| 156 |
+
},
|
| 157 |
+
"151662": {
|
| 158 |
+
"content": "<|fim_pad|>",
|
| 159 |
+
"lstrip": false,
|
| 160 |
+
"normalized": false,
|
| 161 |
+
"rstrip": false,
|
| 162 |
+
"single_word": false,
|
| 163 |
+
"special": false
|
| 164 |
+
},
|
| 165 |
+
"151663": {
|
| 166 |
+
"content": "<|repo_name|>",
|
| 167 |
+
"lstrip": false,
|
| 168 |
+
"normalized": false,
|
| 169 |
+
"rstrip": false,
|
| 170 |
+
"single_word": false,
|
| 171 |
+
"special": false
|
| 172 |
+
},
|
| 173 |
+
"151664": {
|
| 174 |
+
"content": "<|file_sep|>",
|
| 175 |
+
"lstrip": false,
|
| 176 |
+
"normalized": false,
|
| 177 |
+
"rstrip": false,
|
| 178 |
+
"single_word": false,
|
| 179 |
+
"special": false
|
| 180 |
+
}
|
| 181 |
+
},
|
| 182 |
+
"additional_special_tokens": [
|
| 183 |
+
"<|im_start|>",
|
| 184 |
+
"<|im_end|>",
|
| 185 |
+
"<|object_ref_start|>",
|
| 186 |
+
"<|object_ref_end|>",
|
| 187 |
+
"<|box_start|>",
|
| 188 |
+
"<|box_end|>",
|
| 189 |
+
"<|quad_start|>",
|
| 190 |
+
"<|quad_end|>",
|
| 191 |
+
"<|vision_start|>",
|
| 192 |
+
"<|vision_end|>",
|
| 193 |
+
"<|vision_pad|>",
|
| 194 |
+
"<|image_pad|>",
|
| 195 |
+
"<|video_pad|>"
|
| 196 |
+
],
|
| 197 |
+
"bos_token": null,
|
| 198 |
+
"chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0]['role'] == 'system' %}\n {{- messages[0]['content'] }}\n {%- else %}\n {{- 'You are a helpful assistant.' }}\n {%- endif %}\n {{- \"\\n\\n# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0]['role'] == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' }}\n {%- else %}\n {{- '<|im_start|>system\\nYou are a helpful assistant.<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) or (message.role == \"assistant\" and not message.tool_calls) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role }}\n {%- if message.content %}\n {{- '\\n' + message.content }}\n {%- endif %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {{- tool_call.arguments | tojson }}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n",
|
| 199 |
+
"clean_up_tokenization_spaces": false,
|
| 200 |
+
"eos_token": "<|im_end|>",
|
| 201 |
+
"errors": "replace",
|
| 202 |
+
"extra_special_tokens": {},
|
| 203 |
+
"model_max_length": 131072,
|
| 204 |
+
"pad_token": "<|endoftext|>",
|
| 205 |
+
"processor_class": "Qwen2_5_VLProcessor",
|
| 206 |
+
"split_special_tokens": false,
|
| 207 |
+
"tokenizer_class": "Qwen2Tokenizer",
|
| 208 |
+
"unk_token": null
|
| 209 |
+
}
|
pretrained_model/AgentThink-model/vocab.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pretrained_model/depth_anything_v2_vitb.pth
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0d2b7002e62d39d655571c371333340bd88f67ab95050c03591555aa05645328
|
| 3 |
+
size 389961218
|
pretrained_model/yolov8x-worldv2.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e31726704fd3a802b55cc969c5dc6272f40d7be5a4ddb1cdad6ddfcc98a1abd7
|
| 3 |
+
size 146353272
|
requirements.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
timm
|
| 2 |
+
deepspeed
|
| 3 |
+
openai-clip
|
| 4 |
+
ultralytics
|
| 5 |
+
torch==2.6.0
|
| 6 |
+
torchvision==0.21.0
|
| 7 |
+
torchaudio==2.6.0
|
| 8 |
+
transformers==4.50.1
|
| 9 |
+
shapely
|
results/DriveLMMo1_qwen_7B_exp_rlfh_reward_Full_agent.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
results/DriveLMMo1_qwen_7B_exp_sft_rlhf_Fullv1_ep20.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
results/DriveLMMo1_qwen_7B_swift_exp_sft_rlhf_Fullv2_ep8.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f40c08c0114dca630310928dc9f187c7a0e49c142b6a31666e63730b6ee54056
|
| 3 |
+
size 14003880
|
results/agentthink/DriveLMMo1_AgentThink.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
scripts/__init__.py
ADDED
|
File without changes
|
scripts/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (159 Bytes). View file
|
|
|
scripts/__pycache__/utlis.cpython-310.pyc
ADDED
|
Binary file (874 Bytes). View file
|
|
|
scripts/debug_scripts/debug_agentthink_inference.sh
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# bash scripts/env.sh
|
| 2 |
+
CKPT=$1
|
| 3 |
+
OUTPUT=$2
|
| 4 |
+
torchrun --nnodes=1 \
|
| 5 |
+
--node_rank=0 \
|
| 6 |
+
--master_addr=127.0.0.1 \
|
| 7 |
+
--nproc_per_node=1 \
|
| 8 |
+
--master_port=63668 \
|
| 9 |
+
evaluation/inference_agentthink.py --checkpoint $CKPT --output_name $OUTPUT --out-dir results/debug_agentthink
|
scripts/debug_scripts/debug_inference.sh
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# bash scripts/env.sh
|
| 2 |
+
CKPT=$1
|
| 3 |
+
OUTPUT=$2
|
| 4 |
+
torchrun --nnodes=1 \
|
| 5 |
+
--node_rank=0 \
|
| 6 |
+
--master_addr=127.0.0.1 \
|
| 7 |
+
--nproc_per_node=1 \
|
| 8 |
+
--master_port=63668 \
|
| 9 |
+
evaluation/inference.py --checkpoint $CKPT --output_name $OUTPUT --out-dir results/debug_agentthink
|