چیتشیت
پردازندههای گرافیکی، فضای ابری، Docker و کلیدهای API
GPUs, Cloud, Docker and API Keys
بررسی GPU، تعیین اندازه مدل برای حافظهی گرافیکی، اجرای CUDA در Docker، ذخیره کلیدهای API و رفع خطاهای API.
فهرست مطالب
کجا اجرا کنیم
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
Local NVIDIA GPU | $0 | نصب CUDA + cuDNN. استفاده مداوم، مجموعهدادههای بزرگ |
Google Colab (free tier) | $0 | Runtime > Change runtime type > T4 GPU |
Cloud GPU (Lambda, RunPod, Vast.ai) | $0.20-2.00/hr | اتصال SSH + نصب. آموزشهای جدی و سنگین |
CPU | phases 1-3 | بیشتر درسها روی CPU به خوبی اجرا میشوند |
fp16 rule of thumb | 2 bytes per parameter | حاشیهای برای اکتیویشنها در نظر بگیرید |
بررسی GPU
کدpython
torch.cuda.is_available() # False means no GPU
torch.version.cuda # نسخه CUDA در PyTorch
torch.cuda.get_device_name(0) # نام GPU
props = torch.cuda.get_device_properties(0)
vram_gb = props.total_memory / 1e9 # حافظهی گرافیکی به گیگابایت
params_fp16 = vram_gb * 1e9 / 2 # حداکثر پارامترها در fp16
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
torch.cuda.synchronize() # قبل و بعد از زمانگیری GPU
ذخیره و استفاده از کلید API
گامبهگام- شِل
export ANTHROPIC_API_KEY="sk-ant-...". هرگز کلیدها را در کد قرار ندهید. - فایل .env
ANTHROPIC_API_KEY=sk-ant-.... فایل.envرا به.gitignoreاضافه کنید. - SDKمتد
anthropic.Anthropic()کلید را از متغیرهای محیطی میخواند. - درخواستاندپوینت، کلید، و یک بدنه با
model،max_tokensوmessages. - پاسخخروجی JSON شامل
content،usageوstop_reason.
اولین فراخوانی با SDK
کدpython
client = anthropic.Anthropic()
MODEL = os.environ.get("LLM_MODEL", "claude-sonnet-5") # شناسه مدل
response = client.messages.create(
model=MODEL,
max_tokens=256,
messages=[{"role": "user", "content": "<prompt>"}]
)
print(response.content[0].text) # متن پاسخ
response.usage.input_tokens, response.usage.output_tokens # توکنهای محاسبهشده
فراخوانی مستقیم HTTP
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
Endpoint | https://api.anthropic.com/v1/messages | method="POST" |
x-api-key | ANTHROPIC_API_KEY | هدر کلید |
anthropic-version | 2023-06-01 | هدر نسخه |
LLM_MODEL | claude-sonnet-5 | نام مستعار بدون تاریخ Sonnet |
max_tokens | 256 | ارزش آموزشی |
MOCK | "1" | نسخه TypeScript سپس شبکه را دور میزند |
خطاهای API
عیبیابی401 Unauthorized
- علت
- کلید نادرست است یا وجود ندارد
- راهحل
echo $ANTHROPIC_API_KEY \| head -c 10
403 Forbidden
- علت
- عدم دسترسی به اندپوینت یا مدل
- راهحل
- بررسی دسترسیهای کلید
429 Too Many Requests
- علت
- محدودیت نرخ درخواست اعمال شده
- راهحل
- صبر کنید و دوباره تلاش کنید، یا فرکانس را کاهش دهید
400 Bad Request
- علت
- بدنه درخواست نامعتبر است
- راهحل
- بررسی فیلدها، نام مدل و فرمت پیامها
500/502/503
- علت
- مشکل از سمت سرور
- راهحل
- یک دقیقه صبر کنید و دوباره امتحان کنید
Timeout
- علت
- درخواست بیش از حد طول کشید
- راهحل
- کاهش max_tokens یا استفاده از استریمینگ
Connection refused
- علت
- آدرس پایه یا شبکه اشتباه است
- راهحل
curl -I https://api.anthropic.com
نصب Docker و دسترسی GPU
دستورها| دستور | کاربرد |
|---|---|
curl -fsSL https://get.docker.com \| sh | نصب Docker روی Ubuntu |
sudo usermod -aG docker $USER | اجرای Docker بدون sudo. خروج و ورود مجدد |
docker run hello-world | بررسی صحت نصب |
sudo apt-get install -y nvidia-container-toolkit | دسترسی GPU برای کانتینرها (Linux) |
sudo nvidia-ctk runtime configure --runtime=docker | ثبت محیط اجرا، سپس sudo systemctl restart docker |
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi | تست GPU داخل کانتینر |
ایمیجهای پایه
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
nvidia/cuda:12.4.1-devel-ubuntu22.04 | ~4 GB | nvcc برای flash-attn و bitsandbytes |
nvidia/cuda:12.4.1-runtime-ubuntu22.04 | ~1.5 GB | کد کامپایلشده آماده. بدون کامپایلرها |
pytorch/pytorch:2.6.0-cuda12.4-cudnn9-runtime | ~6 GB | PyTorch از قبل نصب شده است |
python:3.12-slim | ~150 MB | بدون CUDA. فقط CPU |
ساخت و اجرای ایمیج توسعه
کدbash
docker build -t ai-dev -f phases/00-setup-and-tooling/07-docker-for-ai/code/Dockerfile .
docker run --rm -it --gpus all \
-v $(pwd):/workspace \ # کد شما
-v ~/models:/models \ # مدلها بعد از بیلد مجدد باقی میمانند
-p 8888:8888 \ # پورت Jupyter
ai-dev jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root
استک Compose
معماریوظایف Docker
کار و کد| وظیفه | کد |
|---|---|
| اجرای استک | docker compose up -d |
| توقف و حذف والیوم | docker compose down -v |
| اجرای شِل درون یک سرویس | docker compose exec ai-dev bash |
| اندازه ایمیجها | docker images |
| آزادسازی فضای دیسک | docker system prune -a |
| دسترسی GPU در کانتینر | docker exec -it <container_id> nvidia-smi |
| مشاهده لحظهای لاگها | docker logs -f <container_id> |
رفع خطاهای Docker
عیبیابیNo matching distribution found for torch==2.6.0+cu124- علت
- مک ایمیج arm64 را انتخاب میکند
- راهحل
FROM --platform=linux/amd64
عدم وجود GPU روی مک یا سیستم CPU
- علت
- عدم پشتیبانی از CUDA در آن سیستم
- راهحل
- حذف
--gpus allو بلوک deploy مربوط به NVIDIA
حذف شدن مدل 14 گیگابایتی پس از توقف
- علت
- عدم اتصال والیوم
- راهحل
-v ~/models:/models
سرور از هاست قابل دسترسی نیست
- علت
- بایند شدن روی localhost
- راهحل
host="0.0.0.0"و-p 5000:5000
نکات کاربردی
نکتهها- زمان اجرای دوم GPU را اندازه بگیرید. اجرای اول شامل هزینه راهاندازی است.
- قبل از اعتماد به بنچمارک، دستور
!nvidia-smiرا در Colab اجرا کنید. - هر کلید API را زمانی تنظیم کنید که درس به آن نیاز دارد.
- هنگام شکست فراخوانی SDK، درخواست خام HTTP را بررسی کنید.
- پکیجهای جدید را به Dockerfile اضافه کرده و دوباره بیلد کنید. لایههای دستنخورده از کش خوانده میشوند.