记一次VideoLLaMA2部署与微调

该文章已生成可运行项目,

记录一次VideoLLaMA2部署与微调过程。由于Videollama2的训练数据集为英文数据集,对中文视频理解较差,因为课设的主题是对中文视频进行总结,所以我们用中文图片视频数据集对模型进行微调,记录如下。模型的部署和微调都是从0开始,如有错误之处欢迎指正

服务器环境

平台:SCNet超算互联网,链接:超算互联网 (scnet.cn)

部署环境:RTX4090 24GB

  • pytorch=2.2.0
  • python=3.10
  • ubuntu=22.04
  • cuda=12.1

其他参考官方要求:GitHub - DAMO-NLP-SG/VideoLLaMA2: VideoLLaMA 2: Advancing Spatial-Temporal Modeling and Audio Understanding in Video-LLMs

模型版本

Videollama2-7B

Visual Encoder:clip-vit-large-patch14-336

Language Decoder:Mistral-7B-Instruct-v0.2

模型下载

进入Videollama2官方链接,找到自己需要的模型,进入对应的huggingface页面进行下载

进入对应的页面,例如clip-vit-large-patch14-336

将里面的文件全部下载下来,存入一个对应的文件夹中(最好以模型的名字进行命名的文件夹),我创建了一个存放所有模型的文件夹命名为videollama2,然后将下载的模型文件存入对应命名的文件夹之后,再统一存放在这个文件夹里。

做好这些之后,将这个文件夹上传超算互联网平台,创建NoteBook实例,接下来是环境配置。

环境配置

添加国内源(可选,此处是清华源,未验证是否有效)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

pip install --upgrade pip  # enable PEP 660 support
pip install -e .
pip install flash-attn==2.5.8 --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple

可能在安装flash-attn时会出现报错,无法安装,可以多尝试几次。之后再

pip install -r requirements.txt

在安装过程中,会出现一些报错,上网搜索解决即可。如出现:ImportError: libGL.so.1: cannot open shared object file: No such file or directory

运行
sudo apt-get update
sudo apt-get install libgl1-mesa-glx

 模型部署

环境配置完成之后,还需要修改配置文件中的模型路径

在Videollama2 huggingface模型文件夹中(我的是Videollama-7B)有一个config.json文件,将里面的"_name_or_path"和"mm_vision_tower"部分的路径进行更改,改成你的模型路径。模型部署准备部分完成了。

在 Videollama2-main文件夹的gradio_web_server_adhoc.py文件中,也要将model_path的路径进行更改,换成你的Videollama-7B文件夹对应的路径。最后把gradio_web_server_adhoc.py的最后一行改为demo.launch(share=True),避免出现网页无法访问的问题。之后在终端中运行即可。

模型微调部分

首先是数据集要求。

 你需要在videollama2-main文件夹中创建一个dataset文件夹,里面的内容如上图。

custom.json文件为训练内容,如下图

id内容可以任意,图片对应的键可以为:“video”也可以为:“image”,路径对应,就我训练的情况而言,内容必须一张图片和一段视频成一组,按照图中的格式,图片和视频的内容不需要有关联。

模型训练

我花在这部分的时间是最久的,前面只需要2天左右就可以完成,这部分花了我一个多星期。

首先在videollama2-main文件夹中找到scripts\custom文件夹,这里面为训练的脚本文件,我选择的是finetune.sh脚本,将里面的内容进行修改

文件中的
--node_rank $RANK \
    /root/private_data/videollama2/VideoLLaMA2-main/videollama2/train.py \
 --model_path /root/private_data/videollama2/videollama2-7B \
 --vision_tower /root/private_data/videollama2/clip-vit-large-patch14 \

 --data_path   ${DATA_DIR}/custom_sft/custom.json \
 --data_folder ${DATA_DIR}/custom_sft/ \
部分改成对应模型实际路径,我都用的绝对路径。

--pretrain_mm_mlp_adapter部分用到了一个.bin文件,需要到对应的base模型下载对应的.bin文件,我的是videollama2-7B,我需要进入到videollama2-7B-base中下载mm_projector1.bin文件,放入自己的文件夹中,填入对应的路径。
我的是--pretrain_mm_mlp_adapter /root/private_data/videollama2/videollama2-7B/mm_projector1.bin \

 此外,在运行时,会出现找不到模型文件的import报错,是因为训练部分的python文件导入层级错误的问题,需要结合实际进行更改。更改完这些之后,就是运行脚本进行训练,我用了两张A800来进行训练的,需要进行分布式训练,我是单机多卡进行训练,需要对应修改脚本中的内容

ARG_WORLD_SIZE=1  # 机器数量,单机用1
ARG_NPROC_PER_NODE=2  # 使用GPU数量

训练参数部分根据实际情况进行更改,这是我的修改

# 训练参数
GLOBAL_BATCH_SIZE=8
LOCAL_BATCH_SIZE=4

 更改完成这些之后,正常的话运行脚本会出现训练进度,如图

 训练完成之后会出现一个新的文件夹,部分内容如下

然后按照部署的步骤来即可。

---------------------------------------------------------------------------------------------------

训练过程中还出现了许多其他的错误 ,由于记录时间比较久远找不到之前报错的内容了,没有写在文章里了。后续有机会再补充。

文章参考:

VideoLLaMA2部署 && huggingface命令的使用_video llama 2-优快云博客

GitHub - DAMO-NLP-SG/VideoLLaMA2: VideoLLaMA 2: Advancing Spatial-Temporal Modeling and Audio Understanding in Video-LLMs

                                                                                                                                                                                                                                                                                                                                           

本文章已经生成可运行项目
### Ollama 大模型的部署微调方法 Ollama 是一种用于本地化部署微调大型语言模型(LLMs)的工具,它允许用户在个人设备上运行复杂的 AI 模型。以下是关于如何使用 Ollama 进行大模型的部署微调的相关信息。 #### 部署流程 为了实现 Ollama 的本地化部署,通常需要完成以下几个方面的配置: 1. **安装依赖环境** 用户需先确保其计算环境中已安装必要的软件包以及硬件驱动程序支持 GPU 或 CPU 加速运算[^1]。例如,在 Linux 系统下可以通过以下命令快速设置 Docker 容器服务来加载预构建镜像文件: ```bash sudo apt update && sudo apt install docker.io ``` 2. **下载并启动 Ollama 应用程序** 下载官方发布的二进制可执行文件或者通过源码编译生成最新版本的应用实例之后即可初始化默认参数下的服务器端口监听状态[^1]: ```bash curl https://ollama.ai/install.sh | sh ollama serve & ``` 3. **测试连接稳定性** 使用简单的 HTTP 请求验证 API 接口是否正常工作,确认 RESTful Web Service 已经准备好接收外部客户端发送过来的数据流请求[^1]: ```python import requests response = requests.post( 'http://localhost:11434/generate', json={"model": "dolphin", "prompt": "Hello!"} ) print(response.json()) ``` #### 微调策略 对于希望进一步优化特定领域性能表现的大规模神经网络结构而言,则可通过迁移学习技术调整权重矩阵从而适应新任务需求场景中的特征分布特性变化规律特点如下所示: 1. **准备训练数据集** 收集高质量标注样本作为输入素材供给后续算法迭代更新过程利用以提高泛化能力效果显著优于随机初始化方式获得初始条件设定值范围内的解空间探索效率提升明显减少收敛所需时间成本开销降低资源消耗水平达到预期目标要求标准之上满足实际应用场合具体业务逻辑功能模块开发维护升级周期缩短加快产品上线
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值