近年、人工知能をさまざまなドメインに統合することで、テクノロジーとの相互作用が革新されました。最も有望な進歩の1つは、視覚情報とテキスト情報の両方を理解して処理できるマルチモーダルモデルの開発です。これらの中で、Llama 3.2 Visionモデルは、画像の複雑な分析を必要とするアプリケーションの強力なツールとして際立っています。この記事では、Unsloth AIを使用して食品画像からカロリー情報を抽出するためのLlama 3.2ビジョンモデルを微調整するプロセスを調査します。
学習目標
llama 3.2ビジョンモデルのアーキテクチャと機能を探索します。
- UNSLOTH AIとその主要な機能を紹介します
llama 3.2 11bビジョンモデルを微調整する方法を学び、Unsloth aiの助けを借りて画像データセットを使用して、食品関連データを効果的に分析します。
-
- この記事は、
データサイエンスブログの一部として公開されました。
目次llama 3.2ビジョンモデル
llama 3.2ビジョンモデルのアプリケーション
Unsloth ai?ビジョン-
微調整llama 3.2 11bビジョンモデルUnsloth ai
ステップ1。必要なライブラリのインストールステップ6。微調整の開始- ステップ7。サンプルデータの微調整
-
- >>
-
- のモデルポストの結果llama 3.2ビジョンモデル
-
-
- Metaが開発した llama 3.2 Vision Model は、高度な視覚的理解と推論タスクのために設計された最先端のマルチモーダル大規模言語モデルです。モデルの重要な詳細は次のとおりです
-
アーキテクチャ:llama 3.2ビジョンは、最適化されたトランスアーキテクチャを利用して、Llama 3.1テキストのみのモデルに基づいて構築されます。画像エンコーダー表現を言語モデルと統合するクロスアテンションレイヤーで構成されるビジョンアダプターが組み込まれています。
- サイズが利用可能:モデルには2つのパラメーターサイズがあります。
- 11b(110億パラメーター)消費者グレードGPUでの効率的な展開の場合
大規模アプリケーションの場合、
90b(900億パラメーター)-
マルチモーダル入力: llama 3.2ビジョンはテキストと画像の両方を処理でき、視覚認識、画像推論、キャプション、画像に関連する質問への回答などのタスクを実行できます。
-
トレーニングデータ:モデルは約60億の画像テキストペアでトレーニングされ、視覚入力に基づいてコンテンツを理解して生成する能力を高めました。
- コンテキストの長さ:最大128Kトークンのコンテキスト長をサポートします
- また読む:llama 3.2 90b vs gpt 4o:画像分析の比較
Llama 3.2 Vision Modelのアプリケーション
アプリケーション
llama 3.2 Visionは、次のようなさまざまなアプリケーション向けに設計されています
視覚的な質問回答(VQA):
画像の内容に基づいて質問に答える。
画像キャプション:画像の記述キャプションを生成します。-
画像テキスト取得:
画像をテキストの説明と一致させます。-
視覚的接地:
言語の参照を画像の特定の部分にリンクします。- >
loth sloth ai?
とは何ですか?
- Unsloth AIは、Llama-3、Mistral、Phi-3、Gemmaなどの大規模な言語モデル(LLM)の微調整を強化するように設計された革新的なプラットフォームです。特定のタスクに事前に訓練されたモデルを適応させる複雑なプロセスを合理化し、より速く、より効率的にすることを目的としています。Unsloth ai
の重要な機能
-
加速トレーニング:Unslothは、メモリの使用量を60%削減しながら、最大30倍高速にモデルを微調整する能力を誇っています。この大幅な改善は、手動オートグラード、チェーンマトリックス増殖、最適化されたGPUカーネルなどの高度な技術によって達成されます。
- ユーザーフレンドリー:プラットフォームはオープンソースで簡単にインストールでき、ユーザーはローカルに設定したり、Google Colabのようなクラウドリソースを利用したりできます。包括的なドキュメントは、ユーザーが微調整プロセスをナビゲートするのをサポートしています
スケーラビリティ:- Unslothは、単一のGPUからマルチノードのセットアップまで、さまざまなハードウェア構成をサポートしているため、小さなチームとエンタープライズレベルのアプリケーションの両方に適しています。
Versatility:プラットフォームは、さまざまな人気のあるLLMと互換性があり、言語生成、要約、会話AIなどの多様なタスクに適用できます。
- UNSLOTH AIは、AIモデルトレーニングの大幅な進歩を表しており、高性能カスタムモデルを効率的に作成しようとしている開発者や研究者がアクセスできるようにします。
Llama 3.2 Visionのパフォーマンスベンチマーク
llama 3.2ビジョンモデルは、チャートと図の解釈に優れています。
110億モデルは、MMMU-Pro、Vision(23.7)、Chartqa(83.4)、AI2図(91.1)などの視覚ベンチマークでClaude 3 Haikuを上回ります。
その結果、Llama 3.2は、ドキュメントの理解、視覚的な質問への回答、チャートからのデータの抽出を必要とするタスクにとって理想的なオプションです。
微調整llama 3.2 11bビジョンモデルを使用しているai
このチュートリアルでは、llama 3.2 11bビジョンモデルを微調整するプロセスを進めます。高度な機能を活用することにより、食品を認識し、視覚入力に基づいてカロリー含有量を推定する際のモデルの精度を高めることを目指しています。
このモデルの微調整には、食品のイメージと栄養データのニュアンスをよりよく理解するためにカスタマイズすることで、実際のアプリケーションでのパフォーマンスが向上します。データセットの準備、トレーニング環境の構成など、この微調整プロセスに関連する重要な手順を掘り下げます。また、リソースの使用を最小限に抑えながら、モデルのパフォーマンスを最適化するために、LORA(低ランク適応)などの手法を採用します。
モデルの機能をカスタマイズするために、Unsloth AIを活用します。使用するデータセットは食品画像で構成されており、それぞれにさまざまな食品のカロリー含有量に関する情報が伴います。これにより、食品関連データを効果的に分析するモデルの能力を向上させることができます。
それでは、始めましょう!
ステップ1。必要なライブラリのインストール
!pip install unsloth
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ステップ2。モデルの定義
from unsloth import FastVisionModel
import torch
model, tokenizer = FastVisionModel.from_pretrained(
"unsloth/Llama-3.2-11B-Vision-Instruct",
load_in_4bit = True,
use_gradient_checkpointing = "unsloth",
)
model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers = True,
finetune_language_layers = True,
finetune_attention_modules = True,
finetune_mlp_modules = True,
r = 16,
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
random_state = 3443,
use_rslora = False,
loftq_config = None,
)
ログイン後にコピー
ログイン後にコピー
-
from_pretrained:このメソッドは、事前に訓練されたモデルとそのトークン剤をロードします。指定されたモデルは「Unsloth/llama-3.2-11b-vision-instruct」です
- load_in_4bit = true:この引数は、モデルに4ビット量子化をロードする必要があることを示しています。
use_gradient_checkpointing =” unsloth”:- これにより、グラデーションチェックポイントが可能になります。これは、中間アクティベーションを保存することでトレーニング中のメモリの管理に役立ちます。
get_peft_model:
このメソッドは、パラメーター効率の高い微調整(PEFT)テクニックを使用して微調整のモデルを構成します。
微調整オプション:
finetune_vision_layers = true:
ビジョン層の微調整を有効にします
- finetune_language_layers = true:言語層の微調整(テキストの理解を担当する変圧器層の可能性が高い)
- finetune_attention_modules = true:注意モジュールの微調整を有効にします
finetune_mlp_modules = true:- 多層パーセプトロン(MLP)モジュールの微調整を有効にします
loraパラメーター:
-
r = 16、lora_alpha = 16、lora_dropout = 0:
これらのパラメーターは、パフォーマンスを維持しながら訓練可能なパラメーターの数を減らす手法である低ランク適応(lora)を構成します。
bias =” none”:
これは、レイヤーの微調整プロセスにバイアス項が含まれないことを指定します。
- random_State = 3443:これにより、再現性のためにランダムシードが設定されます。このシードを使用することにより、モデルの微調整プロセスは決定論的であり、同じセットアップで再び実行された場合、同じ結果が得られます。
use_rslora = false:- これは、rsloraと呼ばれるロラの変異体が使用されていないことを示しています。 rsloraは、パラメーター効率の高い微調整のための別のアプローチです
loftq_config = none:
これは、低精度の量子化に関連する構成を指します。それは誰にも設定されていないため、量子化の特定の構成は適用されません。
-
ステップ3。データセットのロード
- テキストでのカロリーの説明とともに、食品画像にデータセットをロードします。
データセットには、「画像」、「クエリ」、「応答」の3つの列があります
ステップ4。データセットを会話に変換-
データセットを、ユーザーとアシスタントの2つの役割との会話に変換します。
アシスタントはユーザーのユーザークエリに返信します。
ステップ5。微調整モデルの前のモデルの推論
from datasets import load_dataset
dataset = load_dataset("aryachakraborty/Food_Calorie_Dataset",
split = "train[0:100]")
ログイン後にコピー
output:
アイテム1:揚げdump子 - 400-600カロリー
アイテム2:赤いソース - 200-300カロリー
合計カロリー - 600-900カロリー
サービングサイズと成分に基づいて、2つのアイテムの推定カロリー数は、揚げたdump子とレッドソースの場合それぞれ400-600と200-300です。一緒に消費すると、皿全体の推定カロリーカウントを合わせて600〜900カロリーになります。
総栄養情報:
カロリー:
600-900カロリー
-
サービングサイズ: 1枚の蒸しモーモのプレート
-
結論:
食事の準備に使用される成分に基づいて、栄養情報を推定することができます。
以下の入力画像に対して出力が生成されます:
元のモデルの出力から見られるように、テキストに記載されている項目は、元の入力画像に「蒸しモーモ」が含まれているにもかかわらず、「揚げたdump子」を指します。また、入力画像に存在するレタスのカロリーは、元のモデルからの出力では言及されていません。
元のモデルからの出力:
項目1:揚げたdump子 - 400-600カロリー
項目2:赤いソース - 200-300カロリー
- 総カロリー - 600-900カロリー
- サービングサイズと成分に基づいて、2つのアイテムの推定カロリー数は、揚げたdump子とレッドソースの場合それぞれ400-600と200-300です。一緒に消費すると、皿全体の推定カロリーカウントを合わせて600〜900カロリーになります。
栄養情報の合計:-
カロリー:600-900カロリー
サービングサイズ:1枚の蒸しモーモのプレート
結論:食事の準備に使用される成分に基づいて、栄養情報を推定することができます。ステップ6。罰金の開始
!pip install unsloth
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
sfttrainerパラメーター
-
sfttrainer(…):これにより、モデルの微調整に使用されるトレーナーが初期化されます。 SFTTrainerは、モデルの監視付き微調整用に特別に設計されています。
- モデル=モデル:微調整されるプリロードされたモデルまたは初期化されたモデル。
tokenizer = tokenizer:- テキスト入力をトークンIDに変換するために使用されるトークンザー。これにより、テキストデータと画像データの両方がモデルに対して適切に処理されることが保証されます。
data_collator = unslothvisionDatacollator(モデル、トークンザー):
データコレーターは、データのバッチ(特にビジョン言語データ)の準備を担当しています。このコレーターは、画像テキストのペアがどのようにバッチされているかを処理し、モデルのために適切に整列してフォーマットされていることを確認します。
-
train_dataset = converted_dataset:これは、トレーニングに使用されるデータセットです。 converted_datasetは、画像テキストペアまたは類似の構造化データを含む前処理されたデータセットであると想定されています。
- sftconfigクラスパラメーター
per_device_train_batch_size = 2:これは、トレーニング中に各デバイス(例:GPU)のバッチサイズを2に設定します。
gradient_accumulation_steps = 4:- このパラメーターは、モデルの重みを更新する前に実行されるフォワードパス(またはステップ)の数を決定します。基本的に、複数の小さなバッチに勾配を蓄積することにより、より大きなバッチサイズをシミュレートできます。
warmup_steps = 5:
彼のパラメーターは、学習率が小さな値から初期学習率に徐々に増加する初期トレーニング手順の数を指定します。学習率ウォームアップのステップ数。学習率が徐々に目標値に増加します。
-
max_steps = 30:微調整中に実行するトレーニングステップの最大数(反復)。
- Learning_rate = 2e-4:オプティマイザーの学習率は0.0002に設定されています。
精度設定-
fp16 = IS_BF16_SUPPORTED():- BFLOAT16(BF16)精度がサポートされていない場合(IS_BF16_SUPPORTED())、16ビットフローティングポイント精度(FP16)が使用します。 BF16がサポートされている場合、コードは代わりにBF16を自動的に使用します。
bf16 = is_bf16_supported():
これは、ハードウェアがbfloat16精度をサポートし、サポートされている場合に有効にするかどうかをチェックします。
ロギング&最適化
-
logging_steps = 5:トレーニングの進捗状況が記録される後のステップ数。
- optim =” adamw_8bit”:これにより、オプティマイザーが8ビット精度でAdamwに設定されます(より効率的な計算とメモリ使用量の減少のため)。
weight_decay = 0.01:
重量を罰することで過剰適合を防ぐための重量減衰(L2正規化)。
-
lr_scheduler_type =” linear”:これにより、学習速度スケジューラを線形減衰に設定します。学習速度は、初期値からゼロに直線的に減少します。
- Seed = 3407:これは、トレーニングの再現性のためにランダムシードを設定します。
output_dir =” outputs”:- これは、訓練されたモデルとその他の出力(例:ログ)が保存されるディレクトリを指定します。
report_to =” none”:
これは、ウェイトやバイアスなどの外部システムへのレポートを無効にするため、トレーニングログはリモートトラッキングサービスに送信されません。
-
ビジョン固有のパラメーター
remove_unused_columns = false:
データセットにすべての列を保持します。これはビジョンタスクに必要な場合があります。
- dataset_text_field =””:データセット内のどのフィールドにテキストデータが含まれているかを示します。ここでは、空のままで、おそらく特定のテキストフィールドが必要でない可能性があることを示しています。
dataset_kwargs = {“ skip_prepare_dataset”:true}- :データセットの追加の準備手順をスキップします。
dataset_num_proc = 4
:データの読み込みをスピードアップできるデータセットの読み込みまたは処理時に使用するプロセスの数。 thedataset_num_procparameterを設定することにより、データセットの並列処理を有効にすることができます。
-
max_seq_length = 2048:入力データの最大シーケンス長さで、より長いシーケンスを処理できるようにします。 max_seq_lengthパラメーターは、モデルに一度に供給できるトークン(または入力ID)の数の上限を
- を指定します。
また読む:rag -
のための微調整llama 3.2 3b
ステップ7。モデルの結果を確認してください微調整
微調整されたモデルからの出力:
Finetunedモデルの出力から見られるように、3つの項目はすべて、必要な形式でカロリーとともにテキストで正しく言及されています。
サンプルデータでのテスト
また、微調整されたモデルが目に見えないデータに対してどれほど優れているかをテストします。したがって、モデルでは以前に見られなかったデータの行を選択します。
これを入力画像として選択します。!pip install unsloth
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
微調整されたモデルからの出力
:
from unsloth import FastVisionModel
import torch
model, tokenizer = FastVisionModel.from_pretrained(
"unsloth/Llama-3.2-11B-Vision-Instruct",
load_in_4bit = True,
use_gradient_checkpointing = "unsloth",
)
model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers = True,
finetune_language_layers = True,
finetune_attention_modules = True,
finetune_mlp_modules = True,
r = 16,
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
random_state = 3443,
use_rslora = False,
loftq_config = None,
)
ログイン後にコピー
ログイン後にコピー
微調整されたモデルの出力からわかるように、ピザのすべてのコンポーネントが正確に識別されており、そのカロリーも同様に言及されています。結論
Llama 3.2 VisionのようなAIモデルの統合は、特に食品認識や栄養分析などの分野で、視覚データの分析と相互作用の方法を変換しています。この強力なモデルをUnsloth AIで微調整することにより、食品の画像を理解し、カロリーコンテンツを正確に推定する能力を大幅に改善できます。
微調整プロセスは、LORAやUnsloth AIの効率的な機能などの高度な技術を活用し、リソースの使用を最小限に抑えながら最適なパフォーマンスを保証します。このアプローチは、モデルの精度を向上させるだけでなく、食品分析、健康監視などの実際のアプリケーションの扉を開きます。このチュートリアルを通じて、専門のタスクに最先端のAIモデルを適応させる方法を実証しました。
キーテイクアウト
Llama 3.2 Visionなどのマルチモーダルモデルの開発により、AIは視覚データとテキストの両方のデータを処理および理解し、食品画像分析などのアプリケーションの新しい可能性を開きます。
llama 3.2 Visionは、画像認識、推論、視覚的接地を含むタスクの強力なツールであり、食品画像のカロリーコンテンツなどの画像から詳細情報を抽出することに焦点を当てています。
- llama 3.2ビジョンモデルを微調整することで、食品カロリー抽出などの特定のタスクに合わせてカスタマイズし、食品を認識し、栄養データを正確に推定する能力を向上させることができます。
Unsloth AIは微調整プロセスを大幅に加速し、メモリの使用量を60%削減しながら最大30倍高速にし、カスタムモデルの作成をより効率的に可能にします。
-
- この記事に示されているメディアは、分析vidhyaが所有しておらず、著者の裁量で使用されています。
- よくある質問
q1。 llama 3.2ビジョンモデルとは何ですか?また、どのように機能しますか? Llama 3.2 Visionモデルは、テキストと画像の両方を処理できるMetaによって開発されたマルチモーダルAIモデルです。変圧器アーキテクチャとクロスアテンションレイヤーを使用して、画像データを言語モデルと統合し、視覚認識、キャプション、画像テキストの取得などのタスクを実行できるようにします。 llama 3.2ビジョンモデルの微調整は、パフォーマンスをどのように改善しますか?微調整は、食品の画像からカロリー情報を抽出するなど、モデルを特定のタスクにカスタマイズします。特殊なデータセットでモデルをトレーニングすることにより、食料品を認識し、栄養コンテンツを推定することでより正確になり、実際のアプリケーションでより効果的になります。 q3。 Unsloth AIは微調整プロセスでどのような役割を果たしますか? Unsloth AIは、より速く、より効率的にすることにより、微調整プロセスを強化します。これにより、モデルを最大30倍高速に微調整しながら、メモリ使用量を60%削減できます。このプラットフォームは、セットアップとスケーラビリティを容易にするためのツールも提供し、小さなチームとエンタープライズレベルのアプリケーションの両方をサポートしています。ロラ(低ランクの適応)とは、なぜ微調整プロセスで使用されるのですか? LORAは、モデルのパフォーマンスを最適化しながらリソースの使用を削減するために使用される手法です。大規模な言語モデルをより効率的に微調整するのに役立ち、精度を損なうことなくトレーニングプロセスをより速く、計算集中をより速くします。 Loraは、モデルアーキテクチャに低ランクマトリックスを導入することにより、パラメーターの小さなサブセットのみを変更します。微調整されたllama 3.2ビジョンモデルは、どのような実用的なアプリケーションを使用できますか?微調整されたモデルは、食品の画像からのカロリー抽出、視覚的な質問への回答、文書の理解、画像のキャプションなど、さまざまな用途で使用できます。特に健康や栄養などの分野で、視覚分析とテキスト分析の両方を必要とするタスクを大幅に強化できます。
以上が微調整llama 3.2画像からのカロリー抽出のためのビジョンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。