Использование функции JavaScript Firebase для запуска модели в Google Cloud Platform

Feb 02 2023
Допустим, у вас есть проект Firebase, связанный с вашим приложением, и вы создали модель машинного обучения в рамках того же проекта в Google Cloud Platform (GCP). Теперь вам может быть интересно, как выполнить вывод, используя модель в GCP, через аутентификацию Firebase в приложении.

Допустим, у вас есть проект Firebase, связанный с вашим приложением, и вы создали модель машинного обучения в рамках того же проекта в Google Cloud Platform (GCP). Теперь вам может быть интересно, как выполнить вывод, используя модель в GCP, через аутентификацию Firebase в приложении. Вы можете использовать функцию JavaScript Firebase , чтобы сделать это.

(Это было протестировано с Ubuntu 18.04 и Node.js 14)

0. Предпосылки

  • Проект Firebase, связанный с вашим приложением (например, идентификатор проекта = {PROJECT_ID}).
  • Модель машинного обучения в рамках того же проекта {PROJECT_ID} в GCP.
  • Node.js 14 и npm (их можно установить с помощью nvm )

Откройте терминал и выполните следующее.

npm install -g firebase-tools

Предположим, что локальный каталог проекта — {LOCAL_DIR} на рабочем столе. Создайте его и перейдите к нему.

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

Внимательно выполняйте следующие команды одну за другой, обращаясь к примечаниям под ними как к руководству по навигации по генерируемым ими подсказкам.

firebase login

firebase init firestore

firebase init functions

  • Вам будет предложено войти через браузер и пройти аутентификацию.
  • При появлении запроса выберите правильный проект Firebase ( {PROJECT_ID} ).
  • Выберите JavaScript (js) в качестве языка.
  • elsint для этого не нужен .
  • Выберите да для установки зависимостей.

Нам понадобится пакет googleapis .

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

Откройте « {LOCAL_DIR}/functions/package.json» в предпочитаемой вами среде IDE (например, — VS Code) и отредактируйте раздел « engine » следующим образом.

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

Откройте « {LOCAL_DIR}/functions/index.js» в предпочитаемой вами среде IDE.

Определим следующие термины. Вы должны заменить их своими данными.

  • Название модели = {MODEL_NAME}
  • Регион модели = {MODEL_REGION} — (убедитесь, что регион модели совпадает с регионом функции, особенно для повышения производительности. По умолчанию = us-central1 )
  • Имя функции Firebase = {ML_FUNCTION}
  • Ввод в функцию = ввод в модель = словарь типа {"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;

}
);

Перейдите в терминал и выполните следующее.

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

PS —

Чтобы узнать, как вызвать функцию Firebase из вашего приложения (iOS, Android и т. д.), вы можете обратиться к официальной документации Google.

Рекомендации

  • 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