common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

ada世代のGPUでLLMをFP8実行

Yuichiro Minato

2024/06/02 10:35

実は量子化は詳しくないのですが、VRAMがきついのでFP8を使ってみました。ada世代のGPUもFP8に対応しているというので測定してみました。日本語をやってみましたがそんなに精度は気にならなかったので、限られたリソースで秒ごとのトークン生成数を増やしたいというモチベーションです。

そんなに難しい手法は使いたくなかったので、こちらを参考にしました。

【インターンレポート】量子化による大規模言語モデル軽量化の効果測定

https://engineering.linecorp.com/ja/blog/quantization-lightweighting-llms

量子化する際にはおそらくスムーズには行かなくて、ライブラリのインストールで多少突っかかりましたが、最終的には実行ができました。

Mistral instruct v0.2 の7Bモデルを使いました。例えば、adaのRTX4060tiでは16GBモデルのGPUではVRAMが足りなくて、FP16はVRAM不足で動きません。そこで、FP8にしたらギリギリ足りました。

各種設定は下記の通りです。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import time

device="cuda"
model_name="mistralai/Mistral-7B-Instruct-v0.2"

model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained(model_name)

#accelerator = Accelerator(mixed_precision="fp8")
#model = accelerator.prepare_model(model)

messages = [
  {"role": "user", "content": "What is your favourite condiment?"},
  {"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
  {"role": "user", "content": "Do you have mayonnaise recipes?"}
]

model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
model.to(device)

#のコメントアウトをとって混合精度で実行していけました。

電気は165W中110W利用し、

VRAMは15533MiB / 16380MiB

となりました。かなりギリギリなので、RAGなどでベクトル検索などでGPUを利用するプロセスを両方使おうとするとVRAM容量オーバーでエラーが出ます。

4060tiのような低価格?のGPUでもLLMが高精度のFP8で動くのでリーズナブルと感じましたが、トークン生成速度は遅いと感じました。

以上です。

© 2025, blueqat Inc. All rights reserved