بازگشت به وبلاگ

پروکسی برای Hugging Face: چگونه مدل‌های هوش مصنوعی را از مناطق مسدود شده بدون محدودیت دانلود کنیم

Hugging Face در منطقه شما در دسترس نیست؟ بیایید بررسی کنیم که چگونه می‌توان پروکسی را برای دانلود مدل‌ها و دیتاست‌ها بدون محدودیت تنظیم کرد.

📅۲۷ تیر ۱۴۰۵
```html

Hugging Face — بزرگترین مرکز برای مدل‌های AI، دیتاست‌ها و فضاها است. اما کاربران از روسیه، چین و چندین کشور دیگر به طور مرتب با مسدودیت‌ها مواجه می‌شوند: صفحه بارگذاری نمی‌شود، دانلود مدل قطع می‌شود، API خطای 403 را برمی‌گرداند. اگر شما با شبکه‌های عصبی کار می‌کنید و به دسترسی پایدار به مخازن نیاز دارید — پروکسی این مشکل را به سرعت و بدون تنظیمات پیچیده حل می‌کند.

چرا Hugging Face در دسترس نیست: دلایل مسدودیت‌ها

قبل از تنظیم پروکسی، مهم است که بفهمید چرا مشکلات دسترسی به وجود می‌آید. دلایل مختلفی وجود دارد و از این رو، راه‌حل مناسب شما بستگی به آن دارد.

مسدودیت جغرافیایی از طرف ارائه‌دهنده خدمات. در روسیه، برخی از ارائه‌دهندگان اینترنت به درخواست نهادهای نظارتی، ترافیک به منابع خارجی را مسدود یا کند می‌کنند. Hugging Face به طور دوره‌ای تحت چنین محدودیت‌هایی قرار می‌گیرد — به ویژه سرورهای CDN آن، که از طریق آنها فایل‌های مدل به وزن چند گیگابایت تا صدها گیگابایت منتقل می‌شوند.

فایروال‌های شرکتی. اگر در یک شرکت یا دانشگاه کار می‌کنید، مدیران شبکه ممکن است دسترسی به مخازن خارجی را مسدود کنند. این موضوع به ویژه برای نهادهای دولتی و شرکت‌های بزرگ که سیاست‌های امنیتی آنها دانلود فایل‌ها از منابع ناشناخته را ممنوع می‌کند، بسیار مهم است.

محدودیت‌های خود Hugging Face. در سال 2024، این پلتفرم محدودیت‌هایی برای برخی مناطق در دانلود برخی مدل‌ها — به ویژه آنهایی که تحت کنترل صادرات ایالات متحده قرار دارند — وضع کرد. مدل‌های با برچسب "restricted" ممکن است نیاز به تأیید حساب داشته باشند یا اصلاً از آدرس‌های IP خاصی در دسترس نباشند.

عدم ثبات اتصال و قطع شدن‌ها. حتی اگر مسدودیت رسمی وجود نداشته باشد، مسیریابی ترافیک از روسیه به سرورهای Hugging Face در ایالات متحده و اروپا می‌تواند به قدری ناپایدار باشد که دانلود یک مدل 20 گیگابایتی به طور مداوم قطع شود. پروکسی با سرورهای مستقر در ایالات متحده یا اروپا این مشکل را حل می‌کند — ترافیک از طریق یک کانال پایدار منتقل می‌شود.

محدودیت نرخ بر اساس IP. Hugging Face تعداد درخواست‌ها را از یک آدرس IP محدود می‌کند. اگر شما به طور خودکار چندین مدل را به صورت متوالی دانلود می‌کنید یا از اسکریپت‌ها برای بارگذاری انبوه دیتاست‌ها استفاده می‌کنید، این پلتفرم ممکن است به طور موقت IP شما را مسدود کند. چرخش پروکسی این مشکل را حل می‌کند.

مهم: VPN همانند پروکسی نیست. VPN تمام ترافیک دستگاه را رمزگذاری می‌کند و اغلب اتصال را کند می‌کند. پروکسی در سطح یک برنامه یا اسکریپت خاص کار می‌کند که برای دانلود فایل‌های بزرگ و اتوماسیون راحت‌تر است.

پروکسی چه مزایایی در کار با Hugging Face دارد

سرور پروکسی به عنوان واسطه‌ای بین کامپیوتر شما و سرورهای Hugging Face عمل می‌کند. به جای اتصال مستقیم (که ممکن است مسدود یا ناپایدار باشد)، درخواست از طریق سرور پروکسی واقع در کشوری با دسترسی عادی ارسال می‌شود.

این در عمل چه مزایایی دارد:

  • دانلود پایدار فایل‌های بزرگ. مدل‌هایی مانند LLaMA 3، Mistral، Stable Diffusion از 4 تا 150+ گیگابایت وزن دارند. از طریق پروکسی با سرور در اروپا یا ایالات متحده، دانلود بدون قطع شدن انجام می‌شود، زیرا کانال به Hugging Face کوتاه و پایدار است.
  • عبور از مسدودیت‌های جغرافیایی ارائه‌دهنده. ارائه‌دهنده شما فقط ترافیک به سرور پروکسی را می‌بیند — نه به Hugging Face. مسدودیت به طور خودکار دور زده می‌شود.
  • تغییر IP برای دور زدن محدودیت نرخ. اگر نیاز به دانلود مدل‌ها یا دیتاست‌های زیادی به صورت متوالی دارید، چرخش پروکسی به شما کمک می‌کند تا از مسدودیت‌های موقتی بر اساس IP جلوگیری کنید.
  • کار در سرورهای بدون GUI. پروکسی به راحتی از طریق متغیرهای محیطی تنظیم می‌شود — این برای کار در سرورهای دور، در کانتینرهای Docker، نوت‌بوک‌های Jupyter و خطوط CI/CD راحت است.
  • دسترسی به مدل‌های restricted. برخی مدل‌ها فقط از IP کشورهای خاص قابل دسترسی هستند. پروکسی با موقعیت جغرافیایی مناسب به آنها دسترسی می‌دهد.

در عین حال، پروکسی نیازی به تغییر در کد پروژه شما ندارد — کافی است یک بار تنظیمات را در سیستم یا محیط مشخص کنید و تمام ابزارها (huggingface_hub، transformers، git-lfs) به طور خودکار از طریق پروکسی کار خواهند کرد.

کدام نوع پروکسی برای دانلود مدل‌ها مناسب است

همه پروکسی‌ها به یک اندازه برای کار با Hugging Face مناسب نیستند. بیایید انواع اصلی و کاربرد آنها برای این کار را بررسی کنیم.

نوع پروکسی سرعت پایداری برای Hugging Face کی انتخاب کنیم
مرکز داده (DC) ⚡ بالا ✅ بالا ✅ عالی بارگذاری انبوه مدل‌ها، اسکریپت‌ها، CI/CD
رایانه‌های خانگی 🔄 متوسط ✅ بالا ✅ خوب دسترسی به مدل‌های restricted، دور زدن چک‌ها
موبایل 🔄 متوسط ⚠️ وابسته ⚠️ اضافی برای این کار نیاز نیست
رایگان ❌ پایین ❌ پایین ❌ مناسب نیستند هیچ‌کدام برای کار جدی مناسب نیستند

برای اکثر کارها با Hugging Face، انتخاب بهینه پروکسی‌های مرکز داده است. آنها حداکثر سرعت بارگذاری (که در دانلود مدل‌های با حجم ده‌ها گیگابایت مهم است)، اتصال پایدار و IP ثابت را فراهم می‌کنند. برای دانلود یک مدل 30 گیگابایتی، تفاوت بین پروکسی کند و سریع — تفاوت بین 2 ساعت و 20 دقیقه است.

پروکسی‌های خانگی در صورتی که با این مشکل مواجه هستید که Hugging Face IP‌های مراکز داده را مسدود می‌کند (این اتفاق برای برخی مدل‌های restricted می‌افتد) مفید هستند. IP‌های خانگی مانند کاربران عادی به نظر می‌رسند و کمتر باعث مشکوک شدن سیستم‌های حفاظتی پلتفرم می‌شوند.

پروکسی‌های موبایل برای دانلود مدل‌ها اضافی هستند — آنها گران‌تر هستند و مزایای استفاده از آنها (اعتماد بالای پلتفرم به IP‌های موبایل) در اینجا نیاز نیست. Hugging Face یک شبکه اجتماعی با حفاظت ضد اسپم نیست، بنابراین پروکسی‌های DC یا خانگی معمولی کافی هستند.

تنظیم پروکسی برای دسترسی از طریق مرورگر

اگر فقط نیاز دارید که سایت Hugging Face را باز کنید، مدل‌ها را بررسی کنید یا فایل را به صورت دستی از طریق رابط وب دانلود کنید — پروکسی را در مرورگر تنظیم کنید. این ساده‌ترین گزینه است.

گزینه 1: افزونه برای مرورگر (برای کارهای یک‌باره)

افزونه FoxyProxy (Firefox) یا Proxy SwitchyOmega (Chrome/Edge) را نصب کنید. پس از نصب:

  1. تنظیمات افزونه را باز کنید
  2. یک پروفایل جدید پروکسی اضافه کنید
  3. نوع را مشخص کنید: HTTP یا SOCKS5
  4. آدرس سرور (میزبان) و پورت را وارد کنید
  5. اگر پروکسی با احراز هویت است — نام کاربری و رمز عبور را وارد کنید
  6. پروفایل را ذخیره کرده و آن را فعال کنید
  7. سایت huggingface.co را باز کنید — سایت باید بارگذاری شود

گزینه 2: تنظیمات سیستم پروکسی (برای Windows)

اگر می‌خواهید پروکسی برای تمام کامپیوتر (شامل مرورگر، اسکریپت‌های Python و سایر برنامه‌ها) کار کند:

  1. به تنظیمات → شبکه و اینترنت → پروکسی بروید
  2. گزینه "استفاده از پروکسی" را فعال کنید
  3. آدرس و پورت را وارد کنید
  4. در فیلد استثنائات localhost و 127.0.0.1 را اضافه کنید
  5. تنظیمات را ذخیره کنید

💡 نکته: برای دانلود مدل‌های بزرگ از طریق مرورگر از یک مدیر دانلود (مانند Free Download Manager) استفاده کنید — این ابزار از ادامه دانلود در صورت قطع اتصال پشتیبانی می‌کند و با تنظیمات سیستم پروکسی کار می‌کند.

تنظیم پروکسی برای CLI و محیط Python

بیشتر کاربران Hugging Face مدل‌ها را از طریق خط فرمان یا اسکریپت‌های Python دانلود می‌کنند — با استفاده از کتابخانه‌های huggingface_hub، transformers یا به طور مستقیم از طریق git lfs. برای تمام این ابزارها، پروکسی از طریق متغیرهای محیطی تنظیم می‌شود.

مرحله 1. متغیرهای محیطی را تنظیم کنید

این ساده‌ترین روش است — بیشتر کتابخانه‌های Python و ابزارهای سیستمی به طور خودکار این متغیرها را شناسایی می‌کنند:

# برای Linux / macOS (در ترمینال یا ~/.bashrc / ~/.zshrc)
export HTTP_PROXY="http://username:password@proxy-host:port"
export HTTPS_PROXY="http://username:password@proxy-host:port"

# برای Windows (در PowerShell)
$env:HTTP_PROXY = "http://username:password@proxy-host:port"
$env:HTTPS_PROXY = "http://username:password@proxy-host:port"

# برای Windows (در CMD)
set HTTP_PROXY=http://username:password@proxy-host:port
set HTTPS_PROXY=http://username:password@proxy-host:port

username:password@proxy-host:port را با اطلاعات واقعی پروکسی خود جایگزین کنید. اگر پروکسی بدون احراز هویت است — فقط http://proxy-host:port را مشخص کنید.

مرحله 2. دانلود مدل از طریق huggingface_hub

پس از تنظیم متغیرهای محیطی، دستورات استاندارد بدون تغییر کار می‌کنند:

# دانلود مدل از طریق CLI
huggingface-cli download mistralai/Mistral-7B-v0.1

# یا از طریق Python
from huggingface_hub import snapshot_download
snapshot_download(repo_id="mistralai/Mistral-7B-v0.1")

مرحله 3. تنظیم پروکسی به طور مستقیم در Python (اگر متغیرهای محیطی کار نمی‌کنند)

در برخی موارد — مانند در Jupyter Notebook یا هنگام اجرای از طریق IDE — متغیرهای محیطی ممکن است منتقل نشوند. در این صورت، پروکسی را به طور صریح در کد تنظیم کنید:

import os
import requests
from huggingface_hub import snapshot_download

# تنظیم پروکسی از طریق os.environ
os.environ["HTTP_PROXY"] = "http://username:password@proxy-host:port"
os.environ["HTTPS_PROXY"] = "http://username:password@proxy-host:port"

# حالا مدل را دانلود می‌کنیم — پروکسی به طور خودکار اعمال می‌شود
snapshot_download(repo_id="meta-llama/Meta-Llama-3-8B")

تنظیم پروکسی برای git lfs

اگر شما مخزن را از طریق git (روش git clone) کلون می‌کنید، باید پروکسی را به طور جداگانه برای git تنظیم کنید:

# تنظیم HTTP پروکسی برای git
git config --global http.proxy http://username:password@proxy-host:port
git config --global https.proxy http://username:password@proxy-host:port

# کلون کردن مخزن با مدل
git clone https://huggingface.co/mistralai/Mistral-7B-v0.1

# برای حذف پروکسی پس از استفاده
git config --global --unset http.proxy
git config --global --unset https.proxy

⚠️ مهم: git lfs (ذخیره‌سازی فایل‌های بزرگ) از یک کانال جداگانه برای دانلود فایل‌های بزرگ استفاده می‌کند. اگر متغیرهای محیطی HTTP_PROXY به طور جهانی تنظیم شده‌اند — git lfs آنها را شناسایی می‌کند. اگر نه — آنها را به .lfsconfig در ریشه مخزن اضافه کنید.

استفاده از پروکسی در Docker و محیط‌های سروری

بسیاری از مهندسان ML با مدل‌ها در کانتینرهای Docker یا بر روی سرورهای دور (AWS، GCP، Hetzner، سرورهای خود) کار می‌کنند. اگر سرور در روسیه یا کشور دیگری با دسترسی محدود به Hugging Face باشد — پروکسی باید در سطح کانتینر یا سیستم تنظیم شود.

گزینه 1: انتقال پروکسی به Docker از طریق متغیرهای محیطی

هنگام اجرای کانتینر، متغیرهای محیطی را از طریق پرچم -e منتقل کنید:

docker run -it \
  -e HTTP_PROXY="http://username:password@proxy-host:port" \
  -e HTTPS_PROXY="http://username:password@proxy-host:port" \
  -e NO_PROXY="localhost,127.0.0.1" \
  python:3.11 bash

گزینه 2: پروکسی در Dockerfile

اگر پروکسی در مرحله ساخت تصویر نیاز باشد (به عنوان مثال، برای دانلود مدل در حین docker build):

FROM python:3.11

# تنظیم پروکسی برای ساخت
ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY

RUN pip install huggingface_hub transformers

# دانلود مدل در حین ساخت
RUN python -c "from huggingface_hub import snapshot_download; snapshot_download('mistralai/Mistral-7B-v0.1')"

اجرای ساخت با انتقال پروکسی:

docker build \
  --build-arg HTTP_PROXY="http://username:password@proxy-host:port" \
  --build-arg HTTPS_PROXY="http://username:password@proxy-host:port" \
  -t my-ml-app .

گزینه 3: تنظیم پروکسی در سطح سرور (Ubuntu/Debian)

اگر می‌خواهید پروکسی برای تمام کاربران و فرآیندها در سرور کار کند — تنظیمات را به پیکربندی سیستم اضافه کنید:

# اضافه کردن به /etc/environment
HTTP_PROXY="http://username:password@proxy-host:port"
HTTPS_PROXY="http://username:password@proxy-host:port"
NO_PROXY="localhost,127.0.0.1,::1"

# اعمال تغییرات
source /etc/environment

پس از این، تمام دستورات — pip install، huggingface-cli download، wget، curl — به طور خودکار از پروکسی استفاده خواهند کرد.

برای کارهای سروری که سرعت بارگذاری فایل‌های بزرگ مهم است، پروکسی‌های مرکز داده بسیار مناسب هستند — آنها پهنای باند بالا و اتصال پایدار را فراهم می‌کنند که در بارگذاری مدل‌های با وزن 20–100+ گیگابایت حیاتی است.

چک‌لیست: چگونه بررسی کنیم که پروکسی به درستی کار می‌کند

قبل از اینکه بارگذاری یک مدل سنگین را آغاز کنید، مطمئن شوید که پروکسی به درستی تنظیم شده است. در اینجا یک چک‌لیست سریع برای بررسی وجود دارد:

1. بررسی کنید که پروکسی به طور کلی کار می‌کند

# بررسی از طریق curl — باید IP سرور پروکسی را برگرداند، نه IP واقعی شما
curl -x http://username:password@proxy-host:port https://api.ipify.org

# بررسی از طریق Python
import requests
proxies = {"http": "http://username:password@proxy-host:port",
           "https": "http://username:password@proxy-host:port"}
r = requests.get("https://api.ipify.org", proxies=proxies)
print(r.text)  # باید IP پروکسی را برگرداند، نه IP شما

2. بررسی کنید که Hugging Face از طریق پروکسی در دسترس است

curl -x http://username:password@proxy-host:port https://huggingface.co/api/models?limit=1
# نتیجه مورد انتظار: JSON با داده‌های مدل‌ها (وضعیت 200)

3. بررسی کنید که سرعت بارگذاری چگونه است

# یک فایل تست کوچک دانلود کنید و سرعت را اندازه‌گیری کنید
curl -x http://username:password@proxy-host:port \
  -o /dev/null \
  --progress-bar \
  "https://huggingface.co/bert-base-uncased/resolve/main/config.json"

✅ چک‌لیست قبل از بارگذاری مدل:

  • IP پروکسی هنگام بررسی از طریق api.ipify.org نمایش داده می‌شود
  • API Hugging Face وضعیت 200 را برمی‌گرداند
  • سرعت بارگذاری فایل تست > 5 مگابایت/ثانیه (برای کار راحت)
  • متغیرهای HTTP_PROXY و HTTPS_PROXY در محیط مناسب تنظیم شده‌اند
  • برای git — تنظیمات پروکسی از طریق git config مشخص شده‌اند
  • برای Docker — متغیرها از طریق -e یا ARG منتقل شده‌اند
  • NO_PROXY شامل localhost و 127.0.0.1 است

اشتباهات رایج و چگونه از آنها جلوگیری کنیم

ما رایج‌ترین مشکلاتی که در تنظیم پروکسی برای Hugging Face با آن مواجه می‌شوید و راه‌حل‌های آنها را جمع‌آوری کرده‌ایم.

خطا 1: SSL certificate verify failed

برخی پروکسی‌ها (به ویژه پروکسی‌های شرکتی) ترافیک HTTPS را قطع کرده و گواهی SSL را تغییر می‌دهند. کتابخانه‌های Python به چنین گواهی‌ای اعتماد نمی‌کنند و خطا را برمی‌گردانند.

راه‌حل: از پروکسی‌های با کیفیت استفاده کنید که SSL را قطع نمی‌کنند. اگر این پروکسی شرکتی است — گواهی ریشه شرکت را از طریق متغیر REQUESTS_CA_BUNDLE به لیست گواهی‌های معتبر اضافه کنید.

خطا 2: پروکسی در مرورگر کار می‌کند، اما در Python کار نمی‌کند

تنظیمات سیستم پروکسی Windows همیشه به Python منتقل نمی‌شوند. مرورگر آنها را می‌خواند، اما Python — خیر.

راه‌حل: متغیرهای محیطی HTTP_PROXY و HTTPS_PROXY را قبل از اجرای اسکریپت به طور صریح تنظیم کنید یا آنها را در ابتدای فایل Python از طریق os.environ اضافه کنید.

خطا 3: بارگذاری شروع می‌شود، اما در وسط قطع می‌شود

پروکسی با محدودیت ترافیک یا اتصال ناپایدار ممکن است بارگذاری فایل‌های بزرگ را قطع کند.

راه‌حل: از پروکسی بدون محدودیت ترافیک استفاده کنید. کتابخانه huggingface_hub از ادامه بارگذاری پشتیبانی می‌کند — اگر بارگذاری قطع شد، دستور را دوباره با همان مسیر اجرا کنید و ادامه خواهد یافت.

خطا 4: 407 Proxy Authentication Required

پروکسی نیاز به احراز هویت دارد، اما این اطلاعات در درخواست منتقل نمی‌شود.

راه‌حل: اطمینان حاصل کنید که نام کاربری و رمز عبور به درستی در URL پروکسی مشخص شده‌اند: http://login:password@host:port. اگر رمز عبور شامل نمادهای خاص (@، #، %) است — آنها را از طریق URL-encoding کدگذاری کنید.

خطا 5: پروکسی کار می‌کند، اما Hugging Face همچنان در دسترس نیست

این به این معنی است که خود سرور پروکسی در یک منطقه مسدود شده قرار دارد یا مشکلاتی در مسیریابی به Hugging Face دارد.

راه‌حل: موقعیت جغرافیایی سرور پروکسی را بررسی کنید. برای دسترسی به Hugging Face، پروکسی‌هایی با سرورهای واقع در ایالات متحده، آلمان، هلند یا سایر کشورهای اروپایی انتخاب کنید. از پروکسی‌های واقع در روسیه، چین، ایران خودداری کنید — آنها ممکن است همان محدودیت‌ها را داشته باشند.

خطا 6: متغیرهای محیطی پس از راه‌اندازی مجدد ذخیره نمی‌شوند

اگر متغیرها را از طریق export در ترمینال تنظیم کرده‌اید — آنها فقط در جلسه فعلی کار می‌کنند.

راه‌حل: خطوط export HTTP_PROXY=... را به فایل ~/.bashrc یا ~/.zshrc (Linux/macOS) یا به متغیرهای محیطی سیستم Windows از طریق "ویژگی‌های سیستم" اضافه کنید.

نتیجه‌گیری

تنظیم پروکسی برای Hugging Face یک کار ساده است که چندین مشکل را به طور همزمان حل می‌کند: دور زدن مسدودیت‌های جغرافیایی، بارگذاری پایدار مدل‌های سنگین، دور زدن محدودیت نرخ و دسترسی به مخازن restricted. مزیت کلیدی این روش از طریق متغیرهای محیطی — جهانی بودن آن است: یک بار تنظیم کردید و تمام ابزارها (huggingface_hub، transformers، git lfs، curl) به طور خودکار از طریق پروکسی کار خواهند کرد.

برای اکثر کارها — دانلود مدل‌ها، کار با اسکریپت‌ها، محیط‌های سروری — انتخاب بهینه پروکسی‌های مرکز داده است: آنها حداکثر سرعت و ثبات را در بارگذاری فایل‌های بزرگ فراهم می‌کنند. اما اگر به مدل‌هایی با دسترسی محدود بر اساس موقعیت جغرافیایی نیاز دارید یا پلتفرم IP‌های مراکز داده را مسدود می‌کند — پروکسی‌های خانگی با موقعیت جغرافیایی مناسب را در نظر بگیرید: آنها مانند کاربران خانگی عادی به نظر می‌رسند و تقریباً هیچ مسدودیتی ایجاد نمی‌کنند.

قانون اصلی هنگام کار با Hugging Face از طریق پروکسی — انتخاب سرور در ایالات متحده یا غرب اروپا، بررسی اتصال قبل از بارگذاری مدل‌های سنگین و فراموش نکردن متغیر NO_PROXY است، تا ترافیک محلی به طور مستقیم منتقل شود.

```