ホームページ >バックエンド開発 >Python チュートリアル >量子化の力: GPTU の限界を超える速度の縮小
GPT-2のような強力な言語モデルを採用することを想像してください。ストーリーを作成したり、質問に答えたり、人間のテキストを模倣したり、能力を妨げることなく、よりleanせてより速いバージョンに圧縮します。
これは量子化の約束です。モデルの計算の精度を減らす手法、劇的な効率の向上のために限界精度を取引します。フェーズ0:技術セットアップ
!pip install torch transformers accelerate bitsandbytes psutil from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig import torch import time import gc def get_memory_usage(): return torch.cuda.memory_allocated() / 1e6 if torch.cuda.is_available() else 0 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model_name = "gpt2" input_text = "Once upon a time"フェーズ1:ベースライン - 完全精度(FP32)
メモリ:FP32モデルをロードすると、GPUメモリの511 MB
# Load tokenizer and base model tokenizer = AutoTokenizer.from_pretrained(model_name) print(f"Pre-load memory: {get_memory_usage()} MB") # Full precision model model_fp32 = AutoModelForCausalLM.from_pretrained(model_name).to(device) print(f"Post-load memory: {get_memory_usage()} MB") # 511.15 MB # Inference measurement inputs = tokenizer(input_text, return_tensors="pt").to(device) start_time = time.time() output = model_fp32.generate(**inputs, max_length=50) inference_time = time.time() - start_time # 1.76s # Cleanup protocol del model_fp32, inputs gc.collect() torch.cuda.empty_cache()メモリ:
63%
メモリ:
int4モデルの重量は
# 8-bit configuration quant_config_8bit = BitsAndBytesConfig(load_in_8bit=True) print(f"Pre-load memory: {get_memory_usage()} MB") # 9.18 MB model_int8 = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=quant_config_8bit ) # Dynamic input handling inputs_int8 = tokenizer(input_text, return_tensors="pt").to(model_int8.device) start_time = time.time() output = model_int8.generate(**inputs_int8, max_length=50) # 1.38s、
result:モデルは、メモリの制約がタイトに適合し、消費者GPUまたはエッジデバイスへの展開を可能にします。
結果:チャットボットから自動化されたコンテンツ生成まで、リアルタイムアプリケーションのより高速な応答。 それがどのように機能するか:圧縮の仕組み
fp32
メモリの使用(バーチャート):
fp32 int8およびint4に塔を並べて、リソース需要の厳しい削減を紹介します。
量子化により、GPT-2をリソースを重視した巨人から機敏で効率的なツールに変換しました。それを適切なテクニックで促進すると、巨人でさえ軽く動くことができます。
この実装により、具体的なコードと測定による量子化の能力が明らかになります。わずか10〜15行の構成を変更し、量子化を展開することにより、次のことを達成しました。
!pip install torch transformers accelerate bitsandbytes psutil from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig import torch import time import gc def get_memory_usage(): return torch.cuda.memory_allocated() / 1e6 if torch.cuda.is_available() else 0 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model_name = "gpt2" input_text = "Once upon a time"71%のメモリフットプリントの減少
興味があり、実験のために完全なノートブックにアクセスしたい場合は、Google Colabに向かいます。
以上が量子化の力: GPTU の限界を超える速度の縮小の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。