1. Pengantar
Ringkasan
Cloud Run baru-baru ini menambahkan dukungan GPU. Fitur ini tersedia sebagai pratinjau publik dalam daftar tunggu. Jika Anda tertarik untuk mencoba fitur ini, isi formulir ini untuk bergabung ke daftar tunggu. Cloud Run adalah platform container di Google Cloud yang memudahkan Anda menjalankan kode dalam container, tanpa mengharuskan Anda mengelola cluster.
Saat ini, GPU yang kami sediakan adalah GPU Nvidia L4 dengan vRAM 24 GB. Ada satu GPU per instance Cloud Run, dan penskalaan otomatis Cloud Run masih berlaku. Hal ini mencakup penskalaan keluar hingga 5 instance (dengan peningkatan kuota yang tersedia), serta penskalaan ke nol instance jika tidak ada permintaan.
Transformers.js dirancang agar secara fungsional setara dengan library python transformers Hugging Face, yang berarti Anda dapat menjalankan model terlatih yang sama menggunakan API yang sangat mirip. Anda dapat mempelajari lebih lanjut di situs Transformers.js.
Dalam codelab ini, Anda akan membuat dan men-deploy aplikasi yang menggunakan Transformers.js dan GPU ke Cloud Run.
Yang akan Anda pelajari
- Cara menjalankan aplikasi menggunakan Transformers.js di Cloud Run menggunakan GPU
2. Mengaktifkan API dan Menetapkan Variabel Lingkungan
Sebelum Anda dapat mulai menggunakan codelab ini, ada beberapa API yang perlu diaktifkan. Codelab ini memerlukan penggunaan API berikut. Anda dapat mengaktifkan API tersebut dengan menjalankan perintah berikut:
gcloud services enable run.googleapis.com \ storage.googleapis.com \ cloudbuild.googleapis.com \
Kemudian, Anda dapat menetapkan variabel lingkungan yang akan digunakan di seluruh codelab ini.
PROJECT_ID=<YOUR_PROJECT_ID> AR_REPO_NAME=repo REGION=us-central1
3. Membuat aplikasi Transformers.js
Pertama, buat direktori untuk kode sumber dan {i>cd<i} ke direktori tersebut.
mkdir transformers-js-codelab && cd $_
Buat file package.json
.
{ "name": "huggingface", "version": "1.0.0", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "", "dependencies": { "@huggingface/transformers": "^3.0.0-alpha.8", "@xenova/transformers": "^2.17.2", "express": "^4.17.1" } }
Buat file bernama index.js
import { pipeline } from "@xenova/transformers";
import express from 'express';
// make sure the text-generation pipeline is created first
// before anyone can access the routes
const generator = await pipeline('text-generation', 'Xenova/llama2.c-stories15M', {
device: 'cuda',
dtype: 'fp32',
});
// now create the app and routes
const app = express();
app.get('/', async (req, res) => {
const text = 'A long time ago in a galaxy far far away,';
const output = await generator(text, { max_new_tokens: 50 });
res.send(output);
});
const port = parseInt(process.env.PORT) || 8080;
app.listen(port, () => {
console.log(`transformers-js app: listening on port ${port}`);
});
Buat Dockerfile
. Dockerfile akan menginstal driver NVIDIA tambahan yang diperlukan untuk Transformers.js
FROM node:20 WORKDIR /usr/src/app RUN apt-get update && \ apt-get install software-properties-common -y && \ wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb && \ dpkg -i cuda-keyring_1.1-1_all.deb && \ add-apt-repository contrib && \ apt-get update && \ apt-get -y install cuda-toolkit-12-6 && \ apt-get -y install cudnn-cuda-12 EXPOSE 8080 COPY package.json . RUN npm install COPY index.js . ENTRYPOINT ["node", "index.js"]
4. Mem-build dan men-deploy layanan Cloud Run
Buat repositori di Artifact Registry.
gcloud artifacts repositories create $AR_REPO_NAME \ --repository-format docker \ --location us-central1
Kirim kode Anda ke Cloud Build.
IMAGE=us-central1-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/gpu-transformers-js gcloud builds submit --tag $IMAGE
Selanjutnya, deploy ke Cloud Run
gcloud beta run deploy transformers-js-codelab \ --image=$IMAGE \ --cpu 8 --memory 32Gi \ --gpu=1 --no-cpu-throttling --gpu-type nvidia-l4 \ --allow-unauthenticated \ --region us-central1 \ --project=$PROJECT_ID \ --max-instances 1
5. Menguji layanan
Anda dapat menguji layanan dengan menjalankan perintah berikut:
SERVICE_URL=$(gcloud run services describe transformers-js-codelab --region $REGION --format 'value(status.url)') curl $SERVICE_URL
lalu Anda akan melihat sesuatu yang mirip dengan berikut ini:
[{"generated_text":"A long time ago in a galaxy far far away, there was a beautiful garden. Every day, the little girl would go to the garden and look at the flowers. She loved the garden so much that she would come back every day to visit it.\nOne day, the little girl was walking through"}]
6. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Sebaiknya tinjau dokumentasi tentang GPU Cloud Run.
Yang telah kita bahas
- Cara menjalankan aplikasi menggunakan Transformers.js di Cloud Run menggunakan GPU
7. Pembersihan
Untuk menghindari tagihan yang tidak disengaja, (misalnya, jika layanan Cloud Run secara tidak sengaja dipanggil lebih dari alokasi pemanggilan Cloud Run bulanan Anda di paket gratis), Anda dapat menghapus Cloud Run atau menghapus project yang Anda buat di Langkah 2.
Untuk menghapus layanan Cloud Run, buka Cloud Console Cloud Run di https://console.cloud.google.com/run dan hapus layanan transformers-js-codelab
.
Jika memilih untuk menghapus seluruh project, Anda dapat membuka https://console.cloud.google.com/cloud-resource-manager, memilih project yang Anda buat di Langkah 2, lalu memilih Hapus. Jika menghapus project, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list
.