სწორედ აქ ერთვება BentoML. BentoML არის ღია კოდის პლატფორმა მანქანური სწავლის მოდელების სერვისისა და განთავსებისთვის. ის წარმოადგენს ერთიან ფრეიმვორკს პროდუქტიული ხელოვნური ინტელექტის აპლიკაციების შესაქმნელად, გასაშვებად და მასშტაბირებისთვის, რომელიც აერთიანებს ტრადიციულ, წინასწარ გაწვრთნილ და გენერაციულ მოდელებს, ისევე როგორც დიდ ენობრივ მოდელებს (Large Language Models). აი, როგორ იყენებთ BentoML ფრეიმვორკს ზოგადი თვალსაზრისით: ამ ბლოგპოსტში ჩვენ ვაჩვენებთ, თუ როგორ უნდა მოხდეს DeepFloyd IF-ის ინტეგრირება BentoML-თან ზემოთ აღწერილი სამუშაო პროცესის მიხედვით. DeepFloyd IF არის თანამედროვე, ღია კოდის ტექსტიდან გამოსახულების გენერირების მოდელი (text-to-image model). ის განსხვავდება ლატენტური დიფუზიის მოდელებისგან, როგორიცაა Stable Diffusion, თავისი განსხვავებული ოპერაციული სტრატეგიითა და არქიტექტურით. DeepFloyd IF უზრუნველყოფს მაღალი ხარისხის ფოტო-რეალიზმს და დახვეწილ ენობრივ გაგებას. Stable Diffusion-ისგან განსხვავებით, DeepFloyd IF მუშაობს პირდაპირ პიქსელურ სივრცეში, იყენებს მოდულურ სტრუქტურას, რომელიც მოიცავს გაყინულ ტექსტურ ენკოდერს (frozen text encoder) და სამ კასკადურ პიქსელურ დიფუზიურ მოდულს. თითოეულ მოდულს უნიკალური როლი აქვს პროცესში: ეტაპი 1 (Stage 1) პასუხისმგებელია საბაზისო 64x64 px გამოსახულების შექმნაზე, რომელიც შემდეგ თანდათანობით იზრდება 1024x1024 px-მდე ეტაპი 2-ისა (Stage 2) და ეტაპი 3-ის (Stage 3) გავლით. DeepFloyd IF-ის უნიკალურობის კიდევ ერთი კრიტიკული ასპექტი არის მისი ინტეგრაცია დიდ ენობრივ მოდელთან (Large Language Model) (T5-XXL-1.1) მოთხოვნების (prompts) დასაკოდირებლად, რაც უზრუნველყოფს კომპლექსური მოთხოვნების უკეთეს გაგებას. დამატებითი ინფორმაციისთვის იხილეთ Stability AI-ს ბლოგპოსტი DeepFloyd IF-ის შესახებ. იმისათვის, რომ თქვენი DeepFloyd IF აპლიკაცია მაღალი წარმადობით მუშაობდეს პროდუქტიულ გარემოში, მიზანშეწონილია რესურსების გონივრული განაწილება და მართვა. ამ მხრივ, BentoML საშუალებას გაძლევთ დამოუკიდებლად დაასკალიროთ (scale) „რანერები“ (Runners) თითოეული ეტაპისთვის. მაგალითად, შეგიძლიათ გამოიყენოთ მეტი Pod თქვენი Stage 1 რანერებისთვის, ან გამოუყოთ მათ უფრო მძლავრი GPU სერვერები. ამ GitHub რეპოზიტორში ინახება ამ პროექტისთვის საჭირო ყველა ფაილი. პროექტის ლოკალურად გასაშვებად, დარწმუნდით, რომ გაქვთ შემდეგი: წინაპირობების დაკმაყოფილების შემდეგ, დააკლონირეთ პროექტის რეპოზიტორი თქვენს ლოკალურ მანქანაზე და გადადით სამიზნე დირექტორიაში. აპლიკაციის აგებამდე, მოკლედ განვიხილოთ ძირითადი ფაილები ამ დირექტორიაში: გირჩევთ შექმნათ ვირტუალური გარემო (Virtual Environment) დამოკიდებულებების იზოლაციისთვის. მაგალითად, გაუშვით შემდეგი ბრძანება `myenv`-ის გასააქტიურებლად: დააინსტალირეთ საჭირო დამოკიდებულებები: თუ ადრე არ გადმოგიწერიათ მოდელები Hugging Face-დან ბრძანების ხაზის გამოყენებით, ჯერ უნდა შეხვიდეთ სისტემაში: როგორც ზემოთ აღინიშნა, თქვენ უნდა ჩამოტვირთოთ DeepFloyd IF-ის თითოეული ეტაპის მიერ გამოყენებული ყველა მოდელი. გარემოს დაყენების შემდეგ, გაუშვით შემდეგი ბრძანება მოდელების თქვენს ლოკალურ მოდელების საცავში (Model store) ჩამოსატვირთად. ამ პროცესს შესაძლოა გარკვეული დრო დასჭირდეს. ჩამოტვირთვის დასრულების შემდეგ, იხილეთ მოდელები მოდელების საცავში. შეგიძლიათ პირდაპირ გაუშვათ BentoML HTTP სერვერი Gradio-ზე დაფუძნებული ვებ ინტერფეისით (`web UI`) `start-server.py` ფაილის გამოყენებით, რომელიც ამ აპლიკაციის შესვლის წერტილია (entry point). ის გთავაზობთ სხვადასხვა ვარიანტს შესრულების მორგებისთვის და GPU-ს განაწილების სამართავად სხვადასხვა ეტაპს შორის. შეგიძლიათ გამოიყენოთ სხვადასხვა ბრძანება თქვენი GPU კონფიგურაციის მიხედვით: 40GB-ზე მეტი VRAM-ის მქონე GPU-სთვის, გაუშვით ყველა მოდელი ერთსა და იმავე GPU-ზე. ორი Tesla T4-ისთვის, თითოეული 15GB VRAM-ით, Stage 1 მოდელი მიანიჭეთ პირველ GPU-ს, ხოლო Stage 2 და Stage 3 მოდელები – მეორე GPU-ს. ერთი Tesla T4-ისთვის 15GB VRAM-ით და ორი დამატებითი GPU-სთვის მცირე VRAM ზომით, Stage 1 მოდელი მიანიჭეთ T4-ს, ხოლო Stage 2 და Stage 3 მოდელები – შესაბამისად მეორე და მესამე GPU-ებს. ყველა მორგებადი ვარიანტის (მაგ. სერვერის პორტი) სანახავად, გაუშვით: სერვერის გაშვების შემდეგ, შეგიძლიათ ეწვიოთ ვებ ინტერფეისს (web UI) მისამართზე http://localhost:7860. BentoML API-ის „ენდპოინტი“ (endpoint) ასევე ხელმისაწვდომია http://localhost:3000-ზე. აქ მოცემულია მოთხოვნის (prompt) და უარყოფითი მოთხოვნის (negative prompt) მაგალითი. მოთხოვნა: ნარინჯისფერი და შავი, ქალის სახის კადრი ქუჩის ნათურების ქვეშ, ბნელი თემა, ფრენკ მილერი, კინო, ულტრა რეალისტური, ატმოსფერო, წარმოუდგენლად დეტალური და რთული, ჰიპერ რეალისტური, 8k რეზოლუცია, ფოტორეალისტური, მაღალი ტექსტურა, რთული დეტალები. უარყოფითი მოთხოვნა: მოპირკეთება, ცუდად დახატული ხელები, ცუდად დახატული ფეხები, ცუდად დახატული სახე, კადრიდან გამოსული, მუტაცია, მუტაცირებული, ზედმეტი კიდურები, ზედმეტი ფეხები, ზედმეტი ხელები, დამახინჯებული, დეფორმირებული, გადაჯვარედინებული თვალი, სხეული კადრიდან გამოსული, ბუნდოვანი, ცუდი ხელოვნება, ცუდი ანატომია, დაბურული, ტექსტი, წყლის ნიშანი, მარცვლოვანი. შედეგი: ახლა, როდესაც წარმატებით გაუშვით DeepFloyd IF ლოკალურად, შეგიძლიათ შეფუთოთ ის Bento-დ პროექტის დირექტორიაში შემდეგი ბრძანების გაშვებით. იხილეთ Bento ლოკალურ Bento საცავში (Bento Store). Bento მზად არის პროდუქტიულ გარემოში სერვისისთვის. Bento-ს უფრო „ქლაუდ-ნატიური“ (cloud-native) გზით განთავსებისთვის, შექმენით Docker-ის იმიჯი შემდეგი ბრძანების გაშვებით: შემდეგ შეგიძლიათ მოდელი განათავსოთ Kubernetes-ზე. BentoML უზრუნველყოფს მძლავრ და მარტივ გზას Hugging Face-ის მოდელების პროდუქტიული მიზნებისთვის განთავსებისთვის. მანქანური სწავლის (ML) ფრეიმვორკების ფართო სპექტრის მხარდაჭერით და მარტივი გამოსაყენებელი API-ებით, თქვენ შეგიძლიათ თქვენი მოდელი უმოკლეს დროში განათავსოთ პროდუქტიულ გარემოში. მუშაობთ თუ არა DeepFloyd IF მოდელთან, თუ ნებისმიერ სხვა მოდელთან Hugging Face Model Hub-ზე, BentoML დაგეხმარებათ თქვენი მოდელების გაცოცხლებაში. იხილეთ შემდეგი რესურსები, რომ ნახოთ რა