图文跨模态融合基础 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."
相关推荐
方见华Richard2 小时前
递归对抗引擎RAE:世毫九重构AGI底层逻辑的终极范式与全维度价值极致解读
人工智能·交互·学习方法·原型模式·空间计算
Agent_阿杨2 小时前
智能体来了(西南总部):如何成为智能体行业的领航员
大数据·人工智能
LS_learner2 小时前
Clawdbot介绍与平台部署
人工智能
大傻^2 小时前
大模型基础知识-神经网络
人工智能·深度学习·神经网络
小程故事多_802 小时前
平台工程工具,解锁研发效能的核心密码
人工智能·aigc
多恩Stone2 小时前
【3DV 进阶-12】Trellis.2 数据处理脚本细节
人工智能·pytorch·python·算法·3d·aigc
vx-bot5556662 小时前
企业微信接口在AI智能体与知识库集成中的架构实践
人工智能·架构·企业微信
生成论实验室2 小时前
生成式通用智能(GAGI):基于《易经》状态空间的认知架构
人工智能·神经网络·算法·架构·信息与通信
丝斯20112 小时前
AI学习笔记整理(69)——物理AI中世界模型
人工智能·笔记·学习