Практычныя аспекты апаратнага забезпечэння для запуску модэляў класу 100 мільярдаў на локальным вычынніку
Чы можа рабочая станцыя запускаць LLM класу 100 мільярда параметраў локальна? Адпаведнае рашэнне дае рэдкасць MoE, квантызацыя, размер кэша KV і можлівасці VRAM, а не колькасць параметраў, указаная ў заглавле.
Крыніцы: Run 100B+ AI Models Locally? The Hardware You’ll Need
Дастынкі толькі праз API большэйшых модэляў больш не ёсць едынай альтэрнатываю, але інструкцыйныя матэрыялы для спачатковых корыстнікаў часта не разглядаюць аспекты вычыслення памяці. Архітэктуры тыпу Mixture-of-Experts (MoE), квантызацыя і рэтэльна налажаныя сістэмы аддачы дазволяюць запускаваць модэлі з вельмі большым колькам параметраў на GPU рабочых станцый — пры тым, што глобальныя меры залежнаць ад VRAM, а не ад маркетынгавых тэхнікаў.
Чаму MoE зменяе крывую вартасці
У ўшчэльнёных модэлях актывацыю працягваюць усі параметры для кожнага токена. У MoE кожны токен направляецца да падскупа экспертаў. Колькасць параметраў можа быць вельмі вялікаю, тады як вычыслення на адны токен застаецца бліжэй да значэння меньшага ўшчэльнёнага модэля. Хоця гэта паспрыява вышый прахідным моцям, вагі ўсё раве займаюць памяць, калі толькі іх не квантызаваць і/או не пераказваць на іншыя працэсары.
Простыя аспекты розпадзелу токенаў
Уявіце сабэкспертную камісію, дзе па кожнам вопыту выступае толькі калькі спецыялістаў. Рутэр выбірае экспертаў; іншыя мовчаюць. Дэталі рэалізацыі разніцаюцца залежна ад сямейства модэляў, пры тым апаратныя наследкі застаюцца стабільнымі: неабходна зберагаць многа экспертаў, нават калі на кожны крок выкарыстоўваецца толькі калькі з іх.
[Input Token] ---> [Gating Router]
|
+-----------+-----------+
| (Top-2 Selected) |
v v
[Expert 2: Code] [Expert 5: Logic]
| |
+-----------+-----------+
|
v
[Output Token]
VRAM проты вычысленняў
Зберагачванне ваг у VRAM выклікае прыгожасць для спожывачаў. Эканамія рэсурсаў за дапамогою рэдкасці не пазбавляе потрэбы у зберагачванні параметраў, KV-кэша і актывацыяў. Дзейнікі дліжэйшага характару быстра падвышаюць навантажэння на KV-кэш.
import torch
import torch.nn as nn
class TopKGating(nn.Module):
"""
Simulates a dynamic routing mechanism that selects the top-2 experts
for an incoming token, demonstrating how MoE limits active computation.
"""
def __init__(self, input_dim, num_experts, top_k=2):
super().__init__()
self.router = nn.Linear(input_dim, num_experts)
self.top_k = top_k
def forward(self, x):
# Calculate router logits for each expert
logits = self.router(x)
# Select the top-K experts and their respective scaling weights
weights, indices = torch.topk(logits, self.top_k, dim=-1)
# Apply softmax to normalize scaling coefficients
weights = torch.softmax(weights, dim=-1)
return weights, indices
# Example input tensor representing 1 token with 512 dimensions
token_embedding = torch.randn(1, 512)
gating_layer = TopKGating(input_dim=512, num_experts=8, top_k=2)
weights, chosen_experts = gating_layer(token_embedding)
# Output shows which 2 experts out of 8 will perform the computation
print(f"Routing Weights: {weights.detach().numpy()}")
print(f"Selected Expert Indices: {chosen_experts.detach().numpy()}")
Компрасы ў квантызацыі
4-бітныя і падобныя методы зменшуюць розмер ваг, так што модэлі класу 100 мільярдаў параметраў можаць прыбліжвацца да рэштараванняў з калькі GPU або аднае GPU з вялікім VRAM. Рэгрэсія па параметрах перплексіты і рэзультатаў задач вырастае з агрэсіўнасцю квантызацыі; меркуйце на своіх задачах, а не толькі на графіках з блогаў.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
# Configure 4-bit quantization using NF4 (NormalFloat4)
# NF4 is a data type optimized specifically for normally distributed LLM weights
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16, # Compute in BF16 for speed
bnb_4bit_quant_type="nf4", # Use the optimized NF4 quantization
bnb_4bit_use_double_quant=True # Quantize constants for extra savings
)
model_id = "meta-llama/Llama-3-8B-Instruct"
# Load the tokenizer and model with the active quantization config
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=quantization_config,
device_map="auto" # Automatically offloads model layers to fit your GPU VRAM
)
# Test inference to verify the model runs locally
inputs = tokenizer("Explain quantum computing in one sentence.", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Практычныя шаблоны завантажэння
Бібліятэкі выкладзяюць настройкі квантызацыі і карты прыстроў. Пачніце з задокументаваных настройкаў, а пасля вырахавайце колькіснае співвяшчанне токенав/секунду і формы абяцэнняў пад вашым размерам пакета.
Model Memory (GB) = (Parameter Count in Billions * (Bits per Weight / 8)) * 1.2
def estimate_vram_requirements(params_in_billions: float, bits_per_weight: int) -> float:
"""
Calculates the minimum VRAM required to load a model and run inference.
Includes a 20% safety buffer for KV cache and activation memory.
"""
bytes_per_weight = bits_per_weight / 8
base_model_size_gb = params_in_billions * bytes_per_weight
total_vram_needed_gb = base_model_size_gb * 1.2
return round(total_vram_needed_gb, 2)
# Estimate for a 70B model quantized to 4-bit precision
print(f"Required VRAM: {estimate_vram_requirements(70, 4)} GB")
# Output: Required VRAM: 42.0 GB
Што купіць
Прыорытэт надаюце запасу VRAM GPU, шырокай прыёмнай плошчы дыска для стрымування ваг, а таксама достатнейшай колькасці RAM сістэмы для пераказвання задач. Існуюць варыянты на базе толькі CPU для експерыментавання, але яны рэдка калі задовольняюць вакту адпаведзення для обслужвання даных класу 100 мільярдаў токенав. Інтэрканекты класу NVLink між калькуляторамі GPU маюць значэнне пад час шардавання.
import openai
# Configure the client to point to your local server instead of the cloud.
# This allows you to test code locally without paying for API tokens.
client = openai.OpenAI(
base_url="http://localhost:8000/v1",
api_key="local-placeholder" # Required by the SDK but ignored by the local server
)
# Call the local model using the standard OpenAI chat completion schema
response = client.chat.completions.create(
model="meta-llama-3-8b-instruct",
messages=[
{"role": "user", "content": "Explain quantized model weight mapping."}
],
temperature=0.7
)
print(response.choices[0].message.content)
Заключэнне
Местныя схемы класу 100B з тыпам MoE — гэта проблема распадзелу памяці, адагруваная як дэманстрацыя можлівасцей. Квантавайце цаленаправлена, меркуйце якасць і размеры апаратнага з’явішча на адной час па потрэбах у массе і KV-з’явішчах, а не толькі па колькасці параметраў. Зберагайце прылады ў стане «зеленага» колеру, меркуйце кожны этап окрэма і адмовляйцеся ад выпуску на адной час па вялікім упэўненнях, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб зламу пад новым назвам. Зберагайце прылады ў стане «зеленага» колеру, меркуйце кожны этап окрэма і адмовляйцеся ад выпуску на адной час па вялікім упэўненнях, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб зламу пад новым назвам. Зберагайце прылады ў стане «зеленага» колеру, меркуйце кожны этап окрэма і адмовляйцеся ад выпуску на адной час па вялікім упэўненнях, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб зламу пад новым назвам. Зберагайце прылады ў стане «зеленага» колеру, меркуйце кожны этап окрэма і адмовляйцеся ад выпуску на адной час па вялікім упэўненнях, калі наступны выпуск можа зноў запрацаваць той самы непазначальны спосаб зламу пад новым назвам. Зберагайце прылады ў стане «зеленага» колеру.
Зберагачы трэба заставіць працаваць нормальна, замерайце кожны этап окрэма, і не прагніце выдаваць продукт на адмысловых падставах, калі наступная версія можа зноў запрацаваць той самы непазначальны спосаб працявання пад новым назвам.Хачуце фіксатыяў заставіць у стане «зеленага», вы мераваце кожны этап окрэма, і не хачуце выпускаваць продукт на адной ляхутке, калі наступны выпуск можа зноў запрацаваць той самы нявідчуваны спосаб працэйскага бяда пад новым называм.Можна зноў запрацаваць той самы непазорны спосаб выключэння пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовляйцеся ад выпуску, спакоюючыся на усампэтніх вражаннях, калі наступны выпуск можа зноў запрацаваць той самы непазорны спосаб выключэння пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовляйцеся ад выпуску, спакоюючыся на усампэтніх вражаннях, калі наступны выпуск можа зноў запрацаваць той самы непазорны спосаб выключэння пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовляйцеся ад выпуску, спакоюючыся на усампэтніх вражаннях, калі наступны выпуск можа зноў запрацаваць той самы непазорны спосаб выключэння пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовляйцеся ад выпуску, спакоюючыся на усампэтніх вражаннях, калі наступны выпуск можа зноў запрацаваць той самы непазорны спосаб выключэння пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовляйцеся ад выпуску, спакоюючыся на усампэтніх вражаннях, калі наступны выпуск можа зноў запрацаваць той самы непазорны спосаб выключэння.Зберагачыце прыстроі ў стане «зеленага», вы меравайце кожны этап окрэма і адмовляйцеся ад выпуску на адной лягкай упэўненасці, калі наступны выпуск можа зноў запрацаваць той самы нявідмечаны спосаб абякання пад новым назвам.Зберагачы трэба заставіць працаваць нормальна, меркаваць кожны этап окрэма, і не трэба выпускаваць продукт на адміністратыўных падставах, калі наступны выпуск можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам.Не паказвайцеся на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам. Чыніце прылады справнымі, меравайце кожны этап окрэма і адмовіцеся апускаць продукт, спакоюючыся толькі на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам. Чыніце прылады справнымі, меравайце кожны этап окрэма і адмовіцеся апускаць продукт, спакоюючыся толькі на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам. Чыніце прылады справнымі, меравайце кожны этап окрэма і адмовіцеся апускаць продукт, спакоюючыся толькі на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам. Чыніце прылады справнымі, меравайце кожны этап окрэма і адмовіцеся апускаць продукт, спакоюючыся толькі на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам. Чыніце прылады справнымі, меравайце кожны этап окрэма і адмовіцеся апускаць продукт, спакоюючыся толькі на адчуваннях, калі наступная версія можа зноў запрацаваць за тым жа прынцыпам бездзеяння пад новым назвам.З’явіцца той самы безшумны спосаб працэйскага сбою пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовіцеся ад выпуску, спакоюючыся на інтуіцыі, калі наступны выпуск можа знову створыць той самы безшумны спосаб працэйскага сбою пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовіцеся ад выпуску, спакоюючыся на інтуіцыі, калі наступны выпуск можа знову створыць той самы безшумны спосаб працэйскага сбою пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовіцеся ад выпуску, спакоюючыся на інтуіцыі, калі наступны выпуск можа знову створыць той самы безшумны спосаб працэйскага сбою пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовіцеся ад выпуску, спакоюючыся на інтуіцыі, калі наступны выпуск можа знову створыць той самы безшумны спосаб працэйскага сбою пад новым назвам. Храніце прыстроі ў стане «зеленага», мерайце кожны этап окрэма і адмовіцеся ад выпуску, спакоюючыся на інтуіцыі, калі наступны выпуск можа знову створыць той самы безшумны спосаб працэйскага сбою пад новым назвам.Зберагачыце прыстроі ў стане «зелены», замерайце кожны этап окрэма і адмовіцеся ад выпуску на адной ляхутке, калі наступны выпуск можа зноў запрацаваць той самы нявідчуваны спосаб зламу пад новым назвам.Звярожыце прамеры окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування, калі наступная версія можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам. Чыніце прылады справнымі, меркуйце кожны этап окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування, калі наступная версія можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам. Чыніце прылады справнымі, меркуйце кожны этап окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування, калі наступная версія можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам. Чыніце прылады справнымі, меркуйце кожны этап окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування, калі наступная версія можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам. Чыніце прылады справнымі, меркуйце кожны этап окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування, калі наступная версія можа зноў стварыць той самы непазначальны спосаб выключэння пад новым назвам. Чыніце прылады справнымі, меркуйце кожны этап окрэма, і адмовіцеся апрабаваць прылады, выклікаючы толькі певныя адчування.Каліцеўкі трэба залічваць як працюючыя, мераваць кожны этап окрэма, і не трэба выкладваць продукт на рынак толькі на адчутках, калі наступная версія можа зноў запрацаваць той самы непазначальны спосаб збою пад новым назвам.Гэта той самай моўды бяспечнага збію пад новым назвам.