成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MLLM QLoRA微調實戰:基于最新的袖珍Mini-InternVL模型

譯文 精選
人工智能
本文將展示如何使用QLoRA技術對來自中國上海的一家AI公司的通用視覺開源平臺OpenGVLab最新發布的袖珍多模態大型語言模型Mini-InternVL進行微調,并對比了使用這項技術前后的實驗結果。

譯者 | 朱先忠

審校 | 重樓

引言

大型語言模型(LLM)的世界正在不斷發展,新的進步正在迅速出現。一個令人興奮的領域是多模態LLM(MLLMs)的發展,這種模型既能夠理解文本又能夠理解圖像并與之進行交互。因此,種多模態模型的出現將為文檔理解、視覺問答等任務打開一個新的可能性的世界。

我最近寫了一篇關于這模型的文章微軟最新的Phi-3視覺語言模型的6種現實應用(6 Real-World Uses of Microsoft’s Newest Phi-3 Vision-Language Model)。這篇文章探索了微軟新發布的模型Phi-3-Vision的可能使用場景,這是一種小型但功能強大的MLLM,可以在本地運行(文章中的鏈接提供了相應的代碼示例)。

但在篇文章中,我們將探索一個強大的組合:InternVL模型和QLoRA微調技術。我們將專注于如何輕松地為任何特定使用場景定制此類模型。我們將使用這些工具創建一個收據信息理解程序,以便以高精度從中提取公司名稱、地址和購買總額等關鍵信息。

了解任務和數據集

該項目旨在開發一個系統,利用InternVL的功能,準確地從掃描的收據中提取特定信息。該任務提出了一個獨特的挑戰,不僅需要強大的自然語言處理(NLP),還需要解釋輸入圖像的視覺布局的能力。這將使我們能夠創建一個單一的、無OCR的端到端管道,從而在復雜文檔中表現出強大的通用性。

為了訓練和評估我們的模型,我們將使用SROIE數據集。SROIE提供了1000張掃描的收據圖像,每張圖像都標注了關鍵實體,如:

  • 公司:商店或企業的名稱
  • 日期:購買日期
  • 地址:商店的地址
  • 總計:支付的總金額

來源https://arxiv.org/pdf/2103.10213.pdf。

我們將使用模糊相似性得分來評估我們模型的性能,這是一種衡量預測實體和基本事實實體之間相似性的指標。這個指標的數據值范圍是從0(不相關的結果)到100(完美的預測)之間。

InternVL:一個多模式的發電站

InternVL是OpenGVLab的一個多模型LLM家族,旨在擅長圖像和文本任務。它的體系結構將視覺模型(如InternetViT)與語言模型(如InternLM2或Phi-3)相結合。這里,我們將重點介紹Mini-InterneVL-Chat-2B-V1-5變體,這是一個非常適合在消費級GPU上運行的較小版本。

InternVL的主要優勢表現在

  • 效率:其緊湊的尺寸允許高效的訓練和推理。
  • 準確性:盡管體積較小,但它在各種基準測試中都具有競爭力。
  • 多模態功能:它將圖像和文本理解無縫結合。

演示程序:您可以在鏈接https://huggingface.co/spaces/OpenGVLab/InternVL處探索一下有關InternetVL的實時演示情況

QLoRA微調:一種內存高效的方法

為了進一步提高我們模型的性能,我們將使用QLoRA,這是一種微調技術,可以在保持性能的同時顯著減少內存消耗。以下是它的工作原理:

  1. 量化:預訓練的LLM被量化為4位精度,減少了其內存占用。
  2. 低級別適配器(LoRA):LoRA不修改預訓練模型的所有參數,而是向網絡添加小型可訓練適配器。這些適配器能夠捕獲特定任務的信息,而無需更改主模型。
  3. 高效訓練:量化和LoRA的結合即使在內存有限的GPU上也能實現高效的微調。

代碼演練:基線性能

讓我們深入研究一下相關的代碼實現吧。首先,我們將在沒有任何微調的情況下評估一下Mini-InterVL-Chat-2B-V1-5的基線性能:

quant_config = BitsAndBytesConfig(
 load_in_4bit=True,
 bnb_4bit_quant_type="nf4",
 bnb_4bit_compute_dtype=torch.bfloat16,
)

model = InternVLChatModel.from_pretrained(
 args.path,
 device_map={"": 0},
 quantization_cnotallow=quant_config if args.quant else None,
 torch_dtype=torch.bfloat16,
)

tokenizer = InternLM2Tokenizer.from_pretrained(args.path)
# 在max_num參數中設置圖片小塊的最大數量

model.eval()

pixel_values = (
 load_image(image_base_path / "X51005255805.jpg", max_num=6)
 .to(torch.bfloat16)
 .cuda()
)

generation_config = dict(
 num_beams=1,
 max_new_tokens=512,
 do_sample=False,
)

# 單輪單圖像對話
question = (
 "Extract the company, date, address and total in json format."
 "Respond with a valid JSON only."
)
# print(model)
response = model.chat(tokenizer, pixel_values, question, generation_config)

print(response)
上述代碼的輸出結果是:
```json
{
 "company": "SAM SAM TRADING CO",
 "date": "Fri, 29-12-2017",
 "address": "67, JLN MENHAW 25/63 TNN SRI HUDA, 40400 SHAH ALAM",
 "total": "RM 14.10"
}
```

上面的代碼實現了

  1. 從Hugging Face云端加載模型。
  2. 加載樣本收據圖像并將其轉換為張量。
  3. 提出一個問題,要求模型從圖像中提取相關信息。
  4. 運行模型,并以JSON格式輸出提取的信息。

這項零樣本評估顯示了令人印象深刻的結果,實現了74.24% 的平均模糊相似性得分。這證明了InternVL在無需微調的情況下理解收據和提取信息的能力。

微調:使用QLoRA增強性能

為了進一步提高準確性,我們將使用QLoRA對模型進行微調。以下展示了我們使用這種微調技術的實現代碼

_data = load_data(args.data_path, fold="train")

# 量化配置
quant_config = BitsAndBytesConfig(
 load_in_4bit=True,
 bnb_4bit_quant_type="nf4",
 bnb_4bit_compute_dtype=torch.bfloat16,
)

model = InternVLChatModel.from_pretrained(
 path,
 device_map={"": 0},
 quantization_cnotallow=quant_config,
 torch_dtype=torch.bfloat16,
)

tokenizer = InternLM2Tokenizer.from_pretrained(path)

# 在max_num參數中設置圖片小塊的最大數量
img_context_token_id = tokenizer.convert_tokens_to_ids(IMG_CONTEXT_TOKEN)
print("img_context_token_id", img_context_token_id)
model.img_context_token_id = img_context_token_id

model.config.llm_config.use_cache = False

model = wrap_lora(model, r=128, lora_alpha=256)

training_data = SFTDataset(
 data=_data, template=model.config.template, tokenizer=tokenizer
)

collator = CustomDataCollator(pad_token=tokenizer.pad_token_id, ignore_index=-100)

img_context_token_id = tokenizer.convert_tokens_to_ids(IMG_CONTEXT_TOKEN)
print("img_context_token_id", img_context_token_id)
model.img_context_token_id = img_context_token_id
print("model.img_context_token_id", model.img_context_token_id)

train_params = TrainingArguments(
 output_dir=str(BASE_PATH / "results_modified"),
 num_train_epochs=EPOCHS,
 per_device_train_batch_size=1,
 gradient_accumulation_steps=16,
 optim="paged_adamw_32bit",
 save_steps=len(training_data) // 10,
 logging_steps=len(training_data) // 50,
 learning_rate=5e-4,
 lr_scheduler_type="cosine",
 warmup_steps=100,
 weight_decay=0.001,
 max_steps=-1,
 group_by_length=False,
 max_grad_norm=1.0,
)
# 訓練器
fine_tuning = SFTTrainer(
 model=model,
 train_dataset=training_data,
 dataset_text_field="###",
 tokenizer=tokenizer,
 args=train_params,
 data_collator=collator,
 max_seq_length=tokenizer.model_max_length,
)

print(fine_tuning.model.print_trainable_parameters())
# 開始訓練
fine_tuning.train()
# 保存模型
fine_tuning.model.save_pretrained(refined_model)

上面的代碼實現了

  1. 加載啟用量化支持的模型。
  2. 用LoRA微調模型,添加可訓練的適配器。
  3. 從SROIE數據集創建數據集。
  4. 定義訓練參數,如學習率、批量大小和訓練輪數。
  5. 初始化訓練以處理訓練過程。
  6. 在SROIE數據集上訓練模型。
  7. 保存微調后的模型。

以下是基本模型和QLoRA微調模型之間的示例比較:

Ground Truth: 

{
 "company": "YONG TAT HARDWARE TRADING",
 "date": "13/03/2018",
 "address": "NO 4,JALAN PERJIRANAN 10, TAMAN AIR BIRU, 81700 PASIR GUDANG, JOHOR.",
 "total": "72.00"
}

Prediction Base: KO

```json
{
 "company": "YONG TAT HARDWARE TRADING",
 "date": "13/03/2016",
 "address": "JM092487-D",
 "total": "67.92"
}
```

Prediction QLoRA: OK

{
 "company": "YONG TAT HARDWARE TRADING",
 "date": "13/03/2018",
 "address": "NO 4, JALAN PERUBANAN 10, TAMAN AIR BIRU, 81700 PASIR GUDANG, JOHOR",
 "total": "72.00"
}

實驗結果

在使用QLoRA進行微調后,我們的模型獲得了95.4% 的顯著模糊相似性得分,比基線性能(74.24%)有了顯著提高。這證明了QLoRA在不需要大量計算資源的情況下提高模型精度的能力(在RTX 3080 GPU上對600個樣本進行15分鐘的訓練)。

我們使用InternVL和QLoRA成功構建了一個強大的收據數據理解程序。這種方法展示了多模式LLM在文檔分析和信息提取等現實任務中的潛力。在這個示例用例中,我們使用幾百個樣本和消費者級別的GPU上幾分鐘的計算時間,在預測質量上獲得了30分。

注意:您可以在鏈接https://github.com/CVxTz/doc-llm處找到該項目的完整代碼實現。

結語

當今,多模式LLM的發展才剛剛開始,未來充滿了令人興奮的可能性。自動化文檔處理領域在MLLM(多模態大型語言模型)時代具有巨大的潛力。這些模型可以徹底改變我們從合同、發票和其他文檔中提取信息的方式,只需要最少的訓練數據。通過整合文本和視覺,他們可以以前所未有的精度分析復雜文檔的布局,為更高效、更智能的信息管理鋪平道路。

人工智能的未來是多模式的,InternVL和QLoRA是幫助我們在小的計算預算上釋放其潛力的強大工具。

參考鏈接

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:A Simple Recipe to Boost the Performance of MLLMs on Your Custom Use Case,作者:Youness Mansar



責任編輯:華軒 來源: 51CTO
相關推薦

2023-06-09 08:00:00

QLoRa語言模型微調

2023-06-02 15:47:49

2023-09-28 08:23:18

AI模型

2024-09-26 10:42:20

2023-06-07 08:22:59

LLM微調技術

2024-10-09 08:27:30

2024-11-11 13:33:28

2024-05-06 12:22:00

AI訓練

2024-05-06 12:24:00

模型訓練

2024-11-04 14:42:12

2024-06-05 09:22:43

2024-04-15 12:50:00

大型語言模型ReFT

2024-07-24 12:40:44

2025-04-18 12:25:34

2023-06-08 11:27:10

模型AI

2023-10-07 10:41:54

語言模型微調BitFit

2024-05-07 08:00:00

自然語言處理機器學習

2024-11-21 08:22:45

2025-04-10 07:59:51

2024-09-09 07:46:16

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产成人国产三级 | 草久网 | www.4567| 久久国产美女视频 | 夜夜摸天天操 | 精品国产精品三级精品av网址 | 国产在线a | 91看片在线观看 | 日韩在线观看一区 | 亚洲成人精品一区 | 999国产视频 | 国产一区二区三区视频在线观看 | 欧美精品在欧美一区二区少妇 | 99re6在线| 国产一级片在线观看视频 | 欧美日产国产成人免费图片 | 日韩欧美视频在线 | 中文字幕第九页 | 午夜国产羞羞视频免费网站 | 国产精品久久久久无码av | 天天操操 | 亚洲精品视频导航 | 久久伊人精品一区二区三区 | 91久久| 国产一区二区观看 | 成人aaa视频 | 国产乱码精品1区2区3区 | 国产成人精品免高潮在线观看 | 男女网站视频 | 婷婷久久久久 | 欧美黑人国产人伦爽爽爽 | 欧美啪啪网站 | 美女久久久久久久 | 青青草精品视频 | 中文在线日韩 | 欧美片网站免费 | 亚洲乱码国产乱码精品精的特点 | 久久久久久国产精品 | 色在线视频网站 | 91视频在线观看免费 | 懂色av一区二区三区在线播放 |