Este guia descreve como implementar os modelos abertos Gemma 3 no Cloud Run através de um contentor pré-criado e fornece orientações sobre a utilização do serviço do Cloud Run implementado com o SDK de IA gen da Google.
Antes de começar
Se usou o Google AI Studio para implementar no Cloud Run, avance para a secção Interaja em segurança com o SDK de IA gen da Google.
Se não usou o Google AI Studio, siga estes passos antes de usar o Cloud Run para criar um novo serviço.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
- Configure o ambiente de programação do Cloud Run no seu Google Cloud projeto.
- Instale e inicialize a CLI gcloud.
- Certifique-se de que tem as seguintes funções do IAM concedidas à sua conta:
- Administrador do Cloud Run (
roles/run.admin
) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer
)
- Administrador do Cloud Run (
-
Na Google Cloud consola, aceda à página IAM.
Aceda ao IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email da Conta Google usado para implementar o serviço do Cloud Run.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
- PROJECT_NUMBER com o número do seu projeto. Google Cloud
- PROJECT_ID com o seu Google Cloud ID do projeto.
- PRINCIPAL com a conta à qual está a adicionar a associação. Normalmente, este é o endereço de email da Conta Google que é usado para implementar o serviço do Cloud Run.
- ROLE com a função que está a adicionar à conta do implementador.
- Peça uma quota
Total Nvidia L4 GPU allocation, per project per region
na API Cloud Run Admin na página Quotas e limites do sistema. - Reveja a página de preços do Cloud Run. Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.
SERVICE_NAME
com um nome exclusivo para o serviço do Cloud Run.GEMMA_PARAMETER
com o modelo Gemma que usou:- Gemma 3 1B (
gemma-3-1b-it
):gemma3-1b
- Gemma 3 4B (
gemma-3-4b-it
):gemma3-4b
- Gemma 3 12B (
gemma-3-12b-it
):gemma3-12b
- Gemma 3 27B (
gemma-3-27b-it
):gemma3-27b
Opcionalmente, substitua o URL da imagem completo por uma imagem do Docker que criou a partir do repositório do GitHub do Gemma no Cloud Run.
- Gemma 3 1B (
REGION
com a Google Cloud região onde o Cloud Run vai ser implementado, comoeurope-west1
. Se precisar de modificar a região, consulte a secção Configuração da GPU para saber mais sobre as regiões suportadas para implementações com GPU.Inicie o proxy e, quando lhe for pedido para instalar o componente
cloud-run-proxy
Y
, escolha:gcloud run services proxy SERVICE_NAME --port=9090
Envie-lhe um pedido num separador do terminal separado, deixando o proxy em execução. Tenha em atenção que o proxy é executado em
localhost:9090
:curl http://localhost:9090/api/generate -d '{ "model": "gemma3:4b", "prompt": "Why is the sky blue?" }'
Este comando deve fornecer uma saída de streaming semelhante a esta:
{"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.641492408Z","response":"That","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.687529153Z","response":"'","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.753284927Z","response":"s","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.812957381Z","response":" a","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.889102649Z","response":" fantastic","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.925748116Z","response":",","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.958391572Z","response":" decept","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.971035028Z","response":"ively","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.989678484Z","response":" tricky","done":false} {"model":"gemma3:4b","created_at":"2025-03-10T03:02:18.999321940Z","response":" question","done":false} ...
Para gerar conteúdo, use
/v1beta/{model=models/*}:generateContent
: gera uma resposta do modelo com base numa entradaGenerateContentRequest
.curl "<cloud_run_url>/v1beta/models/<model>:generateContent" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $(gcloud auth print-identity-token)" \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "Write a story about a magic backpack. You are the narrator of an interactive text adventure game."}] }] }'
Para conteúdo gerado por stream, use
/v1beta/{model=models/*}:streamGenerateContent
: gera uma resposta transmitida a partir do modelo, dado umGenerateContentRequest
de entrada.curl "<cloud_run_url>/v1beta/models/<model>:streamGenerateContent" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $(gcloud auth print-identity-token)" \ -X POST \ -d '{ "contents": [{ "parts":[{"text": "Write a story about a magic backpack. You are the narrator of an interactive text adventure game."}] }] }'
OLLAMA_NUM_PARALLEL
determina quantos espaços de pedidos estão disponíveis por cada modelo para processar pedidos de inferência em simultâneo.--concurrency
determina quantos pedidos o Cloud Run envia a uma instância do Ollama em simultâneo.- Configurar GPU
- Práticas recomendadas: inferência de IA no Cloud Run com GPUs
- Execute modelos Gemma 3 com várias frameworks de tempo de execução de IA
Saiba como conceder as funções
Consola
gcloud
Para conceder as funções de IAM necessárias à sua conta no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substituir:
Implemente um modelo Gemma com um contentor pré-criado
O Cloud Run fornece um contentor pré-criado para publicar modelos abertos Gemma no Cloud Run.
Para implementar modelos Gemma no Cloud Run, use o seguinte comando da CLI gcloud com as definições recomendadas:
gcloud run deploy SERVICE_NAME \ --image us-docker.pkg.dev/cloudrun/container/gemma/GEMMA_PARAMETER \ --concurrency 4 \ --cpu 8 \ --set-env-vars OLLAMA_NUM_PARALLEL=4 \ --gpu 1 \ --gpu-type nvidia-l4 \ --max-instances 1 \ --memory 32Gi \ --no-allow-unauthenticated \ --no-cpu-throttling \ --timeout=600 \ --region REGION
Substituir:
As outras definições são as seguintes:
Opção | Descrição |
---|---|
--concurrency |
O número máximo de pedidos que podem ser processados em simultâneo por uma determinada instância, como |
--cpu |
A quantidade de CPU alocada para o seu serviço, como |
--set-env-vars |
As variáveis de ambiente definidas para o seu serviço. Por exemplo, |
--gpu |
O valor da GPU para o seu serviço, como |
--gpu-type |
O tipo de GPU a usar para o seu serviço, como |
--max-instances |
O número máximo de instâncias de contentores para o seu serviço, como |
--memory |
A quantidade de memória alocada para o seu serviço, como |
--no-invoker-iam-check |
Desative as verificações de IAM do invocador. Consulte o artigo Interaja de forma segura com o SDK de IA gen da Google para ver recomendações sobre como proteger melhor a sua app. |
--no-cpu-throttling |
Esta definição desativa a limitação da CPU quando o contentor não está a processar ativamente pedidos. |
--timeout |
O tempo dentro do qual uma resposta tem de ser devolvida, como |
Se precisar de modificar as predefinições ou adicionar definições mais personalizadas ao seu serviço do Cloud Run, consulte o artigo Configurar serviços.
Após a conclusão do serviço implementado, é apresentada uma mensagem de êxito juntamente com o URL do ponto final do Cloud Run que termina com run.app
.
Teste o serviço Gemma implementado com o curl
Agora que implementou o serviço Gemma, pode enviar-lhe pedidos. No entanto, se enviar um pedido diretamente, o Cloud Run responde com HTTP 401 Unauthorized
. Isto é intencional, porque uma API de inferência de MDG destina-se a ser chamada por outros serviços, como uma aplicação de front-end. Para mais informações sobre a autenticação de serviço para serviço no Cloud Run, consulte o artigo Autenticação de serviço para serviço.
Para enviar pedidos ao serviço Gemma, adicione um cabeçalho com um token OIDC válido aos pedidos, por exemplo, através do proxy do programador do Cloud Run:
Interaja de forma segura com o SDK de IA gen da Google
Depois de implementar o seu serviço do Cloud Run, pode usar o ponto final do Cloud Run com o SDK de IA gen da Google.
Antes de usar o SDK de IA gen da Google, certifique-se de que os pedidos recebidos transmitem o token de identidade adequado. Para saber mais sobre a utilização da autenticação IAM e do Cloud Run, consulte o artigo Autenticação de serviço a serviço.
Os exemplos seguintes mostram como usar o SDK de IA gen da Google com a autenticação IAM.
JavaScript ou TypeScript
Se estiver a usar o SDK de IA gen da Google para Javascript e TypeScript, o código pode ter o seguinte aspeto:
import { GoogleGenAI, setDefaultBaseUrls } from "@google/genai";
import { GoogleAuth} from 'google-auth-library'
const cloudrunurl = 'https://CLOUD_RUN_SERVICE_URL';
const targetAudience = url;
const auth = new GoogleAuth();
async function main() {
const client = await auth.getIdTokenClient(targetAudience);
const headers = await client.getRequestHeaders(targetAudience);
const idToken = headers['Authorization']
const ai = new GoogleGenAI({
apiKey:"placeholder",
httpOptions: { baseUrl: url, headers: {'Authorization': idToken} },
});
const response = await ai.models.generateContent({
model: "gemma-3-1b-it",
contents: "I want a pony",
});
console.log(response.text);
}
main();
curl
Se estiver a usar o curl, execute os seguintes comandos para aceder aos endpoints do SDK de IA gen da Google:
Defina a simultaneidade para um desempenho ideal
Esta secção fornece contexto sobre as definições de concorrência recomendadas. Para uma latência de pedidos ideal, certifique-se de que a definição --concurrency
é igual à variável de ambiente OLLAMA_NUM_PARALLEL
do Ollama.
Se --concurrency
exceder OLLAMA_NUM_PARALLEL
, o Cloud Run pode enviar mais pedidos a um modelo no Ollama do que tem espaços de pedidos disponíveis.
Isto leva a uma fila de pedidos no Ollama, o que aumenta a latência dos pedidos em fila. Também leva a um dimensionamento automático menos reativo, uma vez que os pedidos
em fila não acionam o Cloud Run para aumentar a escala e iniciar novas instâncias.
O Ollama também suporta a publicação de vários modelos a partir de uma GPU. Para evitar completamente
a colocação em fila de pedidos na instância do Ollama, deve continuar a definir
--concurrency
de modo a corresponder a OLLAMA_NUM_PARALLEL
.
É importante ter em atenção que o aumento de OLLAMA_NUM_PARALLEL
também faz com que os pedidos paralelos demorem mais tempo.
Otimize a utilização
Para uma utilização da GPU ideal, aumente o valor de --concurrency
, mantendo-o dentro do dobro do valor de OLLAMA_NUM_PARALLEL
. Embora isto leve a uma fila de pedidos no Ollama, pode ajudar a melhorar a utilização: as instâncias do Ollama podem processar imediatamente pedidos da respetiva fila, e as filas ajudam a absorver picos de tráfego.
Limpar
Elimine os seguintes Google Cloud recursos criados: