דף זה תורגם על ידי Cloud Translation API.
Switch to English

TFX לנייד

מבוא

מדריך זה מדגים כיצד Tensorflow Extended (TFX) יכול ליצור ולהעריך מודלים של למידת מכונה אשר ייפרסו במכשיר. TFX מספקת כעת תמיכה מקורית ב- TFLite , המאפשרת לבצע הסקה יעילה ביותר במכשירים ניידים.

מדריך זה מנחה אותך בשינויים שניתן לבצע בכל צינור להפקת והערכת מודלים של TFLite. אנו מספקים דוגמה מלאה כאן , המדגימים כיצד TFX יכולה לאמן ולהעריך מודלים של TFLite המאומנים מחוץ למערך MNIST . יתר על כן, אנו מראים כיצד ניתן להשתמש באותה צינור לייצוא סימולטני של ה- SavedModel הסטנדרטי מבוסס Keras, כמו גם את ה- TFLite, ומאפשר למשתמשים להשוות את האיכות של השניים.

אנו מניחים שאתה מכיר את TFX, את הרכיבים שלנו ואת הצינורות שלנו. אם לא, אנא עיין במדריך זה.

צעדים

נדרשים שני שלבים בלבד כדי ליצור ולהעריך מודל TFLite ב- TFX. הצעד הראשון הוא הפעלת הכתיבה מחדש של TFLite בהקשר של TFX Trainer כדי להמיר את מודל ה- TensorFlow המאומן למודל TFLite. השלב השני הוא קביעת תצורה של המעריך להערכת מודלים של TFLite. כעת אנו דנים בתורו.

הפעלת מתכתב ה- TFLite בתוך המאמן.

מאמן ה- TFX מצפה שמוגדר run_fn מוגדר על ידי המשתמש בקובץ מודול. run_fn זה מגדיר את המודל לאימון, מאמן אותו למספר האיטרציות שצוין ומייצא את המודל המאומן.

בשאר חלקים אלה אנו מספקים קטעי קוד המציגים את השינויים הנדרשים להפעלת הכתיבה מחדש של TFLite וייצוא מודל TFLite. כל הקוד הזה ממוקם ב- run_fn של מודול MNIST TFLite .

כפי שמוצג בקוד שלמטה, עלינו ליצור תחילה חתימה שלוקחת Tensor עבור כל תכונה. שים לב שזו סטייה מרוב הדגמים הקיימים ב- TFX, שלוקחים tf סדרתי. דוגמאות לתמונות כקלט.

 signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(
              model, tf_transform_output).get_concrete_function(
                  tf.TensorSpec(
                      shape=[None, 784],
                      dtype=tf.float32,
                      name='image_floats'))
  }

ואז נשמר מודל Keras כ- SavedModel באותו אופן שהוא רגיל.

  temp_saving_model_dir = os.path.join(fn_args.serving_model_dir, 'temp')
  model.save(temp_saving_model_dir, save_format='tf', signatures=signatures)

לבסוף, אנו יוצרים מופע של TFLite rewriter ( tfrw ), tfrw אותו ב- SavedModel כדי להשיג את מודל TFLite. אנו מאחסנים מודל TFLite זה ב- serving_model_dir שמספק המתקשר של run_fn . בדרך זו, דגם TFLite נשמר במיקום בו כל רכיבי TFX במורד הזרם יצפו למצוא את הדגם.

  tfrw = rewriter_factory.create_rewriter(
      rewriter_factory.TFLITE_REWRITER, name='tflite_rewriter')
  converters.rewrite_saved_model(temp_saving_model_dir,
                                 fn_args.serving_model_dir,
                                 tfrw,
                                 rewriter.ModelType.TFLITE_MODEL)

הערכת מודל TFLite.

מערך TFX מספק יכולת לנתח מודלים מאומנים כדי להבין את איכותם במגוון רחב של מדדים. בנוסף לניתוח SavedModels, TFX Evaluator מסוגל כעת לנתח גם דגמי TFLite.

קטע הקוד הבא ( משוחזר מצינור MNIST ), מראה כיצד להגדיר מעריך שמנתח מודל TFLite.

  # Informs the evaluator that the model is a TFLite model.
  eval_config_lite.model_specs[0].model_type = 'tf_lite'

  ...

  # Uses TFMA to compute the evaluation statistics over features of a TFLite
  # model.
  model_analyzer_lite = Evaluator(
      examples=example_gen.outputs['examples'],
      model=trainer_lite.outputs['model'],
      eval_config=eval_config_lite,
      instance_name='mnist_lite')

כפי שהראה, השינוי היחיד שאנחנו צריכים לעשות הוא להגדיר את model_type שדה tf_lite . אין צורך בשינוי תצורה אחר בכדי לנתח את דגם TFLite. לא משנה אם מנותח מודל TFLite או SavedModel, תפוקת ה- Evaluator תהיה בדיוק באותו מבנה.