Em 21 de fevereiro de 2024, o Google lançou oficialmente o Gemma, sua primeira família de modelos abertos, nas versões 2B e 7B. Use instâncias GPU e o modo ocioso do Function Compute para implantar um serviço de modelo Gemma de maneira rápida e econômica.
Pré-requisitos
Function Compute ativado. Para mais informações, consulte Início rápido.
Namespace e repositório de imagens criados. Para mais informações, consulte Criar um namespace e Criar um repositório de imagens.
Procedimento
A implantação do serviço de modelo Gemma gera cobranças pelos recursos consumidos, como GPU, vCPU, memória, uso de disco, tráfego de saída para a Internet e invocações de função. Para mais informações, consulte Visão geral do faturamento.
Crie uma aplicação
-
Obtenha o nome de domínio e o endereço do seu repositório no Container Registry (ACR) seguindo estas etapas:
Faça login no console do Container Registry, selecione a região da função e clique em Manage no cartão da instância Enterprise Edition desejada.
-
No painel de navegação à esquerda, clique em Access Control e selecione a aba Internet. Ative a chave da entrada de acesso se estiver desligada. Para permitir que qualquer máquina na internet faça login no repositório, exclua todas as listas de permissões de IP público. Caso contrário, configure uma lista de permissões de IP público conforme necessário. Após concluir a configuração, salve o Domain Name da instância ACR.

No painel de navegação à esquerda, clique em Container Registry Repository e clique no Repository Name do repositório desejado para acessar a página de detalhes.
-
Salve o Public Endpoint do repositório.

-
Baixe os pesos do modelo Gemma pelo Hugging Face ou pelo ModelScope. Este tópico usa o modelo Gemma-2b-it do ModelScope como exemplo. Para mais informações, consulte Gemma-2b-it.
ImportanteAo usar o Git para baixar o modelo, instale primeiro a extensão Git Large File Storage (LFS), execute
git lfs installpara inicializar o Git LFS e, em seguida, executegit clonepara baixar o modelo. Caso contrário, o download pode ficar incompleto devido ao tamanho do arquivo, impedindo o funcionamento correto do serviço Gemma. -
Crie um Dockerfile e um arquivo de código do serviço de modelo chamado
app.py.-
Dockerfile
FROM registry.cn-shanghai.aliyuncs.com/modelscope-repo/modelscope:fc-deploy-common-v17 WORKDIR /usr/src/app COPY . . RUN pip install -U transformers RUN pip install -U accelerate CMD [ "python3", "-u", "/usr/src/app/app.py" ] EXPOSE 9000 -
app.py
from flask import Flask, request from transformers import AutoTokenizer, AutoModelForCausalLM model_dir = '/usr/src/app/gemma-2b-it' app = Flask(__name__) tokenizer = AutoTokenizer.from_pretrained(model_dir) model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto") @app.route('/invoke', methods=['POST']) def invoke(): request_id = request.headers.get("x-fc-request-id", "") print("FC Invoke Start RequestId: " + request_id) text = request.get_data().decode("utf-8") print(text) input_ids = tokenizer(text, return_tensors="pt").to("cuda") outputs = model.generate(**input_ids, max_new_tokens=1000) response = tokenizer.decode(outputs[0]) print("FC Invoke End RequestId: " + request_id) return str(response) + "\n" if __name__ == '__main__': app.run(debug=False, host='0.0.0.0', port=9000)Para obter mais informações sobre todos os cabeçalhos HTTP compatíveis com o Function Compute, consulte Cabeçalhos de solicitação comuns.
Após esta etapa, o diretório de código terá a seguinte estrutura:
. |-- app.py |-- Dockerfile `-- gemma-2b-it |-- config.json |-- generation_config.json |-- model-00001-of-00002.safetensors |-- model-00002-of-00002.safetensors |-- model.safetensors.index.json |-- README.md |-- special_tokens_map.json |-- tokenizer_config.json |-- tokenizer.json `-- tokenizer.model 1 directory, 12 files -
-
Execute os comandos a seguir para criar e enviar a imagem de contêiner. Substitua
{REPO_ENDPOINT}pelo endpoint público do repositório de imagens obtido na Etapa 1 e substitua{REGISTRY}pelo Domain Name da instância ACR.IMAGE_NAME={REPO_ENDPOINT}:gemma-2b-it docker login --username=mu****@test.aliyunid.com {REGISTRY} docker build -f Dockerfile -t $IMAGE_NAME . docker push $IMAGE_NAMEImportanteSe estiver criando a imagem em um Mac com Apple silicon, substitua o comando
docker buildna linha 3 pelo comando abaixo para gerar uma imagem compatível com o Function Compute:docker build --platform linux/amd64 -f Dockerfile -t $IMAGE_NAME . -
Crie uma função.
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Function.
Na barra de navegação superior, selecione uma região. Na página Function, clique em Create Function.
-
Na página Create Function, selecione Container Image, configure os parâmetros a seguir e clique em Create.
A tabela a seguir descreve os principais parâmetros. Utilize os valores padrão para os demais.
Parâmetro
Descrição
Image Configurations
Image Selection Mode
Selecione Use ARC Images.
Container Image
Clique em Select a Container Registry image abaixo e, no painel Select Container Image, selecione a imagem enviada na Etapa 3.
Listening Port
Defina este parâmetro como 9000.
Advanced Settings
GPU Acceleration
Selecione Enable GPU.
GPU Type
Selecione NVIDIA T4.
Specifications
GPU Memory Specifications: 16 GB.
vCPU Capacity: 2 vCPUs.
Memory Capacity: 16 GB.
-
Quando o status da função mudar para OK, ative o modo ocioso.

Na página de detalhes da função, clique na aba Configuration. No painel de navegação à esquerda, clique em Provision Instance e, em seguida, clique em Create Provisioned Instance Policy.
-
No painel Create Provisioned Instance Policy, defina Version or Alias como LATEST, defina Provisioned Instances como 1, defina Idle Mode como Enable e clique em OK.

Quando Current Provisioned Instances mudar para 1 e a mensagem Idle Mode Enabled aparecer, a instância provisionada para a função acelerada por GPU terá sido iniciada com sucesso.

Usar o serviço Google Gemma
-
Na página de detalhes da função, clique na aba Configuration. No painel de navegação à esquerda, clique em Trigger. Na página Triggers, obtenha a URL do gatilho.

-
Execute o comando a seguir para invocar a função.
curl -X POST -d "who are you" https://func-i****-****.cn-shanghai.fcapp.run/invokeSaída esperada:
<bos>who are you? I am a large language model, trained by Google. I am a conversational AI that can understand and generate human language, and I am able to communicate and provide information in a comprehensive and informative way. What can I do for you today?<eos> -
Na página de detalhes da função, clique na aba Instances. Localize a instância desejada e clique em Instance Metrics na coluna Actions. Na aba Instance Metrics, visualize as métricas.
O uso de memória GPU da instância cai para zero quando não há invocação de função. Ao receber uma nova solicitação de invocação, o Function Compute restaura e aloca rapidamente os recursos de memória GPU necessários, o que ajuda a reduzir custos.
NotaPara visualizar as métricas da instância, ative primeiro o recurso de log. Para mais informações, consulte Configurar logs.
Após a conclusão de uma invocação de função, o Function Compute coloca automaticamente a instância GPU em modo ocioso, sem necessidade de ação manual. Quando a próxima solicitação de invocação chegar, o Function Compute despertará a instância e a colocará no estado ativo para atender à solicitação.
Exclua recursos
Se não precisar mais desta função, exclua seus recursos para evitar cobranças adicionais. Se planeja usar esta aplicação a longo prazo, ignore esta seção.
Retorne à página de visão geral do console do Function Compute. No painel de navegação à esquerda, clique em Function.
Localize a função que deseja excluir e escolha na coluna Actions. Na caixa de diálogo exibida, selecione I confirm that I want to delete the above resources and this function. I understand that these resources cannot be retrieved after deletion. e clique em Delete Function.
Faturamento
Teste gratuito: Novos usuários do Function Compute podem resgatar uma cota de teste para experimentar a aplicação fornecida neste tópico. Para mais informações, consulte Cota de teste. A cota de teste não cobre taxas de uso de disco. O uso de disco que exceder 512 MB é cobrado no modelo pagamento conforme o uso.
Para mais informações sobre o faturamento do Function Compute, consulte Visão geral do faturamento.
Referências
Para mais informações sobre o Gemma, a família de modelos abertos do Google, consulte gemma-open-models.
Para detalhes sobre o modo ocioso e exemplos de faturamento para instâncias GPU, consulte Visão geral do faturamento.