Utiliser une fonction JavaScript Firebase pour exécuter un modèle dans Google Cloud Platform
Supposons que vous ayez un projet Firebase associé à votre application et que vous ayez créé un modèle de machine learning sous le même projet dans Google Cloud Platform (GCP). Maintenant, vous vous demandez peut-être comment effectuer une inférence à l'aide du modèle dans GCP, via l'authentification Firebase dans l'application. Vous pouvez utiliser une fonction JavaScript Firebase pour le faire.
(Cela a été testé avec Ubuntu 18.04 et Node.js 14)
0. Prérequis
- Un projet Firebase associé à votre application (par exemple : ID du projet = {PROJECT_ID})
- Un modèle de machine learning dans le même projet {PROJECT_ID} sur GCP
- Node.js 14 et npm (vous pouvez les installer en utilisant nvm )
Ouvrez un terminal et exécutez ce qui suit.
npm install -g firebase-tools
Supposons que le répertoire local du projet soit {LOCAL_DIR} sur Desktop. Créez-le et accédez-y.
mkdir -p ~/Desktop/{LOCAL_DIR}
cd ~/Desktop/{LOCAL_DIR}
Exécutez les commandes suivantes une par une avec précaution, tout en vous référant aux notes ci-dessous comme guide sur la façon de naviguer dans les invites générées par elles.
firebase login
firebase init firestore
firebase init functions
- Il vous sera demandé de vous connecter via le navigateur et de vous authentifier.
- Choisissez le bon projet Firebase ( {PROJECT_ID} ) lorsque vous y êtes invité.
- Choisissez JavaScript (js) comme langage.
- « elsint » n'est pas nécessaire pour cela.
- Choisissez oui pour installer les dépendances.
Nous aurons besoin du package googleapis .
cd ~/Desktop/{LOCAL_DIR}/functions
npm i googleapis
Ouvrez « {LOCAL_DIR}/functions/package.json » avec votre IDE préféré (par exemple, VS Code) et modifiez la section « moteurs » comme suit.
"engines": {
"node": "14"
},
Ouvrez « {LOCAL_DIR}/functions/index.js » avec votre IDE préféré.
Définissons les termes suivants. Vous devez les remplacer par vos coordonnées.
- Nom du modèle = {MODEL_NAME}
- Model region = {MODEL_REGION} — (Assurez-vous que la région du modèle est la même que la région de la fonction ; en particulier pour de meilleures performances. Par défaut = us-central1 )
- Nom de la fonction Firebase = {ML_FUNCTION}
- Entrée de la fonction = entrée du modèle = un dictionnaire comme {"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;
}
);
Allez au terminal et exécutez ce qui suit.
cd ~/Desktop/{LOCAL_DIR}
firebase deploy --only functions
PS —
Pour savoir comment appeler une fonction Firebase depuis votre application (iOS, Android etc), vous pouvez vous référer à cette documentation officielle de Google.
Les références
- 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'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































