配置RSUniVLM环境(自用)
首先git clone这个仓库,但是好像不太行,就直接下载下来吧
创个容器弄,容器里需要conda gpu
镜像的话 在dockerhub找到了一个:docker pull vkashyap10/llava-next
下载在了
ssh root@10.12.107.240 | amos@123 |
这个机器上。等会看看怎么传到rd调研用的机器上。
docker save -o llava-next.tar vkashyap10/llava-next
scp llava-next.tar root@bjrs-acg-tge0209f1a4.bjrs:/ssd2/lixiang/rs/dockerimage
docker load -i /ssd2/lixiang/rs/dockerimage/llava-next.tar##ok scp用不了 那就用bos吧 上传和下载的命令示例如下
bcecmd bos cp text.txt bos:/mybucket/test.txt
bcecmd bos cp bos:/mybucket/test.txt text.txtbcecmd bos cp llava-next.tar bos:/aipe-easyedge-model-zoo/tmp/llava-next.tar
bcecmd bos cp bos:/aipe-easyedge-model-zoo/tmp/llava-next.tar llava-next.tar
docker run --name rsunivlm \--net=host \--privileged \--cap-add=SYS_PTRACE --shm-size 5g \--gpus all \-v /ssd2/lixiang/rs:/ssd2/lixiang/rs \-itd \vkashyap10/llava-next:latest /bin/bash
docker exec -it rsunivlm bash
运行github上相应的命令去配环境,没碰到什么问题。
需要下checkpoints,在Google Drive上,要外网。。那就还是传到那个能连外网的机子上,再导过来。
# 先安装gdown
pip install gdown# 获取Google drive文件(不能是文件夹)的ID
# 比如这个https://drive.google.com/file/d/12LhpGHvGu4wIgXrONspNKqfGFpTfr0-p/view?usp=drive_link 里面的12LhpGHvGu4wIgXrONspNKqfGFpTfr0-p就是id。# 在python中运行
>>> import gdown
>>> url = 'https://drive.google.com/uc?id=1Egva7JAYHliVUcqxk5pnFymyNaE3d_B3'
>>> output = 'added_tokens.json'
>>> gdown.download(url, output, quiet=False)
接下来是跑代码环节了。
在容器里装一个icoding的vscode。
# 请复制以下命令到开发机上执行(注:如在容器内执行,请在命令后添加-p 8888参数,端口号需与启动容器端口相同)
curl -s http://baidu-ide.bj.bcebos.com/platform/script/host-script/install-agent.sh | bash -s -- -g a040a1ac-d5ad-4198-87ac-6a4353c8feaa -c 2c5c163e616de3b377e19c7bed5767ac -v 1.8.401.83.1.03# 报错了,然后去宿主机上看,发现是8888端口被占用了。直接把命令改成-p 8889就成功了
报错1:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
解决1:
# Ubuntu/Debian :
sudo apt-get update
sudo apt-get install -y libgl1-mesa-glx # 或简化为 libgl1
报错2:ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
解决2: apt-get install libglib2.0-dev
报错3:Exception: data did not match any variant of untagged enum ModelWrapper at line 757281 column 3
解决3:gpt说可能是transforms版本不对,去config.json里面看到,要 "transformers_version": "4.46.0",但是pip show的版本是4.39.3。所以删了下个新版本看看行不行。
报错4:ImportError: FlashAttention2 has been toggled on, but it cannot be used due to the following error: the package flash_attn seems to be not installed.
解决4:先检查torch和cuda版本
pip install flash-attn
直接这样装不行,最新版的flushattention要求torch2.2以上,我这边torch2.1。所以去GitHub,flushattention的官方页面,找release,有旧版本,也写清楚了torch和cuda的支持版本。
用这个命令,记得开代理,要不然很慢。pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu12torch2.1cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
报错5:OSError: Incorrect path_or_model_id: '/data/liux/siglip-so400m-patch14-384'. Please provide either the path to a local folder or the repo_id of a model on the Hub.
解决5:这一看就是checkpoints路径有问题啊,感觉有很多隐藏的要改的地方,不如我就直接放到和作者一样的路径好了。
ok服务好像起来了,如下链接应该可以访问
Running on local URL: http://0.0.0.0:1112
url换成服务器的ip:http://10.158.103.151:1112
原目录/data/liux变成 /ssd2/lixiang/data