Używanie funkcji JavaScript Firebase do uruchamiania modelu w Google Cloud Platform

Feb 02 2023
Załóżmy, że masz projekt Firebase powiązany ze swoją aplikacją i utworzyłeś model uczenia maszynowego w ramach tego samego projektu w Google Cloud Platform (GCP). Teraz możesz się zastanawiać, jak przeprowadzić wnioskowanie przy użyciu modelu w GCP, poprzez uwierzytelnianie Firebase w aplikacji.

Załóżmy, że masz projekt Firebase powiązany ze swoją aplikacją i utworzyłeś model uczenia maszynowego w ramach tego samego projektu w Google Cloud Platform (GCP). Teraz możesz się zastanawiać, jak przeprowadzić wnioskowanie przy użyciu modelu w GCP, poprzez uwierzytelnianie Firebase w aplikacji. Aby to zrobić, możesz użyć funkcji JavaScript Firebase .

(To zostało przetestowane z Ubuntu 18.04 i Node.js 14)

0. Wymagania wstępne

  • Projekt Firebase powiązany z Twoją aplikacją (np. — identyfikator projektu = {PROJECT_ID})
  • Model systemów uczących się w ramach tego samego projektu {PROJECT_ID} w GCP
  • Node.js 14 i npm (możesz je zainstalować za pomocą nvm )

Otwórz terminal i wykonaj następujące czynności.

npm install -g firebase-tools

Załóżmy, że lokalny katalog projektu to {LOCAL_DIR} na pulpicie. Utwórz go i przejdź do niego.

mkdir -p ~/Desktop/{LOCAL_DIR}
cd ~/Desktop/{LOCAL_DIR}

Ostrożnie uruchamiaj poniższe polecenia, odnosząc się do poniższych uwag jako przewodnika, jak poruszać się po generowanych przez nie monitach.

firebase login

firebase init firestore

firebase init functions

  • Zostaniesz poproszony o zalogowanie się przez przeglądarkę i uwierzytelnienie.
  • Po wyświetleniu monitu wybierz właściwy projekt Firebase ( {PROJECT_ID} ).
  • Wybierz JavaScript (js) jako język.
  • „ elsint ” nie jest do tego potrzebny.
  • Wybierz tak , aby zainstalować zależności.

Będziemy potrzebować pakietu googleapis .

cd ~/Desktop/{LOCAL_DIR}/functions
npm i googleapis

Otwórz „ {LOCAL_DIR}/functions/package.json” za pomocą preferowanego IDE (np. — VS Code) i edytuj sekcję „ silniki ” w następujący sposób.

"engines": {
    "node": "14"
  },

Otwórz „ {LOCAL_DIR}/functions/index.js” z preferowanym IDE.

Zdefiniujmy następujące pojęcia. Powinieneś je zastąpić swoimi danymi.

  • Nazwa modelu = {MODEL_NAME}
  • Region modelu = {MODEL_REGION} — (Upewnij się, że region modelu jest taki sam jak region funkcji; szczególnie w celu uzyskania lepszej wydajności. Default = us-central1 )
  • Nazwa funkcji Firebase = {ML_FUNCTION}
  • Wejście do funkcji = wejście do modelu = słownik typu {“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;

}
);

Przejdź do terminala i wykonaj następujące czynności.

cd ~/Desktop/{LOCAL_DIR}
firebase deploy --only functions

PS-

Aby dowiedzieć się, jak wywołać funkcję Firebase z aplikacji (iOS, Android itp.), możesz zapoznać się z tą oficjalną dokumentacją Google.

Bibliografia

  • 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