作者:Farruh
人工知能は、流行語からビジネスアプリケーションとパーソナルアプリケーションの両方で重要なツールに飛躍を遂げました。 AI 分野が拡大するにつれて、より効率的でタスク固有のモデルが必要になります。 そこで、ファインチューニングと量子化を行い、事前に構築されたモデルを改善することによって、ニーズに合わせ、より効率的に行うことができます。 以下に、Python と Hugging Face Transformers
ライブラリを使用して、言語モデルのファインチューニングと量子化のプロセスをご案内します。
ファインチューニングは、幅広いスキルセットを特殊なスキルに磨くことに似ています。 事前学習済み言語モデルは、多くのトピックについて多くのことを知っているかもしれませんが、ファインチューニングによって、法律用語や医学用語などの特定の分野の専門家になることができます。
量子化は、これらの大規模モデルのリソースを効率化し、メモリ使用量を削減し、計算を高速化することによってこれを補完します。エッジデバイス上または計算能力が限られた環境でモデルを展開する場合に特に有益です。
企業は、ファインチューニングされ量子化されたモデルを活用して、リソースの制約のために実現不可能と思われる高度な AI アプリケーションを作成できます。 個人にとっては、これらの手法により、標準のハードウェアで高度な AI を実行できるようになり、個人のプロジェクトや研究をより利用しやすくすることができます。
コードに取り組む前に、AI モデルとデータセットにアクセスする必要があります。 Hugging Face で始めます
まず、必要なライブラリがインポートされます。 PyTorch 機能用の torch
ライブラリと、モデルアーキテクチャと事前学習済みの重み用に Hugging Face のtransformer
ライブラリが必要です。 その他のインポートには、データセットの読み込みと処理のための datasets
、効率的なトレーニングルーチンと量子化サポートのための pift
および trl
があります。
import torch
from datasets import load_dataset
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
TrainingArguments,
pipeline,
logging,
)
from peft import LoraConfig, PeftModel
from trl import SFTTrainer
次に、ファインチューニングに重要なモデルとデータセットをコードで指定します。 model_name
変数には、ファインチューニングする事前学習済みモデルの識別子が格納され、dataset_name
はトレーニングに使用するデータセットの識別子です。
model_name = "Qwen/Qwen-7B-Chat"
dataset_name = "mlabonne/guanaco-llama2-1k"
new_model = "Qwen-7B-Chat-SFT"
ファインチューニングのパラメーターは、TrainingArguments
を使用して設定されます。 パラメーターには、エポック数、バッチサイズ、学習速度などが含まれます。ファインチューニングプロセス中のモデルによる学習方法を決定します。
training_arguments = TrainingArguments(
output_dir="./results",
num_train_epochs=1,
per_device_train_batch_size=1,
gradient_accumulation_steps=1,
learning_rate=2e-4,
weight_decay=0.001,
# ... other arguments
)
BitsAndBytesConfig
で、量子化のモデルを設定します。 load_in_4bit
を True
に設定すると、モデルが 4 ビット量子化バージョンを使用できるようになり、サイズが縮小され、速度が向上する可能性があります。
bnb_config = BitsAndBytesConfig(
load_in_4bit=use_4bit,
bnb_4bit_quant_type=bnb_4bit_quant_type,
bnb_4bit_compute_dtype=compute_dtype,
bnb_4bit_use_double_quant=use_nested_quant,
)
モデルは指定された設定で読み込まれ、トークナイザが準備されます。 次に、SFTTrainer
を使用して、読み込まれたデータセットのモデルのファインチューニングを行います。 学習後、モデルは将来の使用のために保存されます。
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
# ... other configurations
)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
# ... other configurations
)
trainer.train()
trainer.model.save_pretrained(new_model)
モデルをファインチューニングして量子化することで、プロンプトに基づいてテキストを生成し、パフォーマンスを確認できるようになります。 これは、transformers
からの pipeline
機能を使用して行われます。
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])
このガイドでは、環境の設定から、最初のファインチューニングと量子化モデルの実行まで、段階的に説明します。 各ステップでは、コードのスニペットを用いて説明し、その目的を説明し、必要に応じて変更する方法を読者に説明します。
このチュートリアルを終了することにより、読者は事前学習済みの言語モデルをファインチューニングおよび量子化する方法をしっかりと理解できるでしょう。 この知識により、AI アプリケーションの新しい可能性の世界を開き、モデルの専門性をと効率を高めることができます。
AI の分野は絶えず進化しており、最新の技術を最新の状態に保つことがその可能性を最大限に引き出すための鍵となることを忘れないでください。 積極的に取り組み、実験し、そして成果と学びをコミュニティと共有してください。
AI の専門性を高める準備を始めましょう。
この記事は英語から翻訳されました。 元の記事はこちらからアクセスできます。
91 posts | 3 followers
FollowRegional Content Hub - March 8, 2024
Regional Content Hub - August 5, 2024
Regional Content Hub - March 8, 2024
Regional Content Hub - June 27, 2024
Regional Content Hub - February 26, 2024
Alibaba Cloud Japan - August 7, 2024
91 posts | 3 followers
FollowAccelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn MoreTop-performance foundation models from Alibaba Cloud
Learn MoreOffline SDKs for visual production, such as image segmentation, video segmentation, and character recognition, based on deep learning technologies developed by Alibaba Cloud.
Learn MoreSelf-service network O&M service that features network status visualization and intelligent diagnostics capabilities
Learn MoreMore Posts by Regional Content Hub