Python大模型基礎與智能應用課件 9-2 Chinese-CLIP多模態(tài)大模型_第1頁
Python大模型基礎與智能應用課件 9-2 Chinese-CLIP多模態(tài)大模型_第2頁
Python大模型基礎與智能應用課件 9-2 Chinese-CLIP多模態(tài)大模型_第3頁
Python大模型基礎與智能應用課件 9-2 Chinese-CLIP多模態(tài)大模型_第4頁
Python大模型基礎與智能應用課件 9-2 Chinese-CLIP多模態(tài)大模型_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章

云服務器微調訓練大模型應用案例案例介紹和環(huán)境搭建數(shù)據(jù)探索和數(shù)據(jù)處理Lmdb內存數(shù)據(jù)庫構建模型微調與應用模型微調

案例介紹與環(huán)境搭建第9章

本次案例基于MUGE數(shù)據(jù)集,目標是在AutoDL云服務器上微調Chinese-CLIP多模態(tài)大模型,掌握多模態(tài)數(shù)據(jù)處理、訓練及應用全流程,關鍵環(huán)節(jié)含環(huán)境配置、數(shù)據(jù)集處理等。環(huán)境搭建時,選Pytorch等的基礎鏡像創(chuàng)建云服務器實例,再通過JupyterLab進入開發(fā)環(huán)境,為后續(xù)操作做準備。案例介紹與環(huán)境搭建第9章

在完成云服務器實例配置并進入開發(fā)環(huán)境后,來到環(huán)境搭建的第二步,我們先從GitHub克隆Chinese-CLIP倉庫,再借助倉庫內的requirements.txt文件完成依賴安裝,以此搭建模型訓練的基礎環(huán)境。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

環(huán)境搭建好后,可獲取官方MUGE數(shù)據(jù)集(壓縮包),支持服務器解壓查看或本地下載探索。操作流程為:先裝pickleshare包,下載MUGE.ZIP并解壓,服務器文件目錄會新增對應壓縮包與解壓后的MUGE文件夾。MUGE經(jīng)官方處理,文件結構遵循建議,利于提升訓練效率,展開文件夾可查看具體內容。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

MUGE數(shù)據(jù)集分訓練、驗證、測試集,圖文關系存為jsonl格式(每行是含文本id、內容、圖像id列表的字典,子集間圖像id列表有差異),圖像數(shù)據(jù)為tsv格式(每行含圖像id與base64編碼圖像數(shù)據(jù),子集存儲結構相同),二者序列化生成lmdb內存數(shù)據(jù)庫。相關文件讀寫、查看與轉換操作,支持服務器或本地進行,以下是訓練集圖文關系數(shù)據(jù)集為例。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

MUGE數(shù)據(jù)集的jsonl(圖文關系)、tsv(圖像數(shù)據(jù))、mdb(內存數(shù)據(jù)庫)格式不直觀,需轉換為Excel和jpg。以訓練集為例。importjsonimportpandasaspdjsonl_file=open('train_texts.jsonl','r',encoding='utf-8')list1=[]list2=[]list3=[]forlineinjsonl_file:json_obj=json.loads(line)foriinrange(len(json_obj['image_ids'])):list1.append(json_obj[‘image_ids’][i])#圖像IDlist2.append(json_obj[‘text’])#文本描述list3.append(json_obj[‘text_id’])#文本IDdata=pd.DataFrame({'image_ids':list1,'text':list2,'text_id':list3})data.to_excel('./train/ImageWordData.xlsx',index=False)jsonl_file.close()數(shù)據(jù)探索和數(shù)據(jù)處理第9章

importbase64fromioimportBytesIOfromPILimportImageimportlmdbimage_ids=set(list1)#list1是上一步提取的image_idsprint(len(image_ids))lmdb_imgs='./lmdb/train/imgs'env_imgs=lmdb.open(lmdb_imgs,readonly=True,create=False,lock=False,readahead=False,meminit=False)txn_imgs=env_imgs.begin(buffers=True)forimage_idinimage_ids:#從lmdb取base64數(shù)據(jù)

image_b64=txn_imgs.get("{}".format(image_id).encode('utf-8')).tobytes()

#解碼生成圖像

img=Image.open(BytesIO(base64.urlsafe_b64decode(image_b64)))img.save('./train/imgs/'+str(image_id)+'.jpg')核心邏輯:用圖像ID從lmdb取base64數(shù)據(jù),解碼后存為jpg

數(shù)據(jù)探索和數(shù)據(jù)處理第9章

#測試集:test_texts.jsonl無有效image_ids,從test_imgs.tsv提取importpandasaspdjsonl_file=open('test_texts.jsonl','r',encoding='utf-8')list1=[]#測試集jsonl里image_ids為空,先填占位符forlineinjsonl_file:json_obj=json.loads(line)list1.append(‘')#用空值占位,后續(xù)靠tsv補全jsonl_file.close()

#關鍵差異:從tsv提取圖像IDtd=pd.read_csv('test_imgs.tsv',sep='\t',header=None)image_ids=set(td.iloc[:,0].values)#取tsv第一列的圖像ID

MUGE數(shù)據(jù)集的訓練集、驗證集可通過類似代碼將復雜格式轉為直觀的Excel表格和jpg圖像,便于理解數(shù)據(jù)。測試集因“test_texts.jsonl”中圖像ID為空,需從tsv文件提取圖像ID,再經(jīng)代碼轉換為可視化格式。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

官方參考數(shù)據(jù)集里,jsonl、tsv是過渡格式,訓練用的內存數(shù)據(jù)庫文件(mdb)由其序列化生成。以本例數(shù)據(jù)為例,從原始數(shù)據(jù)集(train、valid、test文件夾,含Excel表格和jpg圖片)出發(fā),可先轉成jsonl、tsv過渡格式,再序列化得到mdb,實現(xiàn)從直觀原始數(shù)據(jù)到模型可用格式的轉化。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

由于一個文本描述可能對應多張圖片,需先預處理ImageWordData表格數(shù)據(jù)。處理后得到兩個數(shù)據(jù)框:一個包含文本id、文本內容及對應的圖片id列表,另一個包含圖片id,且數(shù)值均要為int型,這兩個數(shù)據(jù)框將用于后續(xù)構建jsonl和tsv格式文件。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

.jpg

圖片轉成Base64字符串,讓圖片數(shù)據(jù)能直接存到文本文件(如

tsv)里,不用單獨管理圖片文件。

基于執(zhí)行結果和原始的圖像文件夾內容,即可構建train_texts.jsonl和train_imgs.tsv、valid_texts.jsonl和valid_imgs.tsv。以valid為例。fromPILimportImagefromioimportBytesIOimportbase64

defimg2base64(img_path):img=Image.open(img_path)#1.用PIL打開本地圖片img_buffer=BytesIO()#2.創(chuàng)建內存“虛擬文件”img.save(img_buffer,format=img.format)#3.圖片存到內存byte_data=img_buffer.getvalue()#4.提取字節(jié)數(shù)據(jù)base64_str=base64.b64encode(byte_data)#5.字節(jié)轉Base64(bytes類型)base64_str=base64_str.decode("utf-8")#6.轉成字符串(方便存文本文件)returnbase64_str

數(shù)據(jù)探索和數(shù)據(jù)處理第9章

importosimportcsvdefcreat_clipdata(df,ImageData_PATH,task):r=return_subdf(df)df_1=r[0]df_2=r[1]withopen(f"{task}_texts.jsonl",'w',encoding='utf-8')asjsonlfile:#生成jsonl文件forindex,rowindf_1.iterrows():dict_jsonl={}dict_jsonl['text_id']=row['text_id']dict_jsonl['text']=row['text']dict_jsonl['image_ids']=row['image_ids']jsonlfile.write(json.dumps(dict_jsonl)+'\n')withopen(f"{task}_imgs.tsv",'w',newline='',encoding='utf-8')astsvfile:

#生成tsvtsvwriter=csv.writer(tsvfile,delimiter='\t')forindex,rowindf_2.iterrows():imgpath=os.path.join(ImageData_PATH,str(row['image_ids'])+'.jpg')b64img=img2base64(imgpath)tsvwriter.writerow([row['image_ids'],b64img])核心函數(shù)會先處理Excel里的數(shù)據(jù),得到文本和圖片的對應關系以及圖片的編號列表。接著,生成一個jsonl格式的文件,里面記錄著文本編號、文本內容和對應的圖片編號;同時生成一個tsv格式的文件,里面存放著圖片編號和轉換成特殊文本格式的圖片。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

importjsonimportpandasaspddf=pd.read_excel('./valid/ImageWordData.xlsx')ImageData_PATH=r"./valid/imgs"creat_clipdata(df,ImageData_PATH,"valid")讀取驗證集的Excel數(shù)據(jù)(./valid/ImageWordData.xlsx)和指定的圖片文件夾路徑(./valid/imgs),然后調用creat_clipdata函數(shù)生成驗證集對應的valid_texts.jsonl和valid_imgs.tsv文件,完成驗證集數(shù)據(jù)的格式轉換和構建。數(shù)據(jù)探索和數(shù)據(jù)處理第9章

訓練集構建可通過將“valid”改為“train”完成;測試集因ImageWordData數(shù)據(jù)表中圖像id為空,需從圖像文件夾命名獲取圖像id,再構建對應的jsonl和tsv文件。importosimportcsvfname=os.listdir('./test/imgs')f=[]foriinrange(len(fname)):f.append(fname[i][:-4])

Lmdb內存數(shù)據(jù)庫構建第9章

現(xiàn)在介紹將轉化好的jsonl和tsv格式數(shù)據(jù)文件上傳到云服務器并序列化為內存數(shù)據(jù)庫文件的步驟:先在云服務器創(chuàng)建存儲相關文件的文件夾(可通過命令或手動創(chuàng)建),再將jsonl和tsv文件上傳到創(chuàng)建的MUGE文件夾。Lmdb內存數(shù)據(jù)庫構建第9章

用Chinese-CLIP\cn_clip\preprocess里的build_lmdb_dataset.py,把上傳好的訓練、驗證、測試集的jsonl和tsv數(shù)據(jù),序列化成內存數(shù)據(jù)庫文件。模型微調與應用第9章

現(xiàn)在來到模型微調,首先下載Chinese-CLIP的預訓練參數(shù),并存放到datapath/pretrained_weights文件夾中。模型微調與應用第9章

其次,我們使用官方提供的微調訓練參數(shù)配置及程序文件,進行微調訓練。需要注意的是,云服務器不能使用無卡運行模式執(zhí)行程序,其配置參數(shù)如下:模型微調與應用第9章

詳細的參數(shù)說明參見g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論