Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Triển khai và quản lý các mô hình tùy chỉnh

Bạn có thể triển khai và quản lý các mô hình tùy chỉnh và các mô hình được đào tạo bởi AutoML bằng cách sử dụng bảng điều khiển Firebase hoặc SDK Python và Node.js dành cho quản trị viên Firebase. Nếu bạn chỉ muốn triển khai một mô hình và thỉnh thoảng cập nhật nó, cách đơn giản nhất là sử dụng bảng điều khiển Firebase. SDK quản trị có thể hữu ích khi tích hợp với xây dựng đường ống, làm việc với sổ ghi chép Colab hoặc Jupyter và các quy trình công việc khác.

Triển khai và quản lý các mô hình trong bảng điều khiển Firebase

Mô hình TensorFlow Lite

Để triển khai mô hình TensorFlow Lite bằng bảng điều khiển Firebase:

  1. Mở trang Mô hình tùy chỉnh Firebase ML trong bảng điều khiển Firebase.
  2. Nhấp vào Thêm mô hình tùy chỉnh (hoặc Thêm mô hình khác ).
  3. Chỉ định tên sẽ được sử dụng để xác định mô hình của bạn trong dự án Firebase, sau đó tải lên tệp mô hình TensorFlow Lite (thường kết thúc bằng .tflite hoặc .lite ).

Sau khi triển khai mô hình của mình, bạn có thể tìm thấy nó trên trang Tùy chỉnh. Từ đó, bạn có thể hoàn thành các tác vụ như cập nhật mô hình bằng tệp mới, tải xuống mô hình và xóa mô hình khỏi dự án của mình.

Các mô hình AutoML TensorFlow Lite

Sau khi đào tạo một mô hình trong bảng điều khiển Firebase, bạn có thể triển khai mô hình bằng cách xuất bản nó .

Bạn có thể tìm thấy các mô hình đã triển khai của mình trên trang AutoML của bảng điều khiển Firebase. Từ đó, bạn có thể xem dữ liệu về độ chính xác và độ chính xác của mô hình hoặc xóa mô hình.

Triển khai và quản lý các mô hình bằng SDK quản trị Firebase

Phần này cho biết cách bạn có thể hoàn thành các tác vụ triển khai và quản lý mô hình chung với SDK quản trị. Xem tham chiếu SDK cho Python hoặc Node.js để được trợ giúp thêm.

Để biết các ví dụ về SDK đang được sử dụng, hãy xem mẫu khởi động nhanh Pythonmẫu bắt đầu nhanh Node.js.

Trước khi bắt đầu

  1. Nếu bạn chưa có dự án Firebase, hãy tạo một dự án mới trong bảng điều khiển Firebase . Sau đó, mở dự án của bạn và làm như sau:

    1. Trên trang Cài đặt , tạo tài khoản dịch vụ và tải xuống tệp khóa tài khoản dịch vụ. Giữ cho tệp này an toàn, vì nó cấp cho quản trị viên quyền truy cập vào dự án của bạn.

    2. Trên trang Bộ nhớ, hãy bật Bộ nhớ đám mây. Ghi lại tên nhóm của bạn.

      Bạn cần một bộ chứa Bộ nhớ để tạm thời lưu trữ các tệp mô hình trong khi thêm chúng vào dự án Firebase của mình. Nếu bạn đang sử dụng gói Blaze, bạn có thể tạo và sử dụng một nhóm khác với mặc định cho mục đích này.

    3. Trên trang Firebase ML, nhấp vào Bắt đầu nếu bạn chưa bật Firebase ML.

  2. Trong bảng điều khiển API Google , hãy mở dự án Firebase của bạn và bật API ML Firebase.

  3. Cài đặt và khởi chạy SDK quản trị .

    Khi bạn khởi chạy SDK, hãy chỉ định thông tin đăng nhập tài khoản dịch vụ của bạn và bộ chứa Bộ nhớ bạn muốn sử dụng để lưu trữ các mô hình của mình:

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

Triển khai mô hình

Tệp TensorFlow Lite

Để triển khai mô hình TensorFlow Lite từ tệp mô hình, hãy tải nó lên dự án của bạn và sau đó xuất bản 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);

Mô hình TensorFlow và Keras

Với Python SDK, bạn có thể chuyển đổi một mô hình từ định dạng mô hình đã lưu TensorFlow sang TensorFlow Lite và tải nó lên nhóm Cloud Storage của bạn chỉ trong một bước. Sau đó, triển khai nó giống như cách bạn triển khai tệp TensorFlow Lite.

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)

Nếu bạn có mô hình Keras, bạn cũng có thể chuyển đổi nó sang TensorFlow Lite và tải nó lên chỉ trong một bước. Bạn có thể sử dụng mô hình Keras được lưu vào tệp HDF5:

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

Hoặc, bạn có thể chuyển đổi và tải lên mô hình Keras ngay từ tập lệnh đào tạo của mình:

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

Các mô hình AutoML TensorFlow Lite

Khi bạn xuất bản một mô hình mà bạn đã đào tạo với AutoML trong bảng điều khiển Firebase, mô hình đó sẽ được triển khai đầy đủ và sẵn sàng tải xuống thiết bị của người dùng.

Nếu bạn đã đào tạo một mô hình Edge với API đám mây AutoML hoặc với giao diện người dùng Bảng điều khiển đám mây, bạn có thể triển khai mô hình đó cho Firebase bằng SDK quản trị viên.

Bạn sẽ cần chỉ định định danh tài nguyên của mô hình, là một chuỗi giống như ví dụ sau:

projects/PROJECT_NUMBER/locations/STORAGE_LOCATION/models/MODEL_ID
PROJECT_NUMBER Số dự án của nhóm Lưu trữ đám mây chứa mô hình. Đây có thể là dự án Firebase của bạn hoặc một dự án Đám mây khác. Bạn có thể tìm thấy giá trị này trên trang Cài đặt của bảng điều khiển Firebase hoặc bảng điều khiển Cloud console.
STORAGE_LOCATION Vị trí tài nguyên của nhóm Lưu trữ đám mây chứa mô hình. Giá trị này luôn là trung tâm của us-central1 .
MODEL_ID ID của mô hình mà bạn nhận được từ API đám mây AutoML.

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

Liệt kê các mô hình dự án của bạn

Bạn có thể liệt kê các mô hình dự án của mình, tùy chọn lọc kết quả:

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

Bạn có thể lọc theo các trường sau:

Cánh đồng Ví dụ
display_name display_name = example_model
display_name != example_model

Tất cả các tên hiển thị có tiền tố experimental_ :

display_name : experimental_*

Lưu ý rằng chỉ hỗ trợ so khớp tiền tố.

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

Kết hợp các bộ lọc với các toán tử AND , ORNOT và dấu ngoặc đơn ( ( , ) ).

Cập nhật mô hình

Sau khi bạn đã thêm một mô hình vào dự án của mình, bạn có thể cập nhật tên hiển thị, thẻ và tệp mô hình tflite nó:

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

Hủy xuất bản hoặc xóa các mô hình

Để hủy xuất bản hoặc xóa một mô hình, hãy chuyển ID mô hình cho các phương pháp hủy xuất bản hoặc xóa. Khi bạn hủy xuất bản một mô hình, mô hình đó vẫn nằm trong dự án của bạn nhưng không có sẵn để tải xuống ứng dụng của bạn. Khi bạn xóa một mô hình, nó sẽ bị xóa hoàn toàn khỏi dự án của bạn. (Việc hủy xuất bản một mô hình không được mong đợi trong quy trình làm việc tiêu chuẩn, nhưng bạn có thể sử dụng nó để hủy xuất bản ngay lập tức một mô hình mới mà bạn đã vô tình xuất bản và chưa được sử dụng ở bất kỳ đâu hoặc trong trường hợp người dùng tải xuống một mô hình "xấu". mô hình hơn là nhận được lỗi không tìm thấy mô hình.)

Nếu bạn vẫn không có tham chiếu đến đối tượng Model, có thể bạn sẽ cần lấy ID mô hình bằng cách liệt kê các mô hình dự án của bạn với một bộ lọc. Ví dụ: để xóa tất cả các mô hình được gắn thẻ "face_detector":

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