الدرس 6 من 8

النشر على السحابة

من localhost لـ URL حقيقي.

اختار المكان المناسب

المنصةمناسبة لـالصعوبة
Hugging Face Spacesdemos بـ Gradio أو Streamlit، والـ portfolioسهلة جداً
Render / RailwayAPI صغير أو تطبيق من GitHub أو Dockerسهلة
Google Cloud Run / AWSإنتاج حقيقي، بيكبر مع عدد اليوزرزمتوسطة

ابدأ بالأسهل: الهدف الأول إن الناس تشوف شغلك. لما يبقى عندك يوزرز حقيقيين، اتنقل للسحابات الكبيرة.

Hugging Face Spaces: أسهل طريق

  • اعمل حساب على huggingface.co، وبعدين New Space، واختار Gradio.
  • ارفع app.py و requirements.txt وملف الموديل (بالموقع أو بـ Git).
  • لو محتاج API key، حطه في Settings ← Secrets، وفي الكود اقراه بـ os.environ.
  • استنى دقيقة، وهيبقى عندك لينك عام للـ demo بتاعك.
requirements.txt
gradio
scikit-learn==1.8.0
pandas
joblib

Google Cloud Run: الـ API بتاعك في Docker

Cloud Run بياخد الـ container بتاعك ويشغله، ويكبّره لوحده لو الطلبات كترت، ويقفله خالص لو مفيش طلبات (فمش بتدفع وهو فاضي). وبيبني الـ image من الـ Dockerfile لوحده:

terminal
# One-time setup: install the gcloud CLI, then
gcloud auth login
gcloud config set project YOUR_PROJECT_ID

# Build from the Dockerfile in this folder and deploy
gcloud run deploy price-api --source . --region europe-west1 --allow-unauthenticated

# It prints a public URL like https://price-api-xxxxx.run.app
⚠ حط حد للفلوس من أول يومالسحابات الكبيرة بتحاسب على الاستخدام. اعمل budget alert في حسابك، وافهم التسعير قبل ما تنشر، واقفل أي حاجة مش مستخدمها. وخصوصاً الـ GPUs: ساعة GPU منسية ممكن تتحول لفاتورة كبيرة.

كلّم الـ API من أي مكان

call_deployed.py
import requests

URL = "https://price-api-xxxxx.run.app"     # your deployed URL

flat = {"city": "Alexandria", "area": 110, "rooms": 3,
        "floor": 6, "age": 12, "metro_km": 3.0}
r = requests.post(f"{URL}/predict", json=flat, timeout=10)
r.raise_for_status()                         # raise an error if not 2xx
print(r.json())
🎯 ده الـ portfolio الحقيقيلينك لـ demo شغال في الـ CV أقوى من أي شهادة. اللي بيعمل مقابلة معاك يقدر يفتحه ويجربه في ثانية، ويبص على الكود في GitHub، ويفهم إنك بتعرف تكمّل المشروع للآخر.
الدرس اللي فات