AI大模型教程
一起来学习

使用llama-factory框架下的QWEN2-VL-2B-Instruct跑通图像指令数据集(学习记录)

第一次记录,多多包涵

1.环境配置,这里的pytorch环境最好是直接下包,不然后面会出现各种各样的错误

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

2.模型,这里我用的是Qwen/Qwen2-VL-2B-Instruct,可以做多模态的模型,可以直接在魔塔社区下载,也可以在hugging face下载。

 3.显卡,这里我用的是我们学校的一个3090的服务器,可以使用这个指令上传文件到服务器

 scp -r “your_data_path” aaa.000.000.00.00:~/wwz

4.数据集,这里我要跑的是一个其他项目的数据集,那个项目使用的是mplug-owl2模型,我把他的一部分数据集下载下来,并对其进行数据处理。

这个图片数据集本身是有12000多张图片,但是我只下载了他的train.json,所以要根据train.json里对每张图片的描述,对这个图片数据集进行处理,保留只在train.json里标注过的图片

这是其中一个指令,而且train和test的分离是对所有图片打乱了顺序, 所以可以先提取train.json中的id的数字部分进行排序,然后保存在一个text文档里


# 假设文件路径是 'file.json'
with open('file.json', 'r') as file:
    data = json.load(file)

# 提取 id 数字部分
id_numbers = [int(entry["id"].split(".")[0]) for entry in data]

# 按数字排序
sorted_ids = sorted(id_numbers)

# 将排序后的 ID 写入到一个文本文件中
with open('sorted_ids.txt', 'w') as output_file:
    for id_number in sorted_ids:
        output_file.write(f"{id_number}n")

# 打印总数
print("总数:", len(sorted_ids))

然后把图片文件夹里不属于这一部分的删除,

import os

# 读取文本文件中的 ID
with open('your.text', 'r') as file:
    valid_ids = {line.strip() for line in file}

# 文件夹路径
image_folder = 'image_path'

# 遍历文件夹中的图片文件
for filename in os.listdir(image_folder):
    # 提取图片 ID(去掉前导零)
    image_id = str(int(filename.split('.')[0]))
    
    # 检查图片 ID 是否在有效 ID 集合中
    if image_id not in valid_ids:
        # 构建完整的文件路径
        file_path = os.path.join(image_folder, filename)
        
        # 删除文件
        os.remove(file_path)
        print(f"已删除: {file_path}")

print("完成图片清理。")

注意这里要先对图片数据集进行备份,因为他是在一个文件夹操作的,最后还是放回了image_folder。这里对数据集处理已经完成。

5.将模型还有数据集上传到llama_factory框架下,

llama_factory有一个data文件夹,需要把图片文件夹,train.json传进去 ,再进行最后一步,数据集注册,里面有个dataset_info文件,需要将数据写入,比如我跑的这个数据集的注册是这样的

而且他官方给了各种数据集的写入方法,因为我这个是多模态数据集,

 

这是他官方给的描述

6.运行

 

这是我当时随便设的一个配置,忘了给他分train和test的比例,学习率可以设1e-4,反正后面还是要根据他跑的效果还有对应的任务进行微调

7.结果

这是他的loss曲线,效果一般。

文章来源于互联网:使用llama-factory框架下的QWEN2-VL-2B-Instruct跑通图像指令数据集(学习记录)

相关推荐: AI视频风格转换:Stable Diffusion+EBSynth

我们首先使用 TemporalKit 提取了视频的关键帧图片,然后使用 Stable Diffusion 重绘了这些图片,然后又使用 TemporalKit 补全了重绘后的关键帧图片之间的序列帧,并拼合出了视频。 本文我们将使用一个新的工具 EBSynth 来…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 使用llama-factory框架下的QWEN2-VL-2B-Instruct跑通图像指令数据集(学习记录)
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们