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 بـ virtualize.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.3ب) وهنا (2.7ب).
تشغيل التدريب المسبق لـ 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 repo كـ
git clone https://github.com/X-PLUG/mPLUG-Owl.git
cd mPLUG-Owl/mPLUG-Owl
نقطة التفتيش المضبوطة للتعليمات متاحة على HuggingFace. لضبط النموذج، يمكنك الرجوع إلى mPLUG-Owl Repo. لإجراء استنتاج الفيديو، يمكنك استخدام الكود التالي:
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 }
}