Youku-mPLUG: 10-миллионный крупномасштабный набор данных и тесты для предварительного обучения на китайском видео на китайском языке. Ссылка для скачивания ЗДЕСЬ
Бумага
Мы публикуем крупнейший общедоступный набор данных высококачественного видео на китайском языке (10 миллионов) под названием Youku-mPLUG , который собирается с известного китайского веб-сайта обмена видео Youku со строгими критериями безопасности, разнообразия и качества.
Примеры видеоклипов и заголовков в предлагаемом наборе данных Youku-mPLUG.
Мы предоставляем 3 различных набора тестовых данных мультимодального видео для измерения возможностей предварительно обученных моделей. Три различные задачи включают в себя:
Набор данных содержит в общей сложности 10 миллионов видеороликов высокого качества, распределенных по 20 суперкатегориям (45 категорий).
Распределение категорий в наборе данных Youku-mPLUG.
Скачать все видео и файлы аннотаций можно по этой ссылке.
Примечание. Из-за ошибки в megatron_util после установки megatron_util необходимо заменить conda/envs/youku/lib/python3.10/site-packages/megatron_util/initialize.py на Initialize.py в текущем каталоге.
conda env create -f environment.yml
conda activate youku
pip install megatron_util==1.3.0 -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
# For caption evaluation
apt-get install default-jre
Сначала вам следует загрузить контрольную точку GPT-3 1.3B и 2.7B с Modelscope. Предварительно обученную модель можно скачать здесь (1.3B) и здесь (2.7B).
Запуск предварительного обучения mPLUG-Video как:
exp_name = 'pretrain/gpt3_1.3B/pretrain_gpt3_freezeGPT_youku_v0'
PYTHONPATH = $ PYTHONPATH :. /
python - m torch . distributed . launch - - nproc_per_node = 8 - - master_addr = $ MASTER_ADDR
- - master_port = $ MASTER_PORT
- - nnodes = $ WORLD_SIZE
- - node_rank = $ RANK
- - use_env run_pretrain_distributed_gpt3 . py
- - config . / configs / ${ exp_name }. yaml
- - output_dir . / output / ${ exp_name }
- - enable_deepspeed
- - bf16
2 > & 1 | tee . / output / ${ exp_name } / train . log
Для выполнения последующей тонкой настройки. В качестве примера мы возьмем прогнозирование категории видео:
exp_name = 'cls/cls_gpt3_1.3B_youku_v0_sharp_2'
PYTHONPATH = $ PYTHONPATH :. /
python - m torch . distributed . launch - - nproc_per_node = 8 - - master_addr = $ MASTER_ADDR
- - master_port = $ MASTER_PORT
- - nnodes = $ WORLD_SIZE
- - node_rank = $ RANK
- - use_env downstream / run_cls_distributed_gpt3 . py
- - config . / configs / ${ exp_name }. yaml
- - output_dir . / output / ${ exp_name }
- - enable_deepspeed
- - resume path / to / 1_3 B_mp_rank_00_model_states . pt
- - bf16
2 > & 1 | tee . / output / ${ exp_name } / train . log
Ниже мы показываем результаты на наборах проверки для справки.
Модель mPLUG-Video строим на основе mPLUG-Owl. Чтобы использовать модель, вам следует сначала клонировать репозиторий mPLUG-Owl как
git clone https://github.com/X-PLUG/mPLUG-Owl.git
cd mPLUG-Owl/mPLUG-Owl
Контрольная точка, настроенная по инструкциям, доступна на HuggingFace. Для точной настройки модели вы можете обратиться к репозиторию mPLUG-Owl. Для выполнения видеовывода вы можете использовать следующий код:
import torch
from mplug_owl_video . modeling_mplug_owl import MplugOwlForConditionalGeneration
from transformers import AutoTokenizer
from mplug_owl_video . processing_mplug_owl import MplugOwlImageProcessor , MplugOwlProcessor
pretrained_ckpt = 'MAGAer13/mplug-youku-bloomz-7b'
model = MplugOwlForConditionalGeneration . from_pretrained (
pretrained_ckpt ,
torch_dtype = torch . bfloat16 ,
device_map = { '' : 0 },
)
image_processor = MplugOwlImageProcessor . from_pretrained ( pretrained_ckpt )
tokenizer = AutoTokenizer . from_pretrained ( pretrained_ckpt )
processor = MplugOwlProcessor ( image_processor , tokenizer )
# We use a human/AI template to organize the context as a multi-turn conversation.
# <|video|> denotes an video placehold.
prompts = [
'''The following is a conversation between a curious human and AI assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.
Human: <|video|>
Human: 视频中的女人在干什么?
AI: ''' ]
video_list = [ 'yoga.mp4' ]
# generate kwargs (the same in transformers) can be passed in the do_generate()
generate_kwargs = {
'do_sample' : True ,
'top_k' : 5 ,
'max_length' : 512
}
inputs = processor ( text = prompts , videos = video_list , num_frames = 4 , return_tensors = 'pt' )
inputs = { k : v . bfloat16 () if v . dtype == torch . float else v for k , v in inputs . items ()}
inputs = { k : v . to ( model . device ) for k , v in inputs . items ()}
with torch . no_grad ():
res = model . generate ( ** inputs , ** generate_kwargs )
sentence = tokenizer . decode ( res . tolist ()[ 0 ], skip_special_tokens = True )
print ( sentence )
Если вы найдете этот набор данных полезным для вашего исследования, рассмотрите возможность цитирования нашей статьи.
@misc { xu2023youku_mplug ,
title = { Youku-mPLUG: A 10 Million Large-scale Chinese Video-Language Dataset for Pre-training and Benchmarks } ,
author = { Haiyang Xu, Qinghao Ye, Xuan Wu, Ming Yan, Yuan Miao, Jiabo Ye, Guohai Xu, Anwen Hu, Yaya Shi, Chenliang Li, Qi Qian, Que Maofei, Ji Zhang, Xiao Zeng, Fei Huang } ,
year = { 2023 } ,
eprint = { 2306.04362 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}