Özel modelleri dağıtma ve yönetme

Özel modelleri ve AutoML tarafından eğitilmiş modelleri aşağıdaki iki yöntemden birini kullanarak dağıtıp yönetebilirsiniz: Firebase konsolunu kullanarak veya Firebase Yönetici Konsolu Python ve Node.js SDK'larını kullanabilirsiniz. Şu durumda: yalnızca bir modeli dağıtmak ve zaman zaman güncellemek istiyorsanız, bunu Firebase konsolunu kullanın. Admin SDK, ardışık düzenler, Colab veya Jupyter not defterleriyle çalışma ve diğer iş akışlarıyla çalışmanızı sağlar.

Modelleri Firebase konsolunda dağıtma ve yönetme

TensorFlow Lite modelleri

Firebase konsolunu kullanarak TensorFlow Lite modelini dağıtmak için:

  1. Firebase ML Özel model sayfasını açın: Firebase konsolu.
  2. Özel model ekle (veya Başka bir model ekle) seçeneğini tıklayın.
  3. Firebase'inizde modelinizi tanımlamak için kullanılacak bir ad belirtin açın, ardından TensorFlow Lite model dosyasını yükleyin (genellikle .tflite veya .lite).

Modelinizi dağıttıktan sonra Özel sayfasında bulabilirsiniz. Bu noktadan sonra modeli yeni bir dosyayla güncelleme, dosyanın verilerini indirme ve modeli projenizden silin.

Firebase Admin SDK ile modelleri dağıtma ve yönetme

Bu bölümde, yaygın model dağıtımını ve yönetimini nasıl tamamlayabileceğiniz gösterilmektedir çeşitli görevleri otomatik olarak gerçekleştirmenize yardımcı olur. Python için SDK referansını inceleyin veya Node.js'yi ziyaret edin.

Kullanımdaki SDK örnekleri için bkz. Python hızlı başlangıç örneği ve Node.js hızlı başlangıç örneği.

Başlamadan önce

  1. Firebase projeniz yoksa Firebase konsolu. Ardından projenizi açın ve şunları yapın:

    1. Ayarlar sayfasında bir hizmet hesabı oluşturun ve hizmet hesabı anahtar dosyasını indirin. Bu dosyayı güvende tutun, çünkü projeniz için yönetici erişimi izni verir.

    2. Storage sayfasında Cloud Storage'ı etkinleştirin. Not: paket adı.

      Model dosyalarını geçici olarak depolamak için Cloud Storage paketine ihtiyacınız var Firebase projenize eklerken. Blaze'in ortasındaysanız bu paket için varsayılandan farklı bir paket oluşturup amaçlanıyor.

    3. Firebase ML sayfasında henüz yapmadıysanız Get started (Başlayın) seçeneğini tıklayın. Firebase makine öğrenimi.

  2. Google API'leri konsolunda Firebase'inizi açın. projesine gidip Firebase ML API'yi etkinleştirin.

  3. Yönetici SDK'sını yükleyip başlatın.

    SDK'yı başlattığınızda hizmet hesabı kimlik bilgilerinizi belirtin ve modellerinizi depolamak için kullanmak istediğiniz Cloud Storage paketini seçin:

    Python

    import firebase_admin
    from firebase_admin import ml
    from firebase_admin import credentials
    
    firebase_admin.initialize_app(
      credentials.Certificate('/path/to/your/service_account_key.json'),
      options={
          'storageBucket': 'your-storage-bucket',
      })
    

    Node.js

    const admin = require('firebase-admin');
    const serviceAccount = require('/path/to/your/service_account_key.json');
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      storageBucket: 'your-storage-bucket',
    });
    const ml = admin.machineLearning();
    

Modelleri dağıtma

TensorFlow Lite dosyaları

TensorFlow Lite modelini bir model dosyasından dağıtmak için bunu projenize yükleyin ve sonra yayınlayın:

Python

# First, import and initialize the SDK as shown above.

# Load a tflite file and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_tflite_model_file('example.tflite')

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
ml.publish_model(new_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  // Upload the tflite file to Cloud Storage
  const storageBucket = admin.storage().bucket('your-storage-bucket');
  const files = await storageBucket.upload('./example.tflite');

  // Create the model object and add the model to your Firebase project.
  const bucket = files[0].metadata.bucket;
  const name = files[0].metadata.name;
  const gcsUri = `gs:/⁠/${bucket}/${name}`;
  const model = await ml.createModel({
    displayName: 'example_model',  // This is the name you use from your app to load the model.
    tags: ['examples'],  // Optional tags for easier management.
    tfliteModel: { gcsTfliteUri: gcsUri },
  });

  // Publish the model.
  await ml.publishModel(model.modelId);

  process.exit();
})().catch(console.error);

TensorFlow ve Keras modelleri

Python SDK ile bir modeli TensorFlow kayıtlı model biçiminden dönüştürebilirsiniz TensorFlow Lite'a ekleyip tek bir pakette Cloud Storage paketinize yükleyebilirsiniz. adımına geçelim. Daha sonra, TensorFlow Lite dosyasını dağıttığınız şekilde dağıtın.

Python

# First, import and initialize the SDK as shown above.

# Convert the model to TensorFlow Lite and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_saved_model('./model_directory')

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
ml.publish_model(new_model.model_id)

Ayrıca bir Keras modeliniz varsa bunu TensorFlow Lite'a dönüştürüp adım adım anlatabilirsiniz. HDF5 dosyasına kaydedilmiş bir Keras modelini kullanabilirsiniz:

Python

import tensorflow as tf

# Load a Keras model, convert it to TensorFlow Lite, and upload it to Cloud Storage
model = tf.keras.models.load_model('your_model.h5')
source = ml.TFLiteGCSModelSource.from_keras_model(model)

# Create the model object, add the model to your project, and publish it. (See
# above.)
# ...

Ya da doğrudan eğitim komut dosyanızdan bir Keras modelini dönüştürüp yükleyebilirsiniz:

Python

import tensorflow as tf

# Create a simple Keras model.
x = [-1, 0, 1, 2, 3, 4]
y = [-3, -1, 1, 3, 5, 7]

model = tf.keras.models.Sequential(
    [tf.keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(x, y, epochs=3)

# Convert the model to TensorFlow Lite and upload it to Cloud Storage
source = ml.TFLiteGCSModelSource.from_keras_model(model)

# Create the model object, add the model to your project, and publish it. (See
# above.)
# ...

AutoML TensorFlow Lite modelleri

Bir Edge modelini AutoML Cloud API ile eğittiyseniz veya Google Cloud konsolunun kullanıcı arayüzünü kullanarak, modeli kullanarak Firebase'e Yönetici SDK'si.

Modelin kaynak tanımlayıcısını belirtmeniz gerekir. Bu tanımlayıcı, aşağıdaki örnekteki gibi görünür:

projects/PROJECT_NUMBER/locations/STORAGE_LOCATION/models/MODEL_ID
PROJECT_NUMBER Aşağıdakini içeren Cloud Storage paketinin proje numarası: model. Bu, Firebase projeniz veya başka bir Google Cloud olabilir belirler. Bu değeri, Firebase konsolunuza veya Google Cloud Console kontrol paneline gidin.
STORAGE_LOCATION Aşağıdakini içeren Cloud Storage paketinin kaynak konumu: bahsedeceğim. Bu değer her zaman us-central1 olur.
MODEL_ID AutoML Cloud API'den aldığınız model kimliği.

Python

# First, import and initialize the SDK as shown above.

# Get a reference to the AutoML model
source = ml.TFLiteAutoMlSource('projects/{}/locations/{}/models/{}'.format(
    # See above for information on these values.
    project_number,
    storage_location,
    model_id
))

# Create the model object
tflite_format = ml.TFLiteFormat(model_source=source)
model = ml.Model(
    display_name="example_model",  # This is the name you will use from your app to load the model.
    tags=["examples"],             # Optional tags for easier management.
    model_format=tflite_format)

# Add the model to your Firebase project and publish it
new_model = ml.create_model(model)
new_model.wait_for_unlocked()
ml.publish_model(new_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  // Get a reference to the AutoML model. See above for information on these
  // values.
  const automlModel = `projects/${projectNumber}/locations/${storageLocation}/models/${modelId}`;

  // Create the model object and add the model to your Firebase project.
  const model = await ml.createModel({
    displayName: 'example_model',  // This is the name you use from your app to load the model.
    tags: ['examples'],  // Optional tags for easier management.
    tfliteModel: { automlModel: automlModel },
  });

  // Wait for the model to be ready.
  await model.waitForUnlocked();

  // Publish the model.
  await ml.publishModel(model.modelId);

  process.exit();
})().catch(console.error);

Projenizin modellerini listeleme

İsteğe bağlı olarak sonuçları filtreleyerek projenizin modellerini listeleyebilirsiniz:

Python

# First, import and initialize the SDK as shown above.

face_detectors = ml.list_models(list_filter="tags: face_detector").iterate_all()
print("Face detection models:")
for model in face_detectors:
  print('{} (ID: {})'.format(model.display_name, model.model_id))

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  let listOptions = {filter: 'tags: face_detector'}
  let models;
  let pageToken = null;
  do {
    if (pageToken) listOptions.pageToken = pageToken;
    ({models, pageToken} = await ml.listModels(listOptions));
    for (const model of models) {
      console.log(`${model.displayName} (ID: ${model.modelId})`);
    }
  } while (pageToken != null);

  process.exit();
})().catch(console.error);

Aşağıdaki alanlara göre filtreleme yapabilirsiniz:

Alan Örnekler
display_name display_name = example_model
display_name != example_model

experimental_ ön ekini içeren tüm görünen adlar:

display_name : experimental_*

Yalnızca önek eşleştirmenin desteklendiğini unutmayın.

tags tags: face_detector
tags: face_detector AND tags: experimental
state.published state.published = true
state.published = false

Filtreleri AND, OR ve NOT operatörleri ve parantezleri ((, )) tıklayın.

Modelleri güncelleme

Projenize bir model ekledikten sonra bu modelin görünen adını güncelleyebilir, etiketleri ve tflite model dosyası:

Python

# First, import and initialize the SDK as shown above.

model = ...   # Model object from create_model(), get_model(), or list_models()

# Update the model with a new tflite model. (You could also update with a
# `TFLiteAutoMlSource`)
source = ml.TFLiteGCSModelSource.from_tflite_model_file('example_v2.tflite')
model.model_format = ml.TFLiteFormat(model_source=source)

# Update the model's display name.
model.display_name = "example_model"

# Update the model's tags.
model.tags = ["examples", "new_models"]

# Add a new tag.
model.tags += "experimental"

# After you change the fields you want to update, save the model changes to
# Firebase and publish it.
updated_model = ml.update_model(model)
ml.publish_model(updated_model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  const model = ... // Model object from createModel(), getModel(), or listModels()

  // Upload a new tflite file to Cloud Storage.
  const files = await storageBucket.upload('./example_v2.tflite');
  const bucket = files[0].metadata.bucket;
  const name = files[0].metadata.name;

  // Update the model. Any fields you omit will be unchanged.
  await ml.updateModel(model.modelId, {
    displayName: 'example_model',  // Update the model's display name.
    tags: model.tags.concat(['new']),  // Add a tag.
    tfliteModel: {gcsTfliteUri: `gs:/⁠/${bucket}/${name}`},
  });

  process.exit();
})().catch(console.error);

Modelleri yayından kaldırma veya silme

Bir modeli yayından kaldırmak veya silmek için model kimliğini yayından kaldırma ya da silme aracına iletin. yöntemlerine göz atın. Bir modeli yayından kaldırdığınızda projenizde kalır ancak uygulamalarınızın indirmesi için hazır. Bir modeli sildiğinizde, projenizden kaldırılır. (Standart sürümlerde, bir modelin yayından kaldırılması beklenemez. ama bunu kullanarak yeni modeli hemen yayından kaldırmak için de veya henüz hiçbir yerde kullanılmıyorsa veya geniş çapta kullanıcılar için "kötü" bir modeli bulmaktan farklı bir model hataları.)

Model nesnesine hâlâ bir referansınız yoksa muhtemelen projenizin modellerini bir filtreyle listeleyerek model kimliğini alın. Örneğin, "face_detector" etiketli tüm modelleri sil:

Python

# First, import and initialize the SDK as shown above.

face_detectors = ml.list_models(list_filter="tags: 'face_detector'").iterate_all()
for model in face_detectors:
  ml.delete_model(model.model_id)

Node.js

// First, import and initialize the SDK as shown above.

(async () => {
  let listOptions = {filter: 'tags: face_detector'}
  let models;
  let pageToken = null;
  do {
    if (pageToken) listOptions.pageToken = pageToken;
    ({models, pageToken} = await ml.listModels(listOptions));
    for (const model of models) {
      await ml.deleteModel(model.modelId);
    }
  } while (pageToken != null);

  process.exit();
})().catch(console.error);