🚀 راهنمای استفاده از سرویس‌های محاسباتی و هوش مصنوعی

دانشکده علوم ریاضی - دانشگاه فردوسی مشهد

📌 توجه:
  • روال جاری استفاده از سیستم‌های پردازش سنگین دانشکده، همان مسیری است که در این صفحه از سایت دانشکده ذکر شده است. سرویس‌های JupyterHub، code-server و مدل‌های زبانی محلی (با دو روش دسترسی از وب و API) که در ادامه توضیح داده خواهند شد، به صورت آزمایشی بر روی یک سیستم دارای کارت گرافیک ۴۰۹۰ قابل استفاده هستند.
  • در حال حاضر، برای استفاده از JupyterLab اعضای محترم هیأت علمی و کارکنان می‌توانند با حساب کاربری ویندوز دانشگاه خود وارد شوند. دانشجویان تحصیلات تکمیلی از بخش Sign up در درگاه ورود ژوپیترهاب، اقدام به ثبت نام نموده و سپس به کاربر @mamintoosi‌ در بله، اطلاع دهند تا حساب آنها فعال شود.
  • سرویس‌های Python Shiny، Whisper، TorchLean و LaTeX → Lean در حال حاضر غیرفعال هستند.

📓 JupyterHub

محیطی شبیه Google Colab برای اجرای کدهای پایتون و R با دسترسی به GPU (RTX 4090).

🔗 روش‌های دسترسی

🏫 از داخل دانشکده

در مرورگر سیستم اداری خود (متصل به شبکه دانشکده) آدرس زیر را وارد کنید:

سپس با نام کاربری و رمز عبور ویندوز دانشگاهی خود وارد شوید.

🌍 از خارج از دانشکده (Tailscale)

  1. دانلود و نصب Tailscale
  2. ثبت‌نام با یک ایمیل
  3. قبول دعوتنامه از این لینک
  4. وارد کردن آدرس زیر در مرورگر:
🔹 استفاده از نام دستگاه (توصیه شده):
🔹 استفاده از IP (جایگزین):

وارد شدن با نام کاربری و رمز عبور ویندوز دانشگاهی

🔍 نکته مهم:
  • هر دستگاهی که به شبکه Tailscale متصل می‌شود، یک IP منحصربه‌فرد دریافت می‌کند.
  • آدرس نام دستگاه ثابت است و تغییر نمی‌کند، بنابراین استفاده از آن توصیه می‌شود.
  • اگر با نام دستگاه به مشکل خوردید، IP صحیح سرور را از پنل مدیریت Tailscale پیدا کنید.

💻 code-server (محیط توسعه Lean)

محیط برنامه‌نویسی تحت وب برای زبان Lean (مبتنی بر VS Code) با پشتیبانی از کتابخانه Mathlib.

🔗 ۱. روش‌های دسترسی

🏫 از داخل دانشکده

در مرورگر سیستم اداری خود (متصل به شبکه دانشکده) آدرس زیر را وارد کنید:

سپس با رمز عبور ارائه‌شده وارد شوید.

🌍 از خارج از دانشکده (Tailscale)

پس از اتصال به Tailscale، آدرس زیر را در مرورگر وارد کنید:

🔹 استفاده از نام دستگاه (توصیه شده):
🔹 استفاده از IP (جایگزین):

وارد شدن با رمز عبور ارائه‌شده

🔍 نکته: اگر با نام دستگاه به مشکل خوردید، IP صحیح سرور را از پنل مدیریت Tailscale پیدا کنید.

🔑 ۲. دریافت رمز عبور

  • 📧 ارسال ایمیل به m.amintoosi@um.ac.ir
  • 💬 ارسال پیام در پیام‌رسان بله به آی‌دی @mamintoosi
⚠️ توجه: رمز عبور به‌صورت دوره‌ای تغییر خواهد کرد. در صورت عدم دسترسی، مجدداً درخواست دهید.

⚙️ ۳. تنظیمات مرورگر برای نمایش LEAN InfoView

برای مشاهده پنجره LEAN InfoView (که اطلاعات اثبات‌ها و اهداف را نشان می‌دهد)، باید تنظیمات امنیتی مرورگر را تغییر دهید:

🔧 مراحل تنظیم در مرورگر کروم/لبه:

  1. آدرس زیر را در نوار آدرس مرورگر وارد کنید:
    chrome://flags/#unsafely-treat-insecure-origin-as-secure
    (در مرورگر Edge از edge://flags/... استفاده کنید)
  2. گزینه Insecure origins treated as secure را پیدا کنید.
  3. آن را Enable کنید.
  4. در قسمت Insecure origins treated as secure، آدرس‌های زیر را اضافه کنید:
    http://172.21.129.16:31415
    http://math-gpu-server.tailde35cf.ts.net:31415
    http://100.71.218.11:31415
    http://100.71.218.12:31415
  5. مرورگر را Restart (بازراه‌اندازی) کنید.
💡 نکته فنی: این تنظیم به این دلیل لازم است که LEAN InfoView از WebSocket برای ارتباط استفاده می‌کند و مرورگرهای مدرن برای اتصالات ناامن (HTTP) محدودیت اعمال می‌کنند. با این تنظیم، آدرس محلی شما به‌عنوان «امن» شناخته می‌شود.

📚 ۴. آشنایی با Lean

  • Lean یک زبان برنامه‌نویسی کاربردی و اثبات‌کننده قضایا است که برای ریاضیات رسمی‌شده طراحی شده است.
  • Mathlib بزرگترین کتابخانه ریاضیات رسمی‌شده برای Lean است که شامل قضایا، تعاریف و اثبات‌های گسترده در شاخه‌های مختلف ریاضیات می‌باشد.
  • این محیط برای کار بر روی پروژه‌های پژوهشی مرتبط با ریاضیات رسمی، اثبات‌های خودکار و توسعه کتابخانه‌های ریاضی بسیار مفید است.

📖 منابع آموزشی:

🎯 ۵. کاربردها در دانشکده علوم ریاضی

  • ✅ پژوهش در زمینه ریاضیات رسمی‌شده (Formalized Mathematics)
  • ✅ توسعه کتابخانه‌های ریاضی برای پروژه‌های تحقیقاتی
  • ✅ آموزش اثبات‌های دقیق ریاضی با استفاده از کامپیوتر
  • ✅ همکاری در پروژه‌های متن‌باز مرتبط با Lean و Mathlib
  • ✅ آشنایی با سیستم‌های اثبات‌کننده قضایا (Theorem Provers)
💡 توصیه: برای شروع کار با Lean، ابتدا با بازی اعداد طبیعی آشنا شوید و سپس به سراغ پروژه‌های جدی‌تر بروید.

💬 مدل‌های زبانی (Ollama Web UI)

چت تعاملی با مدل‌های زبانی بزرگ (LLM) روی سرور دانشکده.

🔗 ۱. روش‌های دسترسی از طریق مرورگر

🏫 از داخل دانشکده

🌍 از خارج از دانشکده (Tailscale)

🔹 استفاده از نام دستگاه (توصیه شده):
🔹 استفاده از IP (جایگزین):
🔍 نکته: اگر با نام دستگاه به مشکل خوردید، IP صحیح سرور را از پنل مدیریت Tailscale پیدا کنید.

👤 ۲. نحوه ورود

این سرویس هنوز به احراز هویت دانشگاه متصل نیست؛ یا از حساب کاربری مهمان با ایمیل guest@um.ac.ir و رمز عبور guest استفاده کنید، یا:
  1. در صفحه ورود، با ایمیل دانشگاهی خود ثبت‌نام کنید.
  2. به m.amintoosi@um.ac.ir ایمیل بزنید تا عضویت شما تأیید شود.
  3. پس از تأیید، می‌توانید وارد شوید.
⚠️ نکته: در صورتی که از حساب مهمان استفاده کنید، دسترسی به همه مدل‌ها نخواهید داشت.

🔌 ۳. دسترسی برنامه‌نویسی (Ollama API)

برای اتصال از طریق کد پایتون یا R (مناسب برای ساخت Agent، خودکارسازی، و افزونه‌هایی مانند Continue و Cline در VSCode):

🔍 تفاوت اجرای محلی و از راه دور:
  • هنگام اجرای برنامه از داخل JupyterHub (روی سرور ۴۰۹۰)، کد شما مستقیماً به Ollama متصل می‌شود و نیازی به ارسال درخواست از طریق شبکه نیست. سرعت بالاتر و تأخیر کمتری دارید.
  • هنگام اجرای برنامه از کامپیوتر شخصی (در دانشکده یا از طریق Tailscale)، درخواست‌ها از طریق شبکه ارسال می‌شوند. ممکن است تأخیر جزئی وجود داشته باشد.

📍 آدرس سرور Ollama

محل اجرای کد آدرس Ollama
از داخل JupyterHub http://host.docker.internal:11434 یا http://172.21.129.16:11434
از کامپیوتر شخصی (داخل دانشکده) http://172.21.129.16:11434
از کامپیوتر شخصی (خارج از دانشکده با Tailscale) http://math-gpu-server.tailde35cf.ts.net:11434

🐍 نمونه کد پایتون

from ollama import Client

# --- از داخل JupyterHub ---
client = Client(host='http://host.docker.internal:11434')

# --- از کامپیوتر شخصی (داخل دانشکده) ---
# client = Client(host='http://172.21.129.16:11434')

# --- از کامپیوتر شخصی (خارج از دانشکده با Tailscale) ---
# client = Client(host='http://math-gpu-server.tailde35cf.ts.net:11434')

model = 'qwen3:8b'
prompt = "Explain the difference between supervised and unsupervised learning in one paragraph."

response = client.chat(model=model, messages=[
    {'role': 'user', 'content': prompt}
])

print(response['message']['content'])

📊 نمونه کد R

library(ollamar)

# --- از داخل JupyterHub ---
OLLAMA_HOST <- "http://host.docker.internal:11434"

# --- از کامپیوتر شخصی (داخل دانشکده) ---
# OLLAMA_HOST <- "http://172.21.129.16:11434"

# --- از کامپیوتر شخصی (خارج از دانشکده با Tailscale) ---
# OLLAMA_HOST <- "http://math-gpu-server.tailde35cf.ts.net:11434"

model <- "qwen3:8b"
prompt <- "Explain the difference between supervised and unsupervised learning in one paragraph."

response <- chat(
  model = model,
  messages = list(list(role = "user", content = prompt)),
  output = "text",
  host = OLLAMA_HOST
)

cat(response)
💡 نکته R: پکیج ollamar آدرس سرور را به‌صورت پارامتر host در هر تابع دریافت می‌کند. برخلاف پایتون، متغیر محیطی OLLAMA_HOST را به‌صورت خودکار نمی‌خواند.
🔍 نکته: استفاده از نام دستگاه Tailscale در کد توصیه می‌شود، زیرا حتی اگر IP تغییر کند، کد شما همچنان کار خواهد کرد.

📚 ۴. مدل‌های زبانی موجود

حدود ۱۰۰ گیگابایت مدل زبانی روی سرور قرار داده شده است. این مدل‌ها نسبت به مدل‌های بزرگ آنلاین (مانند ChatGPT و Claude) توانایی کمتری دارند، اما برای کارهای زیر در محیط محلی (بدون اینترنت بین‌الملل و بدون پرداخت هزینه API) مفید هستند:

  • 🔬 اجرای پروژه‌های پژوهشی (مانند مقاله Nature: Large language models for scientific discovery)
  • 🤖 ساخت Agentهای هوشمند برای خودکارسازی وظایف
  • 🔐 چت با مدل محلی
  • 💻 کدنویسی و دیباگ با افزونه‌هایی مانند Continue و Cline در VSCode

📋 لیست مدل‌های دانلود شده

مدل حجم کاربردها
qwen3.5:27b 17 GB قوی‌ترین مدل دانلود شده، مناسب کارهای پیچیده، استدلال عمیق، کدنویسی پیشرفته
gemma3:27b 16 GB مدل قدرتمند گوگل، مناسب وظایف عمومی، تولید متن، درک مطلب
Qwen3.6-27B-NVFP4 15 GB نسخه بهینه‌شده Qwen 3.6 با کوانتیزه NVFP4، سریع‌تر از نسخه اصلی
gpt-oss:20b 13 GB مدل متن‌باز شبیه GPT، مناسب تولید متن، کدنویسی، تحلیل
qwen3:14b 9.3 GB کدنویسی، استدلال، تولید متن به زبان‌های مختلف (از جمله فارسی)
llava:13b 8.0 GB تحلیل همزمان متن و تصویر – توصیف تصاویر، پاسخ به سوالات درباره تصاویر
qwen3-vl:8b 6.1 GB مدل چندوظیفه‌ای (متن + تصویر) – مناسب کارهای بصری
qwen3:8b 5.1 GB تعادل بین سرعت و کیفیت، مناسب برای استفاده روزمره
llava:7b 4.7 GB تحلیل متن و تصویر – نسخه سبک‌تر برای پاسخگویی سریع‌تر
falcon:7b 4.2 GB تولید خلاقانه متن، داستان‌نویسی، ایده‌پردازی
deepseek-math-7b-rl 3 GB حل مسائل ریاضی، استدلال کمی، تحلیل عددی
mistral:7b 4.1 GB مدل همه‌فن‌حریف، مناسب برای طیف گسترده‌ای از وظایف
qwen3.5:4b 3.4 GB سبک و سریع برای کارهای ساده و پاسخ‌های کوتاه
gemma3:4b 3.3 GB نسخه سبک مدل گوگل، مناسب کارهای سریع و روزمره
qwen3-vl:4b 3.3 GB تحلیل متن و تصویر – نسخه بسیار سبک
llama3.2 2.0 GB سبک‌ترین مدل، پاسخ‌های آنی، مناسب آزمایش سریع
qwen2.5-coder:1.5b 986 MB کدنویسی سریع – نسخه بسیار سبک برای کارهای ساده برنامه‌نویسی
embeddinggemma 621 MB تولید بردارهای معنایی (Embedding) برای جستجوی شباهت و بازیابی اطلاعات
💡 توصیه: برای شروع، مدل Qwen3.5:4B گزینه‌ی مناسبی هست. برای کارهای سنگین‌تر از GPT-OSS:20B استفاده کنید. در فراخوانی مدل‌های بزرگ با تاخیر در پاسخ مواجه خواهید شد.

🔬 Research Idea Scout (ایده‌یاب پژوهشی)

ابزار هوش مصنوعی برای کشف مخزن‌های اخیر GitHub و تولید ایده‌های پژوهشی با استفاده از مدل‌های زبانی محلی و جستجوی arxiv-sanity.

🔗 روش‌های دسترسی

🏫 از داخل دانشکده

در مرورگر سیستم اداری خود (متصل به شبکه دانشکده) آدرس زیر را وارد کنید:

🌍 از خارج از دانشکده (Tailscale)

🔹 استفاده از نام دستگاه (توصیه شده):
🔹 استفاده از IP (جایگزین):
🔍 نکته: اگر با نام دستگاه به مشکل خوردید، IP صحیح سرور را از پنل مدیریت Tailscale پیدا کنید.

🎯 کاربردها

  • 🔍 کشف مخزن‌های اخیر GitHub در زمینه یادگیری ماشین، بینایی ماشین و بهینه‌سازی ترکیبی
  • 📄 جستجوی مقالات arxiv-sanity برای یافتن مقالات مرتبط
  • 🤖 تولید ایده‌های پژوهشی با استفاده از مدل‌های زبانی محلی (LM Studio یا Ollama)
  • 📊 مدیریت و مشاهده تاریخچه ایده‌ها تولید شده
  • 📅 زمان‌بندی اجرای خودکار روزانه

⚙️ تنظیمات

برای تغییر تنظیمات (مانند پرسش جستجو، مدل زبانی، و زمان‌بندی)، از طریق رابط وب اقدام کنید یا فایل config.json را ویرایش نمایید.

💡 نکته: این سرویس از مدل‌های زبانی محلی (Ollama یا LM Studio) برای تولید ایده‌ها استفاده می‌کند. برای عملکرد بهتر، از مدل‌های بزرگتر استفاده کنید.

☸️ خوشه محاسباتی (Kubernetes Cluster)

خوشه محاسباتی توزیع‌شده مبتنی بر K3s (نسخه سبک Kubernetes) شامل دو سیستم — یک Master و یک Worker — برای اجرای همزمان چندین سرویس محاسباتی در حال راه اندازی و تست است.

🔗 روش‌های دسترسی

🏫 از داخل دانشکده

در مرورگر سیستم اداری خود (متصل به شبکه دانشکده) آدرس زیر را وارد کنید:

سیستم در حال راه اندازی است. فعلا از بخش Sign up در درگاه ورود ژوپیترهاب، اقدام به ثبت نام نموده و منتظر تایید باشید.

🌍 از خارج از دانشکده (Tailscale)

  1. دانلود و نصب Tailscale
  2. ثبت‌نام با یک ایمیل
  3. قبول دعوتنامه از این لینک
  4. وارد کردن آدرس زیر در مرورگر:
🔹 استفاده از نام دستگاه (توصیه شده):
🔹 استفاده از IP (جایگزین):

وارد شدن با حساب کاربری ثبت نام و تایید شده

📋 مشخصات سرورها

ویژگی Master (ماستر) Worker (ورکر)
نام master-h610m-hd3p worker1-h170-d3h
IP 172.21.129.18 172.21.129.17
CPU i3-13100 (4 هسته / 8 رشته) i7-7700K (4 هسته / 8 رشته)
RAM 15 GB 31 GB
GPU ندارد GTX 1080 (۸ GB VRAM)
Serve K3s Server + JupyterHub Hub + Dashboard K3s Agent + پادهای کاربران + GPU Workloads

🔑 نحوه ورود

  1. آدرس JupyterHub خوشه را در مرورگر باز کنید (http://172.21.129.18:32081 از داخل یا از طریق Tailscale)
  2. نام کاربری و رمز عبور اختصاصی خود را وارد کنید (توسط مدیر سیستم ایجاد شده)
  3. نوت‌بوک Python جدید بسازید و شروع به کار کنید!
⚠️ توجه: حساب کاربری این خوشه با حساب ویندوز دانشگاه متفاوت است. برای دریافت حساب با مدیر سیستم تماس بگیرید.

🎯 مزایای خوشه محاسباتی

  • ✅ اجرای همزمان چندین نوت‌بوک بدون تداخل منابع
  • ✅ تخصیص خودکار CPU و RAM به هر کاربر
  • ✅ دسترسی به GPU (GTX 1080) روی ورکر برای محاسبات سنگین
  • ✅ مقیاس‌پذیری — امکان افزودن گره‌های جدید (مثلاً سیستم RTX 4090 در آینده)
  • ✅ مدیریت متمرکز کاربران و منابع از طریق داشبورد
💡 نکته: برای اطلاعات بیشتر درباره نحوه استفاده از Kubernetes و JupyterHub، فایل‌های راهنما در پوشه kubernetes-fum-math موجود است. با مدیر سیستم (m.amintoosi@um.ac.ir) تماس بگیرید.

⚠️ نکات مهم