common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


autoQAOA
Desktop RAG

Overview
Terms of service

Privacy policy

Contact
Research

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