1. مقدمة
نظرة عامة
أضافت خدمة Cloud Run مؤخرًا ميزة استخدام وحدة معالجة الرسومات. ويتوفّر المنتج كنسخة حصرية متاحة للجميع في قائمة الانتظار. إذا أردت تجربة الميزة، يُرجى ملء هذا النموذج للانضمام إلى قائمة الانتظار. Cloud Run هي منصة حاويات على Google Cloud تسهّل تشغيل الرمز البرمجي في حاوية بدون الحاجة إلى إدارة مجموعة.
وفي الوقت الحالي، نجد أن وحدات معالجة الرسومات التي نوفّرها هي وحدات معالجة الرسومات من فئة Nvidia L4 المزوّدة بذاكرة وصول عشوائي (vRAM) بسعة 24 غيغابايت. تتوفّر وحدة معالجة رسومات واحدة لكل مثيل من Cloud Run، ولا يزال تطبيق ميزة "التحجيم التلقائي" في Cloud Run ساريًا. ويشمل ذلك زيادة عدد النُسخ إلى 5 نُسخ (مع توفّر زيادة الحصة)، بالإضافة إلى تقليل عدد النُسخ إلى 0 نُسخ في حال عدم توفّر أي طلبات.
من حالات استخدام وحدات معالجة الرسومات تشغيل النماذج اللغوية الكبيرة المفتوحة (LLM). يُطلعك هذا الدليل التوجيهي على خطوات تفعيل خدمة تعمل على تشغيل نموذج لغوي كبير.
في هذا الدرس التطبيقي، يمكنك نشر خدمة متعددة الحاويات تستخدم Open WebUI كحاوية إدخال واجهة أمامية وتستخدم Ollama في صورة جانبية لعرض نموذج Gemma 2 2B المُخزّن في حزمة Google Cloud Storage.
المعلومات التي ستطّلع عليها
- كيفية إنشاء خدمة حاوية متعددة في Cloud Run
- كيفية نشر Ollama كتدبير جانبي يعرض نموذج Gemma 2 2B
- كيفية نشر Open WebUI كسفينة دخول للواجهة الأمامية
2. ضبط متغيّرات البيئة وتفعيل واجهات برمجة التطبيقات
ترقية gcloud CLI
يجب أولاً تثبيت إصدار حديث من واجهة سطر الأوامر gcloud. يمكنك تعديل واجهة سطر الأوامر من خلال تنفيذ الأمر التالي:
gcloud components update
إعداد المتغيّرات البيئية
يمكنك ضبط متغيّرات البيئة التي سيتم استخدامها في هذا المختبر البرمجي.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=us-central1 gcloud config set project $PROJECT_ID
تفعيل واجهات برمجة التطبيقات
قبل أن تتمكّن من بدء استخدام هذا الدليل التعليمي للترميز، هناك عدة واجهات برمجة تطبيقات يجب تفعيلها. يتطلّب هذا الدرس التطبيقي استخدام واجهات برمجة التطبيقات التالية. يمكنك تفعيل واجهات برمجة التطبيقات هذه من خلال تنفيذ الأمر التالي:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com \ storage.googleapis.com \ artifactregistry.googleapis.com
يمكنك إنشاء دليل لهذا الدرس التطبيقي حول الترميز.
mkdir ollama-sidecar-codelab cd ollama-sidecar-codelab
3- إنشاء حزمة GCS لتخزين نموذج Gemma 2 2B
أولاً، عليك تثبيت Ollama لتنزيل النموذج. سيؤدي هذا الإجراء إلى تنزيل النموذج على /home/$USER/.ollama/models
curl -fsSL https://ollama.com/install.sh | sh
يمكنك الآن تشغيل ollama عن طريق الجري
ollama serve
يبدأ Ollama الاستماع على المنفذ 11434.
افتح نافذة طرفية ثانية لسحب نموذج Gemma 2 2B إلى
ollama pull gemma2:2b
(اختياري) يمكنك التفاعل مع "جيما" من سطر الأوامر من خلال تشغيل
ollama run gemma2:2b
عند الانتهاء من المحادثة مع "جيما"، يمكنك الخروج من المحادثة عن طريق كتابة
/bye
4. إنشاء حزمة تخزين
بعد تنزيل النموذج، يمكنك نقله إلى حزمة GCS.
أولاً، أنشئ الحزمة.
gcloud storage buckets create gs://$PROJECT_ID-gemma2-2b-codelab
والآن، انقل مجلد النماذج إلى GCS.
gsutil cp -r /home/$USER/.ollama/models gs://$PROJECT_ID-gemma2-2b-codelab
5- إنشاء صورة Ollama
إنشاء ملف Dockerfile للمحتوى التالي
FROM ollama/ollama # Listen on all interfaces, port 11434 ENV OLLAMA_HOST 0.0.0.0:11434 # Store model weight files in /models ENV OLLAMA_MODELS /models # Reduce logging verbosity ENV OLLAMA_DEBUG false # Never unload model weights from the GPU ENV OLLAMA_KEEP_ALIVE -1 # Store the model weights in the container image ENV MODEL gemma2:2b RUN ollama serve & sleep 5 && ollama pull $MODEL # Start Ollama ENTRYPOINT ["ollama", "serve"]
أنشئ مستودعًا في Artifact Registry لتخزين صور خدماتك.
gcloud artifacts repositories create ollama-sidecar-codelab-repo --repository-format=docker \
--location=us-central1 --description="Ollama + OpenWebUI website demo" \
--project=$PROJECT_ID
إنشاء صورة "الجانب الإضافي" في Olama
gcloud builds submit \
--tag us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/ollama-gemma-2b \
--machine-type e2-highcpu-32
6- إنشاء صورة الواجهة الأمامية Open WebUI
في هذا القسم، ستنشئ حاوية دخول الواجهة الأمامية باستخدام Open WebUI.
استخدِم Docker لتنزيل صورة Open WebUI.
docker pull ghcr.io/open-webui/open-webui:main
بعد ذلك، عليك ضبط Docker لاستخدام بيانات اعتمادك على Google Cloud للمصادقة مع Artifact Registry. سيتيح لك ذلك استخدام Docker لدفع صورة إلى مستودع Artifact Registry.
gcloud auth configure-docker us-central1-docker.pkg.dev
ضَع علامة على الصورة ثم انتقِل إلى Artifact Registry.
docker tag ghcr.io/open-webui/open-webui:main us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui docker push us-central1-docker.pkg.dev/$PROJECT_ID/ollama-sidecar-codelab-repo/openwebui
7- نشر الخدمة التي تستخدم حاويات متعددة على Cloud Run
استخدام ملف yaml لنشر الخدمة المتعددة الحاويات
أنشئ service.yaml
يتضمّن المحتوى التالي.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: ollama-sidecar-codelab labels: cloud.googleapis.com/location: us-central1 spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: '5' run.googleapis.com/cpu-throttling: 'false' run.googleapis.com/startup-cpu-boost: 'true' run.googleapis.com/container-dependencies: '{"openwebui":["ollama-sidecar"]}' spec: containerConcurrency: 80 timeoutSeconds: 300 containers: - name: openwebui image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/openwebui ports: - name: http1 containerPort: 8080 env: - name: OLLAMA_BASE_URL value: http://localhost:11434 - name: WEBUI_AUTH value: 'false' resources: limits: memory: 1Gi cpu: 2000m volumeMounts: - name: in-memory-1 mountPath: /app/backend/data startupProbe: timeoutSeconds: 240 periodSeconds: 240 failureThreshold: 1 tcpSocket: port: 8080 - name: ollama-sidecar image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/ollama-sidecar-codelab/ollama-gemma-2b resources: limits: cpu: '6' nvidia.com/gpu: '1' memory: 16Gi volumeMounts: - name: gcs-1 mountPath: /root/.ollama startupProbe: timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3 tcpSocket: port: 11434 volumes: - name: gcs-1 csi: driver: gcsfuse.run.googleapis.com volumeAttributes: bucketName: YOUR_PROJECT_ID-gemma2-2b-codelab - name: in-memory-1 emptyDir: medium: Memory sizeLimit: 10Gi nodeSelector: run.googleapis.com/accelerator: nvidia-l4
عدِّل service.yaml لاستبدال PROJECT_ID برقم تعريف مشروعك:
sed -i "s/YOUR_PROJECT_ID/${PROJECT_ID}/g" service.yaml
يمكنك نشر التطبيق على Cloud Run باستخدام الأمر التالي.
gcloud beta run services replace service.yaml
اختبار خدمة تشغيل السحابة الإلكترونية
افتح الآن عنوان URL للخدمة في متصفّح الويب.
بعد اكتمال تحميل واجهة المستخدم، اختَر Gemma 2 2B ضمن اختيار نموذج.
اطرح سؤالاً الآن على جيما، على سبيل المثال: "لماذا لون السماء أزرق؟"
8. تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
ننصحك بمراجعة المستندات حول وظائف Cloud Run.
النقاط التي تناولناها
- كيفية إنشاء خدمة حاوية متعددة في Cloud Run
- كيفية نشر Ollama كتدبير جانبي يعرض نموذج Gemma 2 2B
- كيفية نشر واجهة Open WebUI كحاوية إدخال واجهة أمامية
9. تَنظيم
لتجنُّب تحصيل رسوم بدون قصد (على سبيل المثال، إذا تمّ استدعاء خدمات Cloud Run بدون قصد لعدد مرات يتجاوز المساحة المخصّصة لك شهريًا لاستدعاء Cloud Run في الفئة المجانية)، يمكنك إما حذف Cloud Run أو حذف المشروع الذي أنشأته في الخطوة 2.
لحذف دالة Cloud Run، انتقِل إلى Cloud Run Console على https://console.cloud.google.com/run واحذف خدمة ollama-sidecar-codelab
.
إذا اخترت حذف المشروع بأكمله، يمكنك الانتقال إلى https://console.cloud.google.com/cloud-resource-manager واختيار المشروع الذي أنشأته في الخطوة 2 ثم اختيار "حذف". إذا حذفت المشروع، ستحتاج إلى تغيير المشاريع في حزمة تطوير البرامج (SDK) للسحابة الإلكترونية. يمكنك عرض قائمة بجميع المشاريع المتاحة من خلال تشغيل gcloud projects list
.