هدف، واقعگرایانه
این سند نمونه هایی را برای استفاده مورد نظر از SignatureDefs در SavedModel ارائه می دهد که به API های TensorFlow Serving نگاشت می شود.
بررسی اجمالی
SignatureDef امضای یک محاسبه در یک گراف TensorFlow پشتیبانی تعریف می کند. هدف SignatureDefs به ارائه پشتیبانی عمومی برای شناسایی ورودی و خروجی از یک تابع است و می تواند در هنگام ساخت یک مشخص SavedModel .
زمینه
TF-صادر کننده و SessionBundle استفاده امضا که در مفهوم مشابه هستند، اما کاربران مورد نیاز برای تمایز بین نام و به طور پیش فرض امضا در جهت آنها را به درستی بر یک بار بازیابی شود. برای کسانی که قبلا مورد استفاده قرار TF-صادر کننده / SessionBundle، Signatures
در TF-صادر کننده خواهد شد جایگزین SignatureDefs
در SavedModel.
ساختار SignatureDef
یک SignatureDef به مشخصات زیر نیاز دارد:
-
inputs
به عنوان یک نقشه از رشته به TensorInfo. -
outputs
به عنوان یک نقشه از رشته به TensorInfo. -
method_name
(که مربوط به یک نام روش پشتیبانی در حال بارگذاری ابزار / سیستم).
توجه داشته باشید که TensorInfo خودی خود نیاز به مشخصات نام، dtype و شکل تانسور. در حالی که اطلاعات تانسور از قبل در نمودار وجود دارد، مفید است که به طور صریح TensorInfo را به عنوان بخشی از SignatureDef تعریف کنیم، زیرا ابزارها می توانند بدون نیاز به خواندن تعریف گراف، اعتبارسنجی امضا و غیره را انجام دهند.
ثابت ها و فایده های مرتبط
برای سهولت استفاده مجدد و اشتراک گذاری بین ابزارها و سیستم ها، ثابت های رایج مربوط به SignatureDefs که در سرویس TensorFlow پشتیبانی می شوند به عنوان ثابت تعریف می شوند. به طور مشخص:
علاوه بر این، SavedModel فراهم می کند برنامه زمانی برای کمک به ایجاد یک امضای دف.
سازه های نمونه
TensorFlow Serving API های سطح بالایی را برای انجام استنتاج فراهم می کند. برای فعال کردن این APIها، مدلها باید شامل یک یا چند SignatureDef باشند که گرههای TensorFlow دقیق را برای استفاده برای ورودی و خروجی تعریف میکنند. برای نمونههایی از SignatureDefs که TensorFlow Serving برای هر API پشتیبانی میکند، در زیر ببینید.
توجه داشته باشید که TensorFlow Serving به کلیدهای هر TensorInfo (در ورودی ها و خروجی های SignatureDef) و همچنین متد_نام SignatureDef بستگی دارد. محتوای واقعی TensorInfo مختص نمودار شما است.
طبقه بندی SignatureDef
Classification SignatureDefs از تماس های ساختاریافته به API طبقه بندی TensorFlow Serving پشتیبانی می کند. این تجویز که باید وجود داشته باشد inputs
تانسور، و این که دو تنسور اختیاری خروجی وجود دارد: classes
و scores
، حداقل یکی از آنها باید وجود داشته باشد.
signature_def: {
key : "my_classification_signature"
value: {
inputs: {
key : "inputs"
value: {
name: "tf_example:0"
dtype: DT_STRING
tensor_shape: ...
}
}
outputs: {
key : "classes"
value: {
name: "index_to_string:0"
dtype: DT_STRING
tensor_shape: ...
}
}
outputs: {
key : "scores"
value: {
name: "TopKV2:0"
dtype: DT_FLOAT
tensor_shape: ...
}
}
method_name: "tensorflow/serving/classify"
}
}
SignatureDef را پیش بینی کنید
Predict SignatureDefs از تماس با Predict API TensorFlow Serving پشتیبانی می کند. این امضاها به شما این امکان را می دهند که به طور خودسرانه بسیاری از تانسورهای ورودی و خروجی را پشتیبانی کنید. برای مثال زیر، امضا my_prediction_signature
دارای یک ورودی منطقی واحد تانسور images
که به تانسور واقعی در نمودار خود را نقشه برداری x:0
.
Predict SignatureDefs قابلیت حمل و نقل را در بین مدل ها فعال می کند. به این معنی که شما می توانید در SavedModels مختلف احتمالا با نام های مختلف تانسور زمینه مبادله، (به عنوان مثال به جای x:0
شاید شما یک مدل جایگزین جدید با تانسور z:0
)، در حالی که مشتریان شما می توانید اقامت آنلاین به طور مداوم پرس و جو از قدیمی و جدید نسخه های این مدل بدون تغییرات سمت مشتری.
Predict SignatureDefs همچنین به شما اجازه می دهد تا Tensor های اضافی اختیاری را به خروجی ها اضافه کنید، که می توانید صریحاً آنها را جستجو کنید. بیایید می گویند که علاوه بر کلید خروجی زیر از scores
، شما همچنین می خواست به بهانه یک لایه ادغام برای اشکال زدایی و یا اهداف دیگر. در آن صورت، شما به سادگی به یک تانسور اضافی را اضافه کنید با یک کلید مانند pool
و ارزش مناسب است.
signature_def: {
key : "my_prediction_signature"
value: {
inputs: {
key : "images"
value: {
name: "x:0"
dtype: ...
tensor_shape: ...
}
}
outputs: {
key : "scores"
value: {
name: "y:0"
dtype: ...
tensor_shape: ...
}
}
method_name: "tensorflow/serving/predict"
}
}
رگرسیون SignatureDef
Regression SignatureDefs از تماس های ساخت یافته به API رگرسیون TensorFlow Serving پشتیبانی می کند. این تجویز است که باید دقیقا یک وجود داشته باشد inputs
تانسور، و یکی outputs
تانسور.
signature_def: {
key : "my_regression_signature"
value: {
inputs: {
key : "inputs"
value: {
name: "x_input_examples_tensor_0"
dtype: ...
tensor_shape: ...
}
}
outputs: {
key : "outputs"
value: {
name: "y_outputs_0"
dtype: DT_FLOAT
tensor_shape: ...
}
}
method_name: "tensorflow/serving/regress"
}
}