কাস্টম মডেল স্থাপন এবং পরিচালনা করুন

আপনি Firebase কনসোল অথবা ফায়ারবেস অ্যাডমিন পাইথন এবং নোড.জেএস এসডিকে ব্যবহার করে কাস্টম মডেল ডেপ্লয় এবং ম্যানেজ করতে পারেন। আপনি যদি শুধু একটি মডেল ডেপ্লয় করতে এবং মাঝে মাঝে আপডেট করতে চান, তবে সাধারণত Firebase কনসোল ব্যবহার করাই সবচেয়ে সহজ। বিল্ড পাইপলাইনের সাথে ইন্টিগ্রেট করা, কোলাব বা জুপিটার নোটবুক নিয়ে কাজ করা এবং অন্যান্য ওয়ার্কফ্লোর ক্ষেত্রে অ্যাডমিন এসডিকে সহায়ক হতে পারে।

Firebase কনসোলে মডেলগুলি স্থাপন এবং পরিচালনা করুন

TensorFlow Lite মডেলগুলি

Firebase কনসোল ব্যবহার করে একটি টেনসরফ্লো লাইট মডেল স্থাপন করতে:

  1. Firebase কনসোলে Firebase ML কাস্টম মডেল পেজটি খুলুন।
  2. কাস্টম মডেল যোগ করুন (বা অন্য মডেল যোগ করুন )-এ ক্লিক করুন।
  3. আপনার Firebase প্রোজেক্টে মডেলটিকে শনাক্ত করার জন্য একটি নাম নির্দিষ্ট করুন, তারপর TensorFlow Lite মডেল ফাইলটি আপলোড করুন (সাধারণত যার শেষে .tflite বা .lite থাকে)।

আপনার মডেলটি ডিপ্লয় করার পর, আপনি এটি কাস্টম পেজে খুঁজে পাবেন। সেখান থেকে, আপনি নতুন ফাইল দিয়ে মডেলটি আপডেট করা, মডেলটি ডাউনলোড করা এবং আপনার প্রজেক্ট থেকে মডেলটি মুছে ফেলার মতো কাজগুলো সম্পন্ন করতে পারবেন।

Firebase Admin SDK ব্যবহার করে মডেলগুলো স্থাপন ও পরিচালনা করুন।

এই বিভাগে দেখানো হয়েছে, কীভাবে আপনি অ্যাডমিন এসডিকে ব্যবহার করে সাধারণ মডেল ডেপ্লয়মেন্ট ও ম্যানেজমেন্টের কাজগুলো সম্পন্ন করতে পারেন। অতিরিক্ত সাহায্যের জন্য পাইথন বা নোড.জেএস- এর এসডিকে রেফারেন্স দেখুন।

এসডিকে ব্যবহারের উদাহরণের জন্য পাইথন কুইকস্টার্ট স্যাম্পল এবং নোড.জেএস কুইকস্টার্ট স্যাম্পল দেখুন।

শুরু করার আগে

  1. আপনার যদি আগে থেকে কোনো Firebase প্রজেক্ট না থাকে, তাহলে Firebase কনসোলে একটি নতুন প্রজেক্ট তৈরি করুন। এরপর, আপনার প্রজেক্টটি খুলুন এবং নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

    1. সেটিংস পেজে, একটি সার্ভিস অ্যাকাউন্ট তৈরি করুন এবং সার্ভিস অ্যাকাউন্ট কী ফাইলটি ডাউনলোড করুন। এই ফাইলটি নিরাপদে রাখুন, কারণ এটি আপনার প্রোজেক্টে অ্যাডমিনিস্ট্রেটর অ্যাক্সেস প্রদান করে।

    2. স্টোরেজ পেজে Cloud Storage চালু করুন। আপনার বাকেট নামটি লিখে রাখুন।

      আপনার ফায়ারবেস প্রজেক্টে মডেল ফাইল যুক্ত করার সময় সেগুলোকে সাময়িকভাবে সংরক্ষণ করার জন্য একটি Cloud Storage বাকেট প্রয়োজন। আপনি যদি ব্লেজ প্ল্যানে থাকেন, তবে এই উদ্দেশ্যে ডিফল্ট বাকেটটি ছাড়াও অন্য একটি বাকেট তৈরি ও ব্যবহার করতে পারেন।

    3. Firebase ML পেজে, আপনি যদি এখনও Firebase ML সক্রিয় না করে থাকেন, তাহলে 'Get started'- এ ক্লিক করুন।

  2. গুগল এপিআই কনসোলে আপনার ফায়ারবেস প্রজেক্টটি খুলুন এবং ফায়ারবেস এমএল এপিআই সক্রিয় করুন।

  3. অ্যাডমিন এসডিকে ইনস্টল এবং চালু করুন

    যখন আপনি SDK চালু করবেন, তখন আপনার সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল এবং আপনার মডেলগুলো সংরক্ষণের জন্য যে Cloud Storage বাকেটটি ব্যবহার করতে চান, তা নির্দিষ্ট করুন:

    পাইথন

    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',
      })
    

    নোড.জেএস

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

মডেল স্থাপন করুন

TensorFlow Lite ফাইল

একটি মডেল ফাইল থেকে TensorFlow Lite মডেল ডেপ্লয় করতে, সেটিকে আপনার প্রোজেক্টে আপলোড করুন এবং তারপর পাবলিশ করুন:

পাইথন

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

নোড.জেএস

// 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 এবং Keras মডেল

পাইথন এসডিকে ব্যবহার করে, আপনি একটি মডেলকে টেনসরফ্লো সেভড মডেল ফরম্যাট থেকে টেনসরফ্লো লাইট-এ রূপান্তর করতে পারেন এবং এক ধাপেই আপনার Cloud Storage বাকেটে আপলোড করতে পারেন। তারপর, একটি টেনসরফ্লো লাইট ফাইল যেভাবে ডেপ্লয় করেন, ঠিক সেভাবেই এটি ডেপ্লয় করুন।

পাইথন

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

আপনার যদি একটি Keras মডেল থাকে, তবে আপনি সেটিকে TensorFlow Lite-এ রূপান্তর করে এক ধাপেই আপলোড করতে পারেন। আপনি HDF5 ফাইলে সংরক্ষিত একটি Keras মডেল ব্যবহার করতে পারেন:

পাইথন

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

অথবা, আপনি আপনার ট্রেনিং স্ক্রিপ্ট থেকে সরাসরি একটি কেরাস মডেল রূপান্তর করে আপলোড করতে পারেন:

পাইথন

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

আপনার প্রকল্পের মডেলদের তালিকা করুন

আপনি আপনার প্রকল্পের মডেলগুলির তালিকা তৈরি করতে পারেন এবং চাইলে ফলাফলগুলি ফিল্টারও করতে পারেন:

পাইথন

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

নোড.জেএস

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

আপনি নিম্নলিখিত ক্ষেত্রগুলি দ্বারা ফিল্টার করতে পারেন:

মাঠ উদাহরণ
display_name display_name = example_model
display_name != example_model

experimental_ উপসর্গযুক্ত সমস্ত প্রদর্শনের নাম:

display_name : experimental_*

উল্লেখ্য যে, শুধুমাত্র প্রিফিক্স ম্যাচিং সমর্থিত।

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

AND , OR , ও NOT অপারেটর এবং প্রথম বন্ধনী ( ( , ) ) ব্যবহার করে ফিল্টার একত্রিত করুন।

মডেল আপডেট করুন

আপনার প্রজেক্টে একটি মডেল যুক্ত করার পরে, আপনি এর ডিসপ্লে নেম, ট্যাগ এবং tflite মডেল ফাইল আপডেট করতে পারেন:

পাইথন

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

নোড.জেএস

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

অপ্রকাশিত বা মুছে ফেলুন মডেলগুলি

একটি মডেলকে অপ্রকাশ বা মুছে ফেলতে, unpublish বা delete মেথডগুলিতে মডেল আইডিটি পাস করুন। আপনি যখন একটি মডেলকে অপ্রকাশ করেন, তখন এটি আপনার প্রোজেক্টে থেকে যায়, কিন্তু আপনার অ্যাপগুলি এটি ডাউনলোড করার জন্য উপলব্ধ থাকে না। আপনি যখন একটি মডেল মুছে ফেলেন, তখন এটি আপনার প্রোজেক্ট থেকে সম্পূর্ণরূপে মুছে যায়। (একটি সাধারণ কার্যপ্রবাহে মডেল অপ্রকাশ করা প্রত্যাশিত নয়, কিন্তু আপনি এটি ব্যবহার করতে পারেন ভুলবশত প্রকাশ করা একটি নতুন মডেলকে অবিলম্বে অপ্রকাশ করার জন্য, যা এখনও কোথাও ব্যবহৃত হচ্ছে না, অথবা এমন ক্ষেত্রে যেখানে ব্যবহারকারীদের জন্য 'মডেল-নট-ফাউন্ড' ত্রুটি পাওয়ার চেয়ে একটি 'ত্রুটিপূর্ণ' মডেল ডাউনলোড করা বেশি খারাপ।)

আপনার কাছে যদি Model অবজেক্টটির কোনো রেফারেন্স না থাকে, তাহলে সম্ভবত আপনাকে একটি ফিল্টার ব্যবহার করে আপনার প্রোজেক্টের মডেলগুলো তালিকাভুক্ত করে মডেল আইডিটি পেতে হবে। উদাহরণস্বরূপ, "face_detector" ট্যাগযুক্ত সমস্ত মডেল মুছে ফেলতে:

পাইথন

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

নোড.জেএস

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