Uso de una función Firebase de JavaScript para ejecutar un modelo en Google Cloud Platform
Supongamos que tiene un proyecto de Firebase asociado con su aplicación y ha creado un modelo de aprendizaje automático en el mismo proyecto en Google Cloud Platform (GCP). Ahora quizás se pregunte cómo realizar inferencias usando el modelo en GCP, a través de la autenticación de Firebase en la aplicación. Puede usar una función de Firebase de JavaScript para hacerlo.
(Esto fue probado con Ubuntu 18.04 y Node.js 14)
0. Requisitos previos
- Un proyecto de Firebase asociado con su aplicación (p. ej., id del proyecto = {PROJECT_ID})
- Un modelo de aprendizaje automático en el mismo proyecto {PROJECT_ID} en GCP
- Node.js 14 y npm (puede instalarlos usando nvm )
Abra una terminal y ejecute lo siguiente.
npm install -g firebase-tools
Supongamos que el directorio del proyecto local es {LOCAL_DIR} en el escritorio. Créelo y navegue hasta él.
mkdir -p ~/Desktop/{LOCAL_DIR}
cd ~/Desktop/{LOCAL_DIR}
Ejecute los siguientes comandos uno por uno con cuidado, mientras consulta las notas debajo de ellos como una guía sobre cómo navegar a través de las indicaciones generadas por ellos.
firebase login
firebase init firestore
firebase init functions
- Se le pedirá que inicie sesión a través del navegador y se autentique.
- Elija el proyecto de Firebase correcto ( {PROJECT_ID} ) cuando se le solicite.
- Elija JavaScript (js) como idioma.
- “ elsint ” no es necesario para esto.
- Elija sí para instalar dependencias.
Necesitaremos el paquete googleapis .
cd ~/Desktop/{LOCAL_DIR}/functions
npm i googleapis
Abra " {LOCAL_DIR}/functions/package.json" con su IDE preferido (por ejemplo, VS Code) y edite la sección " motores " de la siguiente manera.
"engines": {
"node": "14"
},
Abra “ {LOCAL_DIR}/functions/index.js” con su IDE preferido.
Definamos los siguientes términos. Debe reemplazarlos con sus datos.
- Nombre del modelo = {MODEL_NAME}
- Región del modelo = {MODEL_REGION} — (Asegúrese de que la región del modelo sea la misma que la región de la función, especialmente para un mejor rendimiento. Predeterminado = us-central1 )
- Nombre de la función de Firebase = {ML_FUNCTION}
- Entrada a la función = entrada al modelo = un diccionario como {“key_str”: “val_str”, “key_int”: 2, “key_arr”: [1.25, 0.76, 3.84]}
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const googleapis_pack = require("googleapis");
const ml = googleapis_pack.google.ml({version:"v1", rootUrl:"https://{MODEL_REGION}-ml.googleapis.com"});
exports.{ML_FUNCTION} = functions.https.onCall(async(data, context)=>
{
const key_str = data.key_str;
const key_int = data.key_int;
const key_arr = data.key_arr;
const instance = {"key_str":key_str, "key_int":key_int, "key_arr":key_arr};
const model = "{MODEL_NAME}";
const { credential } = await googleapis_pack.google.auth.getApplicationDefault();
const modelName = "projects/{PROJECT_ID}/models/" + model;
const results = await ml.projects.predict({
auth: credential,
name: modelName,
requestBody: instance
});
return results.data;
}
);
Ve a la terminal y ejecuta lo siguiente.
cd ~/Desktop/{LOCAL_DIR}
firebase deploy --only functions
PD:
Para saber cómo llamar a una función de Firebase desde su aplicación (iOS, Android, etc.), puede consultar esta documentación oficial de Google.
Referencias
- https://firebase.google.com/docs/functions/get-started
- https://github.com/nvm-sh/nvm/blob/master/README.md
- https://firebase.google.com/docs/functions/callable

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































