女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

以transformers框架實現(xiàn)中文OFA模型的訓練和推理

深度學習自然語言處理 ? 來源:YeungNLP ? 2023-02-15 17:44 ? 次閱讀

OFA是阿里巴巴發(fā)布的多模態(tài)統(tǒng)一預訓練模型,基于官方的開源項目,筆者對OFA在中文任務上進行了更好的適配以及簡化,并且在中文的Image Caption任務上進行了實踐驗證,取得了非常不錯的效果。本文將對上述工作進行分享。

01

模型簡介

OFA是由阿里達摩院發(fā)布的多模態(tài)預訓練模型,OFA將各種模態(tài)任務統(tǒng)一于Seq2Seq框架中。如下圖所示,OFA支持的下游任務包括但不限于Image Caption、Image Classification、 Image genaration、Language Understanding等等。

cde33874-ad14-11ed-bfe3-dac502259ad0.png

02

項目介紹

項目動機 & 主要工作

本項目旨在以HuggingFace的transformers框架,實現(xiàn)中文OFA模型的訓練和推理。并且希望將官方開源的fairseq版本的中文預訓練權重,轉(zhuǎn)化為transformers版本,以便用于下游任務進行finetune。

在OFA官方項目中,同時實現(xiàn)了fairseq和transformers兩套框架的模型結構,并且分別開源了中文和英文的模型權重。基于下列原因,筆者開發(fā)了本項目:

由于筆者對transformers框架更熟悉,所以希望基于transformers框架,使用域內(nèi)中文數(shù)據(jù)對OFA模型進行finetune,但OFA的中文預訓練權重只有fairseq版本,沒有transformers版本。

如何將fairseq版本的OFA預訓練權重轉(zhuǎn)換為transformers版本,從而便于下游任務進行finetune。

官方代碼庫中,由于需要兼容各種實驗配置,所以代碼也比較復雜冗余。筆者希望能夠?qū)⒑诵倪壿媱冸x出來,簡化使用方式。

基于上述動機,筆者的主要工作如下:

閱讀分析OFA官方代碼庫,剝離出核心邏輯,包括訓練邏輯、model、tokenizer等,以transformers框架進行下游任務的訓練和推理,簡化使用方式。

將官方的fairseq版本的中文預訓練權重,轉(zhuǎn)化為transformers版本,用于下游任務進行finetune。

基于本項目,使用中文多模態(tài)MUGE數(shù)據(jù)集中的Image Caption數(shù)據(jù)集,以LiT-tuning的方式對模型進行finetune,驗證了本項目的有效性。

開源五個transformers版本的中文OFA模型權重,包括由官方權重轉(zhuǎn)化而來的四個權重,以及筆者使用MUGE數(shù)據(jù)集finetune得到的權重。

訓練細節(jié)

筆者使用MUGE數(shù)據(jù)集中的Image Caption數(shù)據(jù),將其中的訓練集與驗證集進行合并,作為本項目的訓練集。其中圖片共5.5w張,每張圖片包含10個caption,最終構成55w個圖文對訓練數(shù)據(jù)。關于MUGE數(shù)據(jù)集的說明詳見官方網(wǎng)站。

caption數(shù)據(jù),jsonl格式:

{"image_id": "007c720f1d8c04104096aeece425b2d5", "text": ["性感名媛蕾絲裙,盡顯優(yōu)雅撩人氣質(zhì)", "衣千億,時尚氣質(zhì)名媛范", "80后穿唯美蕾絲裙,綻放優(yōu)雅與性感", "修身連衣裙,女人就該如此優(yōu)雅和美麗", "千億包臀連衣裙,顯出曼妙身姿", "衣千億包臀連衣裙,穿的像仙女一樣美", "衣千億連衣裙,令人奪目光彩", "奔四女人穿氣質(zhì)連衣裙,高雅名媛范", "V領包臀連衣裙,青春少女感", "衣千億包臀連衣裙,穿出曼妙身姿提升氣質(zhì)"]}
{"image_id": "00809abd7059eeb94888fa48d9b0a9d8", "text": ["藕粉色的顏色搭配柔軟舒適的冰絲面料,滿滿的時尚感,大領設計也超級好看,露出性感鎖骨線條,搭配寬腰帶設計,優(yōu)雅溫柔又有氣質(zhì)", "傳承歐洲文化精品女鞋,引領風尚潮流設計", "歐洲站風格女鞋,演繹個性時尚裝扮", "高品質(zhì)原創(chuàng)涼鞋,氣質(zhì)與華麗引領春夏", "歐洲風格站艾莎女鞋經(jīng)典款式重新演繹打造新一輪原創(chuàng)單品優(yōu)雅鞋型盡顯女人的柔美,十分知性大方。隨意休閑很顯瘦,不僅顯高挑還展現(xiàn)纖細修長的腿型,休閑又非常潮流有范。上腳舒適又百搭。", "陽春顯高穿搭,氣質(zhì)單鞋不可缺少", "冰絲連衣裙,通勤優(yōu)雅范", "一身粉色穿搭,夢幻迷人", "艾莎女性,浪漫摩登,演繹角色轉(zhuǎn)換", "超時尚夏季涼鞋,一直“走”在時尚的前沿"]}

圖片數(shù)據(jù),tsv格式(img_id, ' ', img_content)(base64編碼):

007c720f1d8c04104096aeece425b2d5 /9j/4AAQSkZJRgABAgAAAQA...
00809abd7059eeb94888fa48d9b0a9d8 /9j/2wCEAAEBAQEBAQEBAQE...

訓練時,筆者使用LiT-tuning(Locked-image Text tuning)策略,也就是將encoder的權重進行凍結,僅對decoder的權重進行訓練。加載ofa-cn-base預訓練權重,使用55w的中文圖文對, batch size=128,開啟混合精度訓練,warmup step為3000步,學習率為5e-5,使用cosine衰減策略,訓練10個epoch,大約42500個step,最終訓練loss降到0.47左右。

由于encoder與decoder共享詞向量權重,筆者還分別嘗試了凍結與不凍結詞向量兩種訓練方式,兩者的訓練loss的變化趨勢如下圖所示。可以看到,訓練時不凍結詞向量權重,模型的收斂速度提升非常顯著, 但相應地也需要更多顯存。在訓練時凍結詞向量權重,可以節(jié)省顯存并加快訓練速度,將freeze_word_embed設為true即可。

ce0f0f26-ad14-11ed-bfe3-dac502259ad0.png

使用方法

模型的使用方法非常簡單,首先將項目clone到本地機器上,并且安裝相關依賴包。

gitclonehttps://github.com/yangjianxin1/OFA-Chinese.git
pip install -r requirements.txt

使用如下代碼,即可加載筆者分享的模型權重(代碼會將模型權重自動下載到本地),根據(jù)圖片生成對應的文本描述。

from component.ofa.modeling_ofa import OFAModelForCaption
from torchvision import transforms
from PIL import Image
from transformers import BertTokenizerFast


model_name_or_path = 'YeungNLP/ofa-cn-base-muge-v2'
image_file = './images/test/lipstick.jpg'
# 加載預訓練模型權重
model = OFAModelForCaption.from_pretrained(model_name_or_path)
tokenizer = BertTokenizerFast.from_pretrained(model_name_or_path)


# 定義圖片預處理邏輯
mean, std = [0.5, 0.5, 0.5], [0.5, 0.5, 0.5]
resolution = 256
patch_resize_transform = transforms.Compose([
        lambda image: image.convert("RGB"),
        transforms.Resize((resolution, resolution), interpolation=Image.BICUBIC),
        transforms.ToTensor(),
        transforms.Normalize(mean=mean, std=std)
    ])


txt = '圖片描述了什么?'
inputs = tokenizer([txt], return_tensors="pt").input_ids
# 加載圖片,并且預處理
img = Image.open(image_file)
patch_img = patch_resize_transform(img).unsqueeze(0)


# 生成caption
gen = model.generate(inputs, patch_images=patch_img, num_beams=5, no_repeat_ngram_size=3)
print(tokenizer.batch_decode(gen, skip_special_tokens=True))

在項目中,筆者還上傳了模型訓練、推理、權重轉(zhuǎn)化等腳本,更多細節(jié)可參考項目代碼。

03

效果展示

下列測試圖片均為從電商網(wǎng)站中隨機下載的,并且測試了不同模型權重的生成效果。

從生成效果來看,總結如下:

ofa-cn-base-muge是筆者將由官方fairseq版本的OFA-CN-Base-MUGE權重轉(zhuǎn)換而來的,其生成效果非常不錯。證明了fairseq權重轉(zhuǎn)換為transformers權重的邏輯的有效性。

ofa-cn-base-muge-v2是筆者使用ofa-cn-base進行finetune得到的,其效果遠遠優(yōu)于ofa-cn-base,并且與ofa-cn-base-muge旗鼓相當,證明了本項目的訓練邏輯的有效性。

04

結語

在本文中,筆者分享了關于中文OFA的項目實踐,實現(xiàn)了將fairseq版本的OFA權重轉(zhuǎn)換為transformers權重,并且基于MUGE數(shù)據(jù)集進行了項目驗證,在電商的Image Caption任務上取得了非常不錯的效果。

就Image Caption任務而言,借助OFA模型強大的預訓練能力,如果有足夠豐富且高質(zhì)量的域內(nèi)圖文對數(shù)據(jù),例如電商領域的<圖片,商品賣點文本>數(shù)據(jù),能夠訓練得到一個高質(zhì)量的賣點生成模型,在實際的應用場景中發(fā)揮作用。

筆者還分享了5個transformers版本的中文OFA權重,讀者可以基于該預訓練權重,在下游的多模態(tài)任務中進行finetune,相信可以取得非常不錯的效果。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OFAF
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2052

原文標題:OFA-Chinese:中文多模態(tài)統(tǒng)一預訓練模型

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    使用基于Transformers的API在CPU上實現(xiàn)LLM高效推理

    英特爾 Extension for Transformers是英特爾推出的一個創(chuàng)新工具包,可基于英特爾 架構平臺,尤其是第四代英特爾 至強 可擴展處理器(代號 SapphireRapids,SPR)顯著加速基于Transformers的大語言
    的頭像 發(fā)表于 01-22 11:11 ?3262次閱讀
    使用基于<b class='flag-5'>Transformers</b>的API在CPU上<b class='flag-5'>實現(xiàn)</b>LLM高效<b class='flag-5'>推理</b>

    Pytorch模型訓練實用PDF教程【中文

    本教程實際應用、工程開發(fā)為目的,著重介紹模型訓練過程中遇到的實際問題和方法。在機器學習模型開發(fā)中,主要涉及三大部分,分別是數(shù)據(jù)、模型和損失
    發(fā)表于 12-21 09:18

    分詞工具Hanlp基于感知機的中文分詞框架

    ,構成流水線式的系統(tǒng)。本文先介紹中文分詞框架部分內(nèi)容。中文分詞訓練只需指定輸入語料的路徑(單文檔時為文件路徑,多文檔時為文件夾路徑,靈活處理),以及
    發(fā)表于 04-03 11:28

    Python撰寫 AI模型框架(Framework)

    看出來,這5項資料都是寫在子類里,而框架必須透過API來向子類索取這5項資料值。一旦框架取得了這些資料,就能展開AI模型訓練工作了。現(xiàn)在,就依據(jù)上圖的思維而繪制出類別圖,如下所示:
    發(fā)表于 11-24 18:06

    用tflite接口調(diào)用tensorflow模型進行推理

    摘要本文為系列博客tensorflow模型部署系列的一部分,用于實現(xiàn)通用模型的部署。本文主要實現(xiàn)用tflite接口調(diào)用tensorflow模型
    發(fā)表于 12-22 06:51

    EIQ onnx模型轉(zhuǎn)換為tf-lite失敗怎么解決?

    我們正在嘗試將 tflite 框架與 npu 一起使用來進行機器學習。這是我們的步驟:1)用pytorch訓練一個模型2) onnx格式導出模型
    發(fā)表于 03-31 08:03

    如何提高YOLOv4模型推理性能?

    使用 PyTorch 對具有非方形圖像的 YOLOv4 模型進行了訓練。 將 權重轉(zhuǎn)換為 ONNX 文件,然后轉(zhuǎn)換為中間表示 (IR)。 無法確定如何獲得更好的推理性能。
    發(fā)表于 08-15 06:58

    超大Transformer語言模型的分布式訓練框架

    模型的預訓練計算。 大模型是大勢所趨 近年來,NLP 模型的發(fā)展十分迅速,模型的大小每年1-
    的頭像 發(fā)表于 10-11 16:46 ?3161次閱讀
    超大Transformer語言<b class='flag-5'>模型</b>的分布式<b class='flag-5'>訓練</b><b class='flag-5'>框架</b>

    探究超大Transformer語言模型的分布式訓練框架

    NVIDIA Megatron 是一個基于 PyTorch 的框架,用于訓練基于 Transformer 架構的巨型語言模型。本系列文章將詳細介紹Megatron的設計和實踐,探索這一框架
    的頭像 發(fā)表于 10-20 09:25 ?2775次閱讀

    三種主流模型部署框架YOLOv8推理演示

    深度學習模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個主流框架,均支持Python與C++的SDK使用。對YOLOv5~YOLOv8的系列模型,均可以通過C++推理
    的頭像 發(fā)表于 08-06 11:39 ?3090次閱讀

    深度學習框架區(qū)分訓練還是推理

    模型,以便將來能夠進行準確的預測。推理是指在訓練完成后,使用已經(jīng)訓練好的模型進行新的預測。然而,深度學習
    的頭像 發(fā)表于 08-17 16:03 ?1669次閱讀

    視覺深度學習遷移學習訓練框架Torchvision介紹

    Torchvision是基于Pytorch的視覺深度學習遷移學習訓練框架,當前支持的圖像分類、對象檢測、實例分割、語義分割、姿態(tài)評估模型的遷移學習訓練與評估。支持對數(shù)據(jù)集的合成、變換、
    的頭像 發(fā)表于 09-22 09:49 ?1214次閱讀
    視覺深度學習遷移學習<b class='flag-5'>訓練</b><b class='flag-5'>框架</b>Torchvision介紹

    主流大模型推理框架盤點解析

    vLLM是一個開源的大模型推理加速框架,通過PagedAttention高效地管理attention中緩存的張量,實現(xiàn)了比HuggingFace T
    發(fā)表于 10-10 15:09 ?6595次閱讀
    主流大<b class='flag-5'>模型</b><b class='flag-5'>推理</b><b class='flag-5'>框架</b>盤點解析

    摩爾線程和滴普科技完成大模型訓練推理適配

    近日,摩爾線程與滴普科技宣布了一項重要合作成果。摩爾線程的夸娥(KUAE)千卡智算集群與滴普科技的企業(yè)大模型Deepexi已完成訓練推理適配,共同實現(xiàn)了700億參數(shù)LLaMA2大語言
    的頭像 發(fā)表于 05-30 10:14 ?774次閱讀

    大語言模型開發(fā)框架是什么

    大語言模型開發(fā)框架是指用于訓練推理和部署大型語言模型的軟件工具和庫。下面,AI部落小編為您介紹大語言
    的頭像 發(fā)表于 12-06 10:28 ?469次閱讀