El 21 de febrero de 2024, Google lanzó oficialmente Gemma, su primera familia de modelos abiertos, con las versiones 2B y 7B disponibles. Puede usar instancias GPU y el modo inactivo de Function Compute para desplegar un servicio de modelo Gemma de forma rápida y rentable.
Requisitos previos
Function Compute está activado. Para obtener más información, consulte Quick start.
Se crearon un namespace y un repositorio de imágenes. Para obtener más información, consulte Create a namespace y Create an image repository.
Procedimiento
Al desplegar el servicio del modelo Gemma, se le cobran los recursos que utiliza, como los recursos de GPU, vCPU y memoria, el uso de disco, el tráfico saliente a internet y las invocaciones de funciones. Para obtener más información, consulte Billing overview.
Crear una aplicación
-
Siga estos pasos para obtener el nombre de dominio y la dirección del repositorio de Container Registry (ACR).
Inicie sesión en la consola de Container Registry, seleccione la región donde se encuentra su función y haga clic en Manage en la tarjeta de la instancia Enterprise Edition de destino.
-
En el panel de navegación izquierdo, haga clic en Access Control y seleccione la pestaña Internet. Si el interruptor de la entrada de acceso está desactivado, actívelo. Para permitir que cualquier computadora en internet inicie sesión en su repositorio, elimine todas las listas de permitidos de IP públicas. De lo contrario, configure una lista de permitidos de IP públicas según sus necesidades. Una vez completada la configuración, guarde el Domain Name de la instancia de ACR.

En el panel de navegación izquierdo, haga clic en Container Registry Repository y luego haga clic en el Repository Name del repositorio de destino para ir a la página de detalles del repositorio.
-
Guarde el Public Endpoint del repositorio.

-
Descargue los pesos del modelo Gemma. Puede descargar el modelo desde Hugging Face o ModelScope. Este tema usa el modelo Gemma-2b-it de ModelScope como ejemplo. Para obtener más información, consulte Gemma-2b-it.
ImportanteSi usa git para descargar el modelo, primero debe instalar la extensión Git Large File Storage (LFS). Ejecute
git lfs installpara inicializar Git LFS y luego ejecutegit clonepara descargar el modelo. De lo contrario, el modelo descargado podría quedar incompleto debido a su gran tamaño, lo que impediría que el servicio de Gemma funcione correctamente. -
Cree un Dockerfile y un archivo de código del servicio del modelo llamado
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 obtener más información sobre todos los encabezados HTTP compatibles con Function Compute, consulte Common request headers.
Una vez completado este paso, el directorio de código tiene la siguiente estructura:
. |-- 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 -
-
Ejecute los siguientes comandos para compilar y enviar la imagen de contenedor. Reemplace
{REPO_ENDPOINT}por el endpoint público del repositorio de imágenes de destino que obtuvo en el paso 1, y reemplace{REGISTRY}por el Domain Name de la instancia de 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_NAMEImportanteSi compila la imagen en una Mac con Apple silicon, reemplace el comando
docker buildde la línea 3 por el siguiente comando para compilar una imagen compatible con Function Compute:docker build --platform linux/amd64 -f Dockerfile -t $IMAGE_NAME . -
Cree una función.
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, haga clic en Function.
En la barra de navegación superior, seleccione una región. En la página Function, haga clic en Create Function.
-
En la página Create Function, seleccione Container Image, configure los siguientes parámetros y haga clic en Create.
A continuación se describen los parámetros clave. Utilice los valores predeterminados para el resto de los parámetros.
Parámetro
Descripción
Image Configurations
Image Selection Mode
Seleccione Use ARC Images.
Container Image
Haga clic en Select a Container Registry image y, en el panel Select Container Image, seleccione la imagen que envió en Step 3.
Listening Port
Establezca este parámetro en 9000.
Advanced Settings
GPU Acceleration
Seleccione Enable GPU.
GPU Type
Seleccione NVIDIA T4.
Specifications
GPU Memory Specifications: 16 GB.
vCPU Capacity: 2 vCPUs.
Memory Capacity: 16 GB.
-
Cuando el estado de la función cambie a OK, habilite el modo inactivo para la función.

En la página de detalles de la función, haga clic en la pestaña Configuration. En el panel de navegación izquierdo, haga clic en Provision Instance y luego haga clic en Create Provisioned Instance Policy.
-
En el panel Create Provisioned Instance Policy, establezca Version or Alias en LATEST, Provisioned Instances en 1 y Idle Mode en Enable. Luego, haga clic en OK.

Cuando Current Provisioned Instances cambie a 1 y aparezca el mensaje Idle Mode Enabled, la instancia aprovisionada para la función acelerada por GPU se habrá iniciado correctamente.

Usar el servicio de Google Gemma
-
En la página de detalles de la función, haga clic en la pestaña Configuration. En el panel de navegación izquierdo, haga clic en Trigger. En la página Triggers, obtenga la URL del disparador.

-
Ejecute el siguiente comando para invocar la función.
curl -X POST -d "who are you" https://func-i****-****.cn-shanghai.fcapp.run/invokeResultado esperado:
<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> -
En la página de detalles de la función, haga clic en la pestaña Instances. Busque la instancia de destino y haga clic en Instance Metrics en la columna Actions. En la pestaña Instance Metrics, consulte las métricas.
Observe que el uso de memoria de la GPU de la instancia cae a cero cuando no hay invocaciones de funciones. Cuando llega una nueva solicitud de invocación, Function Compute restaura y asigna rápidamente los recursos de memoria de GPU necesarios. Esto ayuda a reducir costos.
NotaPara consultar las métricas de la instancia, primero debe habilitar la función de registros para la instancia. Para obtener más información, consulte Configure logging.
Una vez completada la invocación de la función, Function Compute coloca automáticamente la instancia GPU en modo inactivo. No se requiere ninguna acción manual. Cuando llega la siguiente solicitud de invocación, Function Compute reactiva la instancia y la pone en estado activo para atender la solicitud.
Eliminar recursos
Si ya no necesita usar esta función, elimine sus recursos para evitar cargos adicionales. Si planea usar esta aplicación a largo plazo, omita esta sección.
Regrese a la página de descripción general de la consola de Function Compute. En el panel de navegación izquierdo, haga clic en Function.
Busque la función que desea eliminar y elija en la columna Actions. En el cuadro de diálogo que aparece, seleccione I confirm that I want to delete the above resources and this function. I understand that these resources cannot be retrieved after deletion. y haga clic en Delete Function.
Facturación
Prueba gratuita: si es un usuario nuevo de Function Compute, puede solicitar una cuota de prueba para probar la aplicación proporcionada en este tema. Para obtener más información, consulte Trial quota. La cuota de prueba no cubre los cargos por uso de disco. El uso de disco que supere los 512 MB se cobra bajo el modelo pay-as-you-go.
Para obtener más información sobre la facturación de Function Compute, consulte Billing overview.
Referencias
Para obtener más información sobre Gemma, la familia de modelos abiertos de Google, consulte gemma-open-models.
Para obtener detalles sobre el modo inactivo y ejemplos de facturación de instancias GPU, consulte Billing overview.