fddlZddlZddlZddlZddlmZddlZddlmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZmZmZddlmZmZdd lmZddlZd Zd ZGd d eZdZd(dZ dZ!e"dkrPej#Z$e$%de&de$%de&de$%de&de$%de&de$%de&de$%de&de$%d e'de$%d!e'de$%d"e(d#e$%d$e(de$%d%e'de$%d&e'd'e$)Z*e!e*dSdS))N)tqdm)IMAGE_TOKEN_INDEXDEFAULT_IMAGE_TOKENDEFAULT_IM_START_TOKENDEFAULT_IM_END_TOKEN)conv_templatesSeparatorStyle)load_pretrained_model)disable_torch_init)tokenizer_image_tokenprocess_imagesget_model_name_from_path)Dataset DataLoader)Imagectjt|z fdtdtDS)z0Split a list into n (roughly) equal-sized chunksc*g|]}||zSr).0i chunk_sizelsts `/opt/hpcaas/.mounts/fs-036153e63d56f4dc2/home/jiuhai/llama3-mlp3x/llava/eval/model_vqa_loader.py zsplit_list..s& H H HAC!J,  H H Hr)mathceillenrange)rnrs` @r split_listr!sL3s88a<((J H H H H Hq#c((J)G)G H H HHrc2t||}||SN)r!)rr kchunkss r get_chunkr&s Q  F !9rc eZdZdZdZdZdS) CustomDatasetcL||_||_||_||_||_dSr#) questions image_folder tokenizerimage_processor model_config)selfr*r+r,r-r.s r__init__zCustomDataset.__init__ s."(".(rc|j|}|d}|d}|jjrttzt zdz|z}n tdz|z}t tj }| |j d|| |j dd| }tjtj|j|d}t)|g|j|jd}t-||jt0d} | ||jfS) Nimagetext rRGBpt)return_tensors)r*r.mm_use_im_start_endrrrrargs conv_modecopyappend_messageroles get_promptropenospathjoinr+convertr r-r r,rsize) r/indexline image_fileqsconvpromptr2 image_tensor input_idss r __getitem__zCustomDataset.__getitem__'s4~e$'] &\   0 1'*==@TTW[[^``BB$t+b0Bdn-2244 DJqM2... DJqM4000"" 27<<(9:FFGGOOPUVV%ugt/CTEVWWXYZ )&$.BSdhiii , 22rc*t|jSr#)rr*)r/s r__len__zCustomDataset.__len__:s4>"""rN)__name__ __module__ __qualname__r0rNrPrrrr(r(sA)))333&#####rr(c~t|\}}}tj|d}tj|d}|||fS)Nr)dim)ziptorchstack)batchrM image_tensors image_sizess r collate_fnr\>sG,/K)I}k I1---IK 1555M m[ 00rr5c~|dks Jdt|||||}t|||dt}|S)Nr5zbatch_size must be 1F) batch_size num_workersshuffler\)r(rr\) r*r+r,r-r.r_r`dataset data_loaders rcreate_data_loaderrdFsL ???2???I|YQ]^^GW^cpz{{{K rc:ttj|j}t |}ddt jdd}t||j |fddi|\}}}}dttj|j dD}t||j |j}tj|j} tjtj| d t| d } d |vrFd |vr0d |jvr'|jdz|_t)d|jdt+||j|||j} t1t3| |t5|D]F\\} } }}|d}|d}| dd} t j5|| | t jdd||jdkrdnd|j|j |j!dg|j"d }dddn #1swxYwY|#|dd$}|%dd}tMj'}| (tSj*|||||iddzH| +dS)NFTflash_attention_2) use_cachetrust_remote_code torch_dtypeattn_implementation device_mapzcuda:0c6g|]}tj|Sr)jsonloads)rqs rrzeval_model..\s ZZZ1AZZZrr)exist_okwplainfinetunemmtag_mmtagz[It seems that this is a plain model, but it is not using a mmtag prompt, auto switching to .)total question_idr3cuda)device non_blocking)dtyper{r|ri}) imagesr[ do_sample temperaturetop_p num_beams eos_token_idmax_new_tokensrg)skip_special_tokensz <|end|>)ryrKr3 answer_idmodel_idmetadatar4),r rArB expanduser model_pathrrWbfloat16r model_baser@ question_filer& num_chunks chunk_idx answers_filemakedirsdirnamelowerr;printrdr+configrrVrtoinference_modegeneratefloat16rrrr batch_decodestripreplace shortuuiduuidwritermdumpsclose)r:r model_name model_kwargsr,modelr- context_lenr*rans_filercrMrLr[rGidx cur_prompt output_idsoutputsans_ids r eval_modelrMs~##DO44J)*55J!~2 L6K:W[Wfhr6Y6Y@H6YLX6Y6Y2Iuo{ZZRW-?-?@R-S-SUX(Y(YZZZI)T_dnEEI7%%d&788LK --====L#&&H*:3C3C3E3E!E!E'Y]YgJgJg(2 }lplz}}}~~~$Y0A9o_d_kllK8rs  pppppppppppp========555555******ZZZZZZZZZZ00000000 III  #####G###>111888t z $X $ & &F S:MNNN S$??? (sB??? )=TUUU (sNKKK  CDDD S!<<<  C;;; eSAAA  t<<<  C;;; *cBBB     DJt!r