Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Özel modelleri dağıtma ve yönetme

Firebase konsolunu veya Firebase Admin Python ve Node.js SDK'larını kullanarak özel modelleri dağıtabilir ve yönetebilirsiniz. Bir modeli dağıtmak ve zaman zaman güncellemek istiyorsanız, Firebase konsolunu kullanmak genellikle en basit yöntemdir. Yönetici SDK'sı, derleme boru hatları ile entegre olurken, Colab veya Jupyter dizüstü bilgisayarlarıyla ve diğer iş akışlarıyla çalışırken yardımcı olabilir.

Firebase konsolunda modelleri dağıtma ve yönetme

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

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

Modelinizi dağıttıktan sonra Özel sayfasında bulabilirsiniz. Buradan, modeli yeni bir dosyayla güncelleme, modeli indirme ve modeli projenizden silme gibi görevleri tamamlayabilirsiniz.

Firebase Yönetici SDK'sı ile modelleri dağıtın ve yönetin

Bu bölümde Yönetici SDK'sı ile ortak model dağıtım ve yönetim görevlerini nasıl tamamlayabileceğiniz gösterilmektedir. Ek yardım için Python veya Node.js için SDK referansına bakın.

Kullanılan SDK örnekleri için Python hızlı başlatma örneğine ve Node.js hızlı başlatma örneğine bakın .

Sen başlamadan önce

  1. Henüz bir Firebase projeniz yoksa, Firebase konsolunda yeni bir proje oluşturun. Ardından, projenizi açın ve aşağıdakileri yapın:

    1. Ayarlar sayfasında bir servis hesabı oluşturun ve servis hesabı anahtar dosyasını indirin. Projenize yönetici erişimi verdiği için bu dosyayı güvende tutun.

    2. Depolama sayfasında, Bulut Depolama'yı etkinleştirin. Grup adınızı not edin.

      Model dosyalarını Firebase projenize eklerken geçici olarak saklamak için bir Depolama grubuna ihtiyacınız vardır. Blaze planındaysanız, bu amaç için varsayılandan farklı bir kova oluşturabilir ve kullanabilirsiniz.

    3. Firebase ML sayfasında, henüz Firebase ML'yi etkinleştirmediyseniz Başlayın'ı tıklayın.

  2. Google API'ları konsolunda Firebase projenizi açın ve Firebase ML API'sını etkinleştirin.

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

    SDK'yı başlattığınızda, hizmet hesabı kimlik bilgilerinizi ve modellerinizi saklamak için kullanmak istediğiniz Depolama grubunu belirtin:

    piton

     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

Bir TensorFlow Lite modelini dağıtmak için, projenize yükleyin ve ardından yayınlayın:

piton

 # 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)
 

Modeliniz TensorFlow kaydedilmiş model biçimindeyse, TensorFlow Lite'a dönüştürebilir ve tek bir adımda Cloud Storage grubunuza yükleyebilirsiniz:

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

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

Bir Keras modeliniz varsa, bunu TensorFlow Lite'a dönüştürebilir ve tek bir adımda yükleyebilirsiniz. Bir HDF5 dosyasına kaydedilmiş bir Keras modeli kullanabilirsiniz:

 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.)
# ...
 

Veya doğrudan bir Keras modelini eğitim betiğinizden dönüştürebilir ve yükleyebilirsiniz:

 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.)
# ...
 

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);
 

Projenizin modellerini listeleyin

Projenizin modellerini listeleyebilir, isteğe bağlı olarak sonuçları filtreleyebilirsiniz:

piton

 # 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 filtreleyebilirsiniz:

Alan Örnekler
display_name display_name = example_model
display_name != example_model

experimental_ önekine sahip tüm görünen adlar:

display_name : experimental_*

Yalnızca önek eşleşmesinin 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 ( ( , ) ) ile birleştirin.

Modelleri güncelleyin

Projenize bir model ekledikten sonra görünen adını, etiketlerini ve tflite model dosyasını güncelleyebilirsiniz:

piton

 # 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.
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 veya silme yöntemlerine geçirin. Bir modeli yayından kaldırdığınızda, projenizde kalır, ancak uygulamalarınızın indirilmesi mümkün değildir. Bir modeli sildiğinizde, projenizden tamamen kaldırılır. (Standart bir iş akışında bir modelin yayından kaldırılması beklenmez, ancak yanlışlıkla yayınladığınız ve henüz hiçbir yerde kullanılmayan yeni bir modeli hemen yayından kaldırmak için veya kullanıcıların "kötü" olarak indirmesinin daha kötü olduğu durumlarda kullanabilirsiniz. model bulunamadı hataları almak için daha model.)

Model nesnesine hala bir başvurunuz yoksa, muhtemelen projenizin modellerini bir filtreyle listeleyerek model kimliğini almanız gerekir. Örneğin, "face_detector" etiketli tüm modelleri silmek için:

piton

 # 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);