الدرس 6 من 8
النشر على السحابة
من localhost لـ URL حقيقي.
اختار المكان المناسب
| المنصة | مناسبة لـ | الصعوبة |
|---|---|---|
| Hugging Face Spaces | demos بـ Gradio أو Streamlit، والـ portfolio | سهلة جداً |
| Render / Railway | API صغير أو تطبيق من 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 بتاعك.
gradio scikit-learn==1.8.0 pandas joblib
Google Cloud Run: الـ API بتاعك في Docker
Cloud Run بياخد الـ container بتاعك ويشغله، ويكبّره لوحده لو الطلبات كترت، ويقفله خالص لو مفيش طلبات (فمش بتدفع وهو فاضي). وبيبني الـ image من الـ Dockerfile لوحده:
# 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 من أي مكان
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، ويفهم إنك بتعرف تكمّل المشروع للآخر.