tensorflow :: ভজনা:: বেসিক ম্যানেজার

এটি একটি বিমূর্ত ক্লাস।

#include <basic_manager.h>

লোড করা, পরিবেশন করা এবং আনলোড করা সহ সার্ভেবলের জীবনচক্র পরিচালনা করতে সহায়তা করে।

সারসংক্ষেপ

ম্যানেজার লোডার আকারে servables গ্রহণ করে.

আমরা ManageServable* পদ্ধতিগুলির একটির মাধ্যমে একটি পরিবেশনযোগ্য পরিচালনা শুরু করি। আপনি কল করে এর পরে পরিবেশনযোগ্য লোড করতে যেতে পারেন LoadServable () । লোডিং এছাড়াও পরিবেশন করার জন্য উপলব্ধ করা হবে. একবার তা আন করার সিদ্ধান্ত নেন, আপনি কল করতে পারেন UnloadServable () এটা, যা এটি অনুপলব্ধ সেবা করার করতে হবে, তারপর পরিবেশনযোগ্য আন।

Servables পর্যন্ত অপরিবর্তিত রাখা হয় () StopManagingServable বলা হয়। এটি একটি উচ্চ স্তরের ব্যবস্থাপককে আরও তথ্য সহ সিদ্ধান্ত নিতে দেয় যে কখন একটি পরিবেশনযোগ্য সম্পর্কে ভুলে যাওয়া নিরাপদ।

BasicManager সম্পদ (যেমন র্যাম) লোড করা servables দ্বারা ব্যবহৃত ট্র্যাক, এবং শুধুমাত্র নতুন servables সামগ্রিক রিসোর্স পুল মধ্যে মাপসই যে লোড করতে পারবেন।

BasicManager এটা লোড এবং unloads করতে একটি থ্রেড-পুকুর ব্যবহার করার জন্য কনফিগার করা যাবে। ফলে LoadServable () এবং UnloadServable () পদ্ধতি তাদের সিঙ্ক্রোনাস নির্বাহ বদলে লোড / unloads নির্ধারণ করুন। যদি থ্রেড পুলে থ্রেডের চেয়ে বেশি মুলতুবি লোড/আনলোড থাকে, সেগুলি FIFO ক্রম অনুসারে প্রক্রিয়া করা হয়।

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

প্রয়োজন:

  1. পদ্ধতি কল অর্ডার - ManageServable () (এবং রূপগুলো) -> LoadServable () -> UnloadServable () -> StopManagingServable ()
  2. একই পরিবেশনযোগ্য লোড এবং আনলোডের সময়সূচী করবেন না।
  3. একই পরিবেশনে একাধিকবার লোড বা আনলোড কল করবেন না।

এই ক্লাস থ্রেড নিরাপদ.

উদাহরণ ব্যবহার:

const ServableId id = {kServableName, 0};
std::unique_ptr<Loader> loader = ...;
...
BasicManager manager;
TF_CHECK_OK(manager.ManageServable(
  CreateServableData(id, std::move(loader))));
TF_CHECK_OK(manager.LoadServable(id));

...
TF_CHECK_OK(manager.GetServableHandle(
    ServableRequest::Latest(kServableName), &handle));
...

TF_CHECK_OK(manager.UnloadServable(id));
TF_CHECK_OK(manager.StopManagingServable(id));  

উত্তরাধিকার

থেকে ইনহেরিট: tensorflow :: ভজনা :: ম্যানেজার

কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর

~BasicManager ()
একটি লোড/আনলোড থ্রেড-পুল ব্যবহার করার জন্য কনফিগার করা হলে, সমস্ত নির্ধারিত লোড এবং আনলোড শেষ না হওয়া পর্যন্ত অপেক্ষা করে এবং তারপর থ্রেডের সেটটি ধ্বংস করে।

পাবলিক প্রকার

DoneCallback ব্যবহার
std::function< void(const Status &status)>
{Load,Unload}Servable() এর শেষে কলব্যাক বলা হয়েছে।
PreLoadHook ব্যবহার
std::function< void(const ServableId &)>

বন্ধুর ক্লাস

test_util::BasicManagerTestAccess
friend class

পাবলিক স্ট্যাটিক ফাংশন

Create ( Options options, std::unique_ptr< BasicManager > *manager)
Status

পাবলিক ফাংশন

CancelLoadServableRetry (const ServableId & id)
void
সময় পরিবেশনযোগ্য লোড পুনরায় চেষ্টা করা হচ্ছে বাতিল LoadServable () ।
GetAdditionalServableState (const ServableId & id)
T *
GetAvailableUntypedServableHandles () const override
virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > >
GetManagedServableNames () const
std::vector< string >
GetManagedServableStateSnapshot (const ServableId & id)
optional< ServableStateSnapshot< T > >
GetManagedServableStateSnapshots (const string & servable_name) const
std::vector< ServableStateSnapshot< T > >
GetUntypedServableHandle (const ServableRequest & request, std::unique_ptr< UntypedServableHandle > *untyped_handle) override
virtual Status
ListAvailableServableIds () const override
virtual std::vector< ServableId >
সমস্ত উপলব্ধ পরিবেশনযোগ্য আইডিগুলির একটি তালিকা পায়, যেমন
LoadServable (const ServableId & id, DoneCallback done_callback)
void
এই আইডি দিয়ে পরিবেশনযোগ্য লোড করে, এবং পরিবেশন মানচিত্রটিও আপডেট করে।
ManageServable (ServableData< std::unique_ptr< Loader >> servable)
Status
পরিবেশনযোগ্য পরিচালনা শুরু করে।
ManageServableWithAdditionalState (ServableData< std::unique_ptr< Loader >> servable, std::unique_ptr< T > additional_state)
Status
উপরের পদ্ধতির অনুরূপ, কিন্তু কলকারীরা, সাধারণত এটির উপরে নির্মিত অন্যান্য ম্যানেজাররা, সার্ভযোগ্যের সাথে অতিরিক্ত রাষ্ট্র সংযুক্ত করতে পারে।
StopManagingServable (const ServableId & id)
Status
ম্যানেজারকে এই পরিষেবার ব্যবস্থাপনা বন্ধ করতে বলে।
UnloadServable (const ServableId & id, DoneCallback done_callback)
void
এই আইডি দিয়ে পরিবেশনযোগ্য আনলোড করে, এবং পরিবেশন মানচিত্রটিও আপডেট করে।

কাঠামো

tensorflow :: ভজনা :: BasicManager :: বিকল্প

কনফিগ অপশন এবং প্লাগেবল যে বস্তু দ্বারা ব্যবহৃত হবে BasicManager

পাবলিক প্রকার

কলব্যাক হয়েছে

std::function< void(const Status &status)> DoneCallback

{Load,Unload}Servable() এর শেষে কলব্যাক বলা হয়েছে।

আমরা অপারেশনের স্থিতি কলব্যাকে পাস করি।

প্রি-লোডহুক

std::function< void(const ServableId &)> PreLoadHook

বন্ধুর ক্লাস

test_util::BasicManagerTestAccess

friend class test_util::BasicManagerTestAccess

পাবলিক স্ট্যাটিক ফাংশন

সৃষ্টি

Status Create(
  Options options,
  std::unique_ptr< BasicManager > *manager
)

পাবলিক ফাংশন

CancelLoadServableRetry

void CancelLoadServableRetry(
  const ServableId & id
)

সময় পরিবেশনযোগ্য লোড পুনরায় চেষ্টা করা হচ্ছে বাতিল LoadServable () ।

পরিবেশনযোগ্য পরিচালিত না হলে কিছুই করে না।

যদি পুনঃপ্রচারগুলি বাতিল করা হয়, তাহলে সার্ভযোগ্যটি শেষ লোড() এর উপর কল করা অবস্থায় নির্ভর করে। যদি শেষ লোড() সফল হয়, তাহলে এটি kReady অবস্থায় থাকবে, অন্যথায় kError এ থাকবে।

অতিরিক্ত সার্ভযোগ্য রাজ্য পান

T * GetAdditionalServableState(
  const ServableId & id
)

প্রয়োজন: এই ব্যবস্থাপকের আগে থেকেই এই পরিষেবাটি পরিচালনা করা উচিত ছিল, অন্যথায় আমরা nullptr ফেরত দিই।

বিস্তারিত
রিটার্নস
পরিবেশনযোগ্য জন্য অতিরিক্ত রাষ্ট্র. কোনো অতিরিক্ত স্টেট সেটআপ না থাকলে বা কি সেটআপ করা হয়েছে এবং কিসের জন্য চাওয়া হচ্ছে এর মধ্যে কোনো ধরনের অমিল থাকলে nullptr প্রদান করে।

GetAvailableUntypedServableHandles

virtual std::map< ServableId, std::unique_ptr< UntypedServableHandle > > GetAvailableUntypedServableHandles() const override

GetManagedServableNames

std::vector< string > GetManagedServableNames() const 

বিস্তারিত
রিটার্নস
এই ম্যানেজার দ্বারা পরিচালিত সমস্ত পরিষেবার নাম। নামগুলো ডুপ্লিকেট-মুক্ত হবে এবং কোনো নির্দিষ্ট ক্রমে নয়।

GetManagedServableStateSnapshot

optional< ServableStateSnapshot< T > > GetManagedServableStateSnapshot(
  const ServableId & id
)

প্রয়োজন: এই ব্যবস্থাপকের ইতিমধ্যেই এই পরিবেশনযোগ্য পরিচালনা করা উচিত ছিল, অন্যথায় আমরা nullopt ফেরত দেব।

বিস্তারিত
রিটার্নস
এই ব্যবস্থাপক দ্বারা পরিচালিত একটি নির্দিষ্ট পরিবেশনযোগ্য-আইডির স্টেট স্ন্যাপশট যদি উপলব্ধ থাকে।

GetManagedServableStateSnapshots

std::vector< ServableStateSnapshot< T > > GetManagedServableStateSnapshots(
  const string & servable_name
) const 

T হল অতিরিক্ত-রাষ্ট্রের ধরন, যদি থাকে।

বিস্তারিত
রিটার্নস
এই ম্যানেজার দ্বারা পরিচালিত একটি নির্দিষ্ট স্ট্রীমের সমস্ত পরিষেবার স্টেট স্ন্যাপশট।

GetUntypedServableHandle

virtual Status GetUntypedServableHandle(
  const ServableRequest & request,
  std::unique_ptr< UntypedServableHandle > *untyped_handle
) override

তালিকা উপলভ্য সার্ভযোগ্য আইডি

virtual std::vector< ServableId > ListAvailableServableIds() const override

সমস্ত উপলব্ধ পরিবেশনযোগ্য আইডিগুলির একটি তালিকা পায়, যেমন

এর প্রতিটি GetServableHandle ব্যবহার করে পুনরুদ্ধার করা যেতে পারে।

লোড সার্ভযোগ্য

void LoadServable(
  const ServableId & id,
  DoneCallback done_callback
)

এই আইডি দিয়ে পরিবেশনযোগ্য লোড করে, এবং পরিবেশন মানচিত্রটিও আপডেট করে।

কল ঠিক সঙ্গে done_callback iff পরিবেশনযোগ্য সফলভাবে লোড করা হয়েছে, অন্য আয় একটি ত্রুটি অবস্থা।

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

প্রয়োজন: এই পরিচালকের উচিত ইতিমধ্যেই এই পরিবেশনযোগ্য পরিচালনার করা হয়েছে, এটা লোড করা জন্য, অন্যথায় আমরা একটি ত্রুটি স্থিতি সহ done_callback কল। একই servable এ একাধিকবার কল করবেন না। এর মধ্যে শুধুমাত্র একটি সফল হবে এবং বাকিরা একটি ত্রুটি স্থিতি সহ ব্যর্থ হবে।

ম্যানেজ সার্ভযোগ্য

Status ManageServable(
  ServableData< std::unique_ptr< Loader >> servable
)

পরিবেশনযোগ্য পরিচালনা শুরু করে।

এমন একটি সার্ভযোগ্য দেওয়া হলে একটি ত্রুটি প্রদান করে যা ইতিমধ্যেই পরিচালিত হচ্ছে৷

তাহলে পরিবেশনযোগ্য একটি ত্রুটি রাজ্যের, এই পদ্ধতি একটি ত্রুটি ফেরত দেয় না। পরিবর্তে, ম্যানেজার পরিবেশনযোগ্যটি গ্রহণ করে, এটিকে স্টেট কেয়ারে রাখে (ইভেন্ট বাসে পাঠানো একটি বিজ্ঞপ্তি সহ), এবং তারপরে অবিলম্বে এটি পরিচালনা করা বন্ধ করে দেয়। এই আচরণটি উত্সগুলিতে ঘটে যাওয়া ত্রুটিগুলি (উদাহরণযোগ্য ডেটাতে অবৈধ ফাইলের পথ) এবং ম্যানেজারে (যেমন পরিষেবাযোগ্য লোড করার জন্য অপর্যাপ্ত সংস্থান) হওয়া ত্রুটিগুলির অভিন্ন পরিচালনার সুবিধা দেয়৷

ম্যানেজ সার্ভযোগ্য উইথ অ্যাডিশনাল স্টেট

Status ManageServableWithAdditionalState(
  ServableData< std::unique_ptr< Loader >> servable,
  std::unique_ptr< T > additional_state
)

উপরের পদ্ধতির অনুরূপ, কিন্তু কলকারীরা, সাধারণত এটির উপরে নির্মিত অন্যান্য ম্যানেজাররা, সার্ভযোগ্যের সাথে অতিরিক্ত রাষ্ট্র সংযুক্ত করতে পারে।

অতিরিক্ত অবস্থা যে পরিবেশনযোগ্য জন্য ACL বা আজীবন মেটাডেটা হতে পারে। রাষ্ট্রের মালিকানা এই শ্রেণীর কাছে হস্তান্তর করা হয়।

StopManagingServable

Status StopManagingServable(
  const ServableId & id
)

ম্যানেজারকে এই পরিষেবার ব্যবস্থাপনা বন্ধ করতে বলে।

প্রয়োজন যে পরিবেশনযোগ্যটি বর্তমানে পরিচালিত হচ্ছে এবং এটির অবস্থা {kNew, kError, kDisabled}-এর মধ্যে একটি।

আনলোড সার্ভযোগ্য

void UnloadServable(
  const ServableId & id,
  DoneCallback done_callback
)

এই আইডি দিয়ে পরিবেশনযোগ্য আনলোড করে, এবং পরিবেশন মানচিত্রটিও আপডেট করে।

কল ঠিক সঙ্গে done_callback iff পরিবেশনযোগ্য সফলভাবে unloaded ছিল, আর আয় একটি ত্রুটি অবস্থা।

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

প্রয়োজন: এই পরিচালকের লোড এবং এই পরিবেশনযোগ্য উপলব্ধ করা, এটা unloaded হওয়ার জন্য অন্য কল করার সময় একটি ত্রুটি স্থিতি সহ done_callback করা উচিত ছিল। একই servable এ একাধিকবার কল করবেন না। এর মধ্যে শুধুমাত্র একটি সফল হবে এবং বাকিরা একটি ত্রুটি স্থিতি সহ ব্যর্থ হবে।

~ বেসিক ম্যানেজার

 ~BasicManager() override

একটি লোড/আনলোড থ্রেড-পুল ব্যবহার করার জন্য কনফিগার করা হলে, সমস্ত নির্ধারিত লোড এবং আনলোড শেষ না হওয়া পর্যন্ত অপেক্ষা করে এবং তারপর থ্রেডের সেটটি ধ্বংস করে।