BERT-ის ახალი სიჩქარე: ხელოვნური ინტელექტის მოდელების განთავსება TensorFlow Serving-ით
ტრანსფორმერების v4.2.0 ვერსიაში BERT-ის მოდელის გამოთვლითი წარმადობა მნიშვნელოვნად გაუმჯობესდა, რაც 10%-ით უფრო სწრაფია Google-ის ოფიციალურ იმპლემენტაციაზე და ორჯერ აღემატება v4.1.1-ის ვერსიას. სტატია დეტალურად აღწერს, თუ როგორ შეიძლება ამ გაუმჯობესებული წარმადობის გამოყენება საწარმოო გარემოში TensorFlow Serving-ის მეშვეობით BERT მოდელების განთავსებით. ის მოიცავს ნაბიჯ-ნაბიჯ ინსტრუქციებს SavedModel-ის შექმნის, Docker-ის გამოყენებით კონტეინერების გაშვების და REST/gRPC API-ების მეშვეობით მოდელთან
გამოთვლითი წარმადობის გაუმჯობესების დემონსტრირების მიზნით, ჩვენ ჩავატარეთ საფუძვლიანი შედარებითი ტესტირება (ბენჩმარკინგი), სადაც BERT-ის წარმადობა Transformers-ის v4.2.0 ვერსიის TensorFlow Serving-ით შევადარეთ Google-ის ოფიციალურ იმპლემენტაციას. ტესტირება ჩატარდა GPU V100-ზე 128-ის მიმდევრობის სიგრძით (დრო მოცემულია მილიწამებში):
BERT-ის მიმდინარე იმპლემენტაცია v4.2.0 ვერსიაში დაახლოებით 10%-ით უფრო სწრაფია, ვიდრე Google-ის იმპლემენტაცია. ამის გარდა, ის ორჯერ უფრო სწრაფია, ვიდრე 4.1.1 ვერსიის იმპლემენტაციები.
წინა ნაწილი აჩვენებს, რომ Transformers-ის უახლეს ვერსიაში, სრულიად ახალმა BERT მოდელმა მიიღო გამოთვლითი წარმადობის მკვეთრი ზრდა.
ამ ნაწილში, ჩვენ ეტაპობრივად გაჩვენებთ, თუ როგორ უნდა განათავსოთ BERT მოდელი TensorFlow Serving-ის გამოყენებით, რათა ისარგებლოთ გამოთვლითი წარმადობის გაზრდით საწარმოო გარემოში.
TensorFlow Serving არის TensorFlow Extended (TFX)-ის მიერ მოწოდებული ინსტრუმენტების ნაკრების ნაწილი, რომელიც მოდელის სერვერზე განთავსებას იმაზე მარტივს ხდის, ვიდრე ოდესმე ყოფილა.
TensorFlow Serving უზრუნველყოფს ორ API-ს: ერთი, რომლის გამოძახებაც შესაძლებელია HTTP მოთხოვნების გამოყენებით, და მეორე, რომელიც იყენებს gRPC-ს სერვერზე დასკვნის (inference) გამოსატანად.
SavedModel შეიცავს დამოუკიდებელ TensorFlow მოდელს, მისი წონებისა და არქიტექტურის ჩათვლით. ის არ საჭიროებს მოდელის ორიგინალურ წყაროს გასაშვებად, რაც მას სასარგებლოს ხდის გაზიარებისთვის ან ნებისმიერ ბექენდზე განთავსებისთვის, რომელიც მხარს უჭერს SavedModel-ის წაკითხვას, როგორიცაა Java, Go, C++ ან JavaScript და სხვა.
SavedModel-ის შიდა სტრუქტურა წარმოდგენილია შემდეგნაირად:
TensorFlow Serving-ის ინსტალაციისა და გამოყენების სამი გზა არსებობს:
საქმის გასამარტივებლად და ყველა არსებულ ოპერაციულ სისტემასთან თავსებადობისთვის, ამ გაკვეთილში ჩვენ გამოვიყენებთ Docker-ს. SavedModel არის TensorFlow Serving-ის მიერ მოსალოდნელი ფორმატი. Transformers v4.2.0 ვერსიიდან, SavedModel-ის შექმნას აქვს სამი დამატებითი ფუნქცია:
ქვემოთ შეგიძლიათ იხილოთ TFBertForSequenceClassification-ის შეყვანის და გამოყვანის წარმოდგენები, რომელიც შენახულია როგორც TensorFlow SavedModel:
პირდაპირ inputs_embeds (ტოკენის ჩაშენებები) გადასაცემად, input_ids-ის (ტოკენის ID-ების) ნაცვლად, ჩვენ გვჭირდება მოდელის ქვეკლასირება, რათა გვქონდეს ახალი სერვინგის სიგნატურა. ქვემოთ მოცემული კოდის ფრაგმენტი გვიჩვენებს, თუ როგორ უნდა გავაკეთოთ ეს:
სერვინგის მეთოდი უნდა გადაიწეროს tf.function დეკორატორის ახალი input_signature არგუმენტით. input_signature არგუმენტის შესახებ მეტი ინფორმაციისთვის იხილეთ ოფიციალური დოკუმენტაცია. სერვინგის მეთოდი გამოიყენება იმის განსაზღვრისთვის, თუ როგორ მოიქცევა SavedModel, როდესაც ის განთავსდება TensorFlow Serving-ის გამოყენებით. ახლა SavedModel გამოიყურება ისე, როგორც მოსალოდნელია, იხილეთ ახალი inputs_embeds შეყვანა:
მოდით, ეტაპობრივად ვნახოთ, თუ როგორ უნდა განვათავსოთ და გამოვიყენოთ BERT მოდელი სენტიმენტების კლასიფიკაციისთვის.
შექმენით SavedModel. SavedModel-ის შესაქმნელად, Transformers ბიბლიოთეკა საშუალებას გაძლევთ ჩატვირთოთ PyTorch მოდელი სახელწოდებით nateraw/bert-base-uncased-imdb, რომელიც გაწვრთნილია IMDB მონაცემთა ბაზაზე და გადაიყვანოთ ის TensorFlow Keras მოდელად:
შექმენით Docker კონტეინერი SavedModel-ით და გაუშვით. პირველ რიგში, ჩამოტვირთეთ TensorFlow Serving Docker-ის გამოსახულება CPU-სთვის (GPU-სთვის შეცვალეთ serving-ით serving:latest-gpu):
შემდეგ, გაუშვით სერვინგის გამოსახულება როგორც დემონი სახელად serving_base: ახლად შექმნილი SavedModel დააკოპირეთ serving_base კონტეინერის models საქაღალდეში:
დააკომიტეთ კონტეინერი, რომელიც ემსახურება მოდელს, MODEL_NAME-ის შეცვლით მოდელის სახელთან შესატყვისად (აქ bert), სახელი (bert) შეესაბამება იმ სახელს, რომლის მინიჭებაც გვსურს ჩვენი SavedModel-ისთვის:
და შეაჩერეთ serving_base გამოსახულება, რომელიც გაშვებული იყო როგორც დემონი, რადგან ის აღარ გვჭირდება:
და ბოლოს, გაუშვით გამოსახულება, რათა ჩვენი SavedModel-ი დემონის სახით იმსახუროს, და ჩვენ ვაკავშირებთ პორტებს 8501 (REST API) და 8500 (gRPC API) კონტეინერში ჰოსტთან და კონტეინერს ვარქმევთ bert.
გააკეთეთ მოდელის მოთხოვნა REST API-ის მეშვეობით: ამან უნდა დააბრუნოს POSITIVE.
ასევე შესაძლებელია gRPC (Google Remote Procedure Call) API-ის გამოყენება იგივე შედეგის მისაღებად:
ტრანსფორმერებში TensorFlow მოდელებზე განხორციელებული ბოლო განახლებების წყალობით, ახლა შესაძლებელია მოდელების მარტივად განთავსება საწარმოო გარემოში TensorFlow Serving-ის გამოყენებით.
ერთ-ერთი შემდეგი ნაბიჯი, რომელზეც ვფიქრობთ, არის წინასწარი დამუშავების ნაწილის პირდაპირ SavedModel-ში ინტეგრირება, რათა საქმეები კიდევ უფრო გამარტივდეს.
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#ტრანსფორმერები
#ღრმა სწავლება
#წარმადობა
#bert
#განთავსება
#docker
#tensorflow serving
#savedmodel
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ტექნოლოგიები
Honor Magic V6: უთხელესი დასაკეცი ტელეფონი? პირველი შთაბეჭდილებები
ტექნოლოგიები
Honor Magic V6: ყველაზე თხელი დასაკეცი სმარტფონი და მისი შთამბეჭდავი შესაძლებლობები
ტექნოლოგიები