1. Giới thiệu
Tổng quan
Gần đây, Cloud Run đã thêm tính năng hỗ trợ GPU. Tính năng này hiện đang ở giai đoạn dùng thử công khai theo danh sách chờ. Nếu bạn muốn dùng thử tính năng này, hãy điền vào biểu mẫu này để tham gia danh sách chờ. Cloud Run là một nền tảng vùng chứa trên Google Cloud giúp bạn dễ dàng chạy mã trong một vùng chứa mà không cần quản lý cụm.
Hiện tại, chúng tôi cung cấp GPU Nvidia L4 với 24 GB vRAM. Mỗi phiên bản Cloud Run có một GPU và tính năng tự động mở rộng của Cloud Run vẫn được áp dụng. Điều này bao gồm việc mở rộng quy mô lên đến 5 phiên bản (có thể tăng hạn mức) cũng như thu hẹp quy mô xuống 0 phiên bản khi không có yêu cầu nào.
Transformers.js được thiết kế để có chức năng tương đương với thư viện python của trình chuyển đổi Hugging Face, nghĩa là bạn có thể chạy cùng một mô hình được huấn luyện trước bằng một API rất giống nhau. Bạn có thể tìm hiểu thêm trên trang web Transformers.js.
Trong lớp học lập trình này, bạn sẽ tạo và triển khai ứng dụng lên Cloud Run sử dụng Transformers.js và GPU.
Kiến thức bạn sẽ học được
- Cách chạy ứng dụng bằng Transformers.js trên Cloud Run bằng GPU
2. Bật API và đặt biến môi trường
Trước khi có thể bắt đầu sử dụng lớp học lập trình này, bạn cần bật một số API. Lớp học lập trình này yêu cầu sử dụng các API sau. Bạn có thể bật các API đó bằng cách chạy lệnh sau:
gcloud services enable run.googleapis.com \ storage.googleapis.com \ cloudbuild.googleapis.com \
Sau đó, bạn có thể thiết lập các biến môi trường sẽ được dùng trong suốt lớp học lập trình này.
PROJECT_ID=<YOUR_PROJECT_ID> AR_REPO_NAME=repo REGION=us-central1
3. Tạo ứng dụng Transformers.js
Trước tiên, hãy tạo một thư mục cho mã nguồn và cd vào thư mục đó.
mkdir transformers-js-codelab && cd $_
Tạo tệp 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" } }
Tạo một tệp có tên là 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}`);
});
Tạo Dockerfile
. Tệp dockerfile sẽ cài đặt các trình điều khiển NVIDIA bổ sung cần thiết cho 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. Tạo và triển khai dịch vụ Cloud Run
Tạo kho lưu trữ trong Artifact Registry.
gcloud artifacts repositories create $AR_REPO_NAME \ --repository-format docker \ --location us-central1
Gửi mã của bạn đến Cloud Build.
IMAGE=us-central1-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/gpu-transformers-js gcloud builds submit --tag $IMAGE
Tiếp theo, hãy triển khai lên 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. Kiểm thử dịch vụ
Bạn có thể kiểm thử dịch vụ này bằng cách chạy lệnh sau:
SERVICE_URL=$(gcloud run services describe transformers-js-codelab --region $REGION --format 'value(status.url)') curl $SERVICE_URL
và bạn sẽ thấy nội dung tương tự như sau:
[{"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. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình!
Bạn nên tham khảo tài liệu về GPU Cloud Run.
Nội dung đã đề cập
- Cách chạy ứng dụng bằng Transformers.js trên Cloud Run bằng GPU
7. Dọn dẹp
Để tránh các khoản phí vô tình (ví dụ: nếu các dịch vụ Cloud Run vô tình bị gọi nhiều lần hơn mức phân bổ lệnh gọi Cloud Run hằng tháng của bạn ở cấp miễn phí), bạn có thể xoá Cloud Run hoặc xoá dự án bạn đã tạo ở Bước 2.
Để xoá dịch vụ Cloud Run, hãy truy cập vào Cloud Console của Cloud Run tại https://console.cloud.google.com/run rồi xoá dịch vụ transformers-js-codelab
.
Nếu chọn xoá toàn bộ dự án, bạn có thể truy cập vào https://console.cloud.google.com/cloud-resource-manager, chọn dự án bạn đã tạo ở Bước 2 rồi chọn Xoá. Nếu xoá dự án, bạn sẽ cần thay đổi các dự án trong SDK trên đám mây. Bạn có thể xem danh sách tất cả dự án hiện có bằng cách chạy gcloud projects list
.