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

RTX3060x2のGPUで激安ローカルLLMマシンを構築。

Yuichiro Minato

2024/04/16 16:17

こんにちは、安くLLMを構築したいですね。おすすめ構成をお知らせします。

LLMは大規模言語モデルのことで、AIがChatGPTみたいに文章を作ってくれます。無料で使えますが、業務で使おうとすると結構難点があるし、データの漏洩とか含めて困りますね。手元のローカルでLLMを作る際のおすすめ構成をお知らせします。

まず、LLMを作るには、マザーボード、CPU、メモリ、SSD、電源、ケース、そしてGPUが必要です。ソフトウェアやOSはすべて無料で手に入りますので、心配入りません。

まず、ケースにマザーボード、CPU、メモリ、SSD、電源をセットします。この辺りは標準的な構成をお勧めします。

肝心なのはGPUで、VRAMのサイズが搭載できるLLMの性能を左右します。パラメータ数7Bのモデルが標準的に使われていますので、

14GB程度のVRAMが必要です。

そこで、よく使われるのがおそらく安価でVRAMが豊富なNVIDIA RTX3060 12Gです。日本円で40000-50000円程度で12G使えますので、2枚買うと8-10万円程度で合計24GB確保できます。LLMでは、VRAMの合計値でうまく計算してくれますので、これでもいけます。3090や4090のマシンは20-30万円程度しますので、これだけでもかなりの節約ができました。

OSにはubuntuを入れます。これは無料です。

ソフトウェアはすべてpythonで無料ですので、python経由で色々入れます。

全部の構成でもけちれば12万円前後でできるのではないかと思います。相当安いですよね。

最低限使うには、transformersとaccelerateを入れればOKでしょうか。

こちらを実行しました。

from transformers import AutoTokenizer, pipeline
import torch
import time

model_id = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_id)

pipe = pipeline("text-generation", model=model_id, tokenizer=tokenizer, device_map="auto", max_new_tokens=300, torch_dtype=torch.float16,)
query = '量子コンピュータとは?'

start = time.time()
answer = pipe(query)
print(time.time()-start)
print(answer)

ここは、気になるので3種類のGPUでベンチマークをとってみました。

3060 x 2枚:16秒

3090 x 1枚:7秒

4090 x 1枚:6秒

という結果になりました。すべてお店で手に入るGPUです。この中で一番安いのはおそらく3060 x2枚です。

だいぶ生成されるまでに時間がかかります。

2-3倍程度の時間がかかるので、結構増えたように見えます。実際そうなんですが、それでもギリギリ待てる範囲かと思いました。

3060 x 2枚は3090や4090などの高性能GPUで動かすようなLLMを動かせるものすごい安い構成かと思いました。マシンの構成によって速度が上下することはあると思います。

ここで、やはり速度が気になる場合、生成AIにテキストストリーミングと言って、文章をできた順に出力する機能があります。

上記のベンチマークは全ての生成が終わるまでの時間を出しましたが、通常人間は文章を前から順番に読みます。

その読む時間も考慮に入れて、すぐに出た順に文章を次々と出すことによって、体感速度をかなり改善することができます。

from transformers import AutoTokenizer, pipeline, TextStreamer
import torch
import time

model_id = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
streamer = TextStreamer(tokenizer, skip_prompt=True)

pipe = pipeline("text-generation",
model=model_id,
tokenizer= tokenizer,
torch_dtype=torch.bfloat16,
device_map="auto",
max_new_tokens = 512,
do_sample=True,
top_k=10,
num_return_sequences=1,
streamer=streamer,
eos_token_id=tokenizer.eos_token_id
)

query = '量子コンピュータとは?'

start = time.time()
answer = pipe(query)
print(time.time()-start)
print(answer)

3060でもやはり明らかにストリーミングでも3090や4090に劣るのですが、ギリギリ耐えられるかな?って感じでした。

個人的には予算の制約があるけどLLMをやりたいという時にはギリギリ3060 x2の構成もありなんではないかなと思いました。ぜひやってみた人は感想を教えてください。

© 2025, blueqat Inc. All rights reserved