图文跨模态融合基础 3:基于Windows和WSL构建LLaVA(视觉语言模型)研究环境

1.进入官方仓库,手动下载代码(git拉取可能会有网络问题)

官方repo:https://github.com/haotian-liu/LLaVA

2.把压缩包放到WSL能看到的地方(这里放的是:D:\repo_zips)

3.在WSL创建新用户(避免污染),创建过程中需要设置密码,填完后全按回车即可。

bash 复制代码
adduser llava

4.给用户权限,并转到用户,需要输入密码

bash 复制代码
usermod -aG sudo llava
su - llava

5.安装unzip工具包

bash 复制代码
sudo apt-get update
sudo apt-get install -y unzip

6.现在Linux文件home中创建work文件夹方便整理文件,解压官方库的压缩包(这里unzip 指令后跟着的是/mnt/ 加上本地存储路径)

bash 复制代码
mkdir -p ~/work && cd ~/work
unzip /mnt/d/repo_zips/LLaVA-main.zip
ls -lh

解压好后显示:

7.查看文件解压好后,拉wheel先装cuda,这里装的是50系显卡更适配的CUDA12.1,然后用清华镜像拉其他的包最大程度加快速度。

bash 复制代码
ls
python3 -m venv ~/venvs/llava_dev
source ~/venvs/llava_dev/bin/activate
python -m pip install -U pip setuptools wheel
pip uninstall -y torch torchvision torchaudio
pip install -U torch torchvision torchaudio \
  --index-url https://download.pytorch.org/whl/cu121 \
  --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple \
  --timeout 120 --retries 20

8.验证torch GPU可用

bash 复制代码
python - <<'PY'
import torch
print("torch:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
if torch.cuda.is_available():
    print("gpu:", torch.cuda.get_device_name(0))
    print("cuda runtime:", torch.version.cuda)
PY

9.安装VLM依赖,并复查环境是否变化。因为-e可能会更改环境(有时候对于需求比较新的硬件是一个不好的现象)。

bash 复制代码
pip install -U transformers accelerate bitsandbytes pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -e . --no-deps
pip install -U transformers accelerate bitsandbytes pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U "protobuf<5" -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U \
  einops==0.6.1 einops-exts==0.0.4 \
  sentencepiece==0.1.99 shortuuid \
  timm==0.6.13 \
  pydantic \
  -i https://pypi.tuna.tsinghua.edu.cn/simple
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else None)"

10.验证editable是否安装成功

bash 复制代码
python -c "import llava; print('llava import OK:', llava.__file__)"

11.在D盘创建一个test文件夹,放入一个demo.jpg测试

12.手动拉取权重:https://huggingface.co/liuhaotian/llava-v1.5-7b/tree/main,下载到本地文件夹(这里放的是D:\repo_zips\llava_weight)。

13.手动拉取视觉塔(clip)依赖,openai/clip-vit-large-patch14-336 at main,下载到本地文件夹(这里放的是D:\repo_zips\llava_weight\openaiclip-vit-large-patch14-336)

14.更改CLIP索引路径,本质上是到文件夹中找到config文件进行修正,修改local的赋值,可以手动改。

bash 复制代码
python - <<'PY'
import json, shutil
p="/mnt/d/repo_zips/llava_weight/config.json"
bak=p+".bak"
shutil.copy2(p,bak)

cfg=json.load(open(p,"r",encoding="utf-8"))
local="/mnt/d/repo_zips\llava_weight\openaiclip-vit-large-patch14-336"

cfg["mm_vision_tower"]=local
json.dump(cfg, open(p,"w",encoding="utf-8"), ensure_ascii=False, indent=2)

print("updated mm_vision_tower ->", local)
print("backup saved ->", bak)
PY

15.跑8bit量化测试

bash 复制代码
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1

python -m llava.serve.cli \
  --model-path /mnt/d/repo_zips/llava_weight \
  --image-file /mnt/d/test/demo.jpg \
  --load-8bit \
  --max-new-tokens 128 \
  --query "Describe the image in detail: objects, people, and background."
相关推荐
数智化精益手记局2 小时前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
Flying pigs~~2 小时前
RAG 完整面试指南:原理、优化、幻觉解决方案
人工智能·prompt·rag·智能体·检索增强生成·rag优化
博.闻广见2 小时前
AI_概率统计-2.常见分布
人工智能·机器学习
企业架构师老王2 小时前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
Aleeeeex2 小时前
RAG 那点事:从 8 份企业文档到能用的问答系统,全过程拆给你看
人工智能·python·ai编程
冬奇Lab2 小时前
一天一个开源项目(第87篇):Tank-OS —— Red Hat 工程师用一个周末,把 AI Agent 塞进了一个可启动的 Linux 镜像
人工智能·开源·资讯
小糖学代码2 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Captaincc3 小时前
转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动
人工智能·vibecoding
AI自动化工坊3 小时前
Late框架技术深度解析:5GB VRAM实现10倍AI编码效率的工程架构
人工智能·5g·架构·ai编程·late
我是大聪明.3 小时前
DeepSeek V4 Pro + 华为昇腾910:国产大模型落地的性能实测与深度解析
人工智能·华为