GPT-J-ის ეფექტური დეპლოირება Amazon SageMaker-ისა და Hugging Face-ის გამოყენებით
სტატია განიხილავს EleutherAI-ის GPT-J მოდელის წარმოებაში ინტეგრაციის გამოწვევებს, განსაკუთრებით მეხსიერების მოხმარებისა და ჩატვირთვის ხანგრძლივი დროის თვალსაზრისით. ის წარმოადგენს გადაწყვეტას Amazon SageMaker-ისა და Hugging Face Inference Toolkit-ის გამოყენებით, PyTorch-ის მოდელების შენახვის ოპტიმიზებული მეთოდის მეშვეობით, რაც მნიშვნელოვნად ამცირებს ჩატვირთვის დროს (1 წუთი და 23 წამიდან 7.7 წამამდე) და GPT-J-ს საწარმოო სცენარებისთვის თავსებადს ხდის.
EleutherAI-ის მთავარი მიზანია GPT-3-ის ზომის ეკვივალენტური მოდელის მომზადება და მისი საზოგადოებისთვის ღია ლიცენზიით ხელმისაწვდომობა. ბოლო 6 თვის განმავლობაში GPT-J-მ დიდი ინტერესი გამოიწვია მკვლევრების, მონაცემთა მეცნიერების და პროგრამული უზრუნველყოფის დეველოპერების მხრიდან, თუმცა მისი რეალურ სამყაროში გამოყენების შემთხვევებსა და პროდუქტებში განთავსება (დეპლოირება) კვლავ სერიოზულ გამოწვევად რჩებოდა.
არსებობს რამდენიმე ჰოსტინგური გადაწყვეტა GPT-J-ის საწარმოო დატვირთვისთვის გამოსაყენებლად, მაგალითად, Hugging Face Inference API, ან EleutherAI-ის 6b პლეიგრაუნდი ექსპერიმენტებისთვის, თუმცა ნაკლებია მაგალითები, თუ როგორ შეიძლება მისი მარტივად განთავსება საკუთარ გარემოში. ამ ბლოგპოსტში თქვენ შეისწავლით, თუ როგორ მარტივად განათავსოთ GPT-J Amazon SageMaker-ისა და Hugging Face Inference Toolkit-ის გამოყენებით, რამდენიმე სტრიქონი კოდით, მასშტაბირებადი, სანდო და უსაფრთხო რეალურ დროში ინფერენსისთვის, NVIDIA T4-ის მქონე სტანდარტული ზომის GPU ინსტანციის გამოყენებით (~500$/თვეში).
მაგრამ სანამ დეტალებში ჩავუღრმავდებით, მსურს აგიხსნათ, თუ რატომ არის GPT-J-ის წარმოებაში განთავსება გამოწვევა. 6 მილიარდი პარამეტრის მქონე მოდელის წონები დაახლოებით ~24GB მეხსიერებას იკავებს. მისი float32 ფორმატში ჩასატვირთად, მინიმუმ 2x მოდელის ზომის CPU RAM-ია საჭირო: 1x საწყისი წონებისთვის და კიდევ 1x ჩექპოინტის ჩასატვირთად. ასე რომ, GPT-J-ისთვის მხოლოდ მოდელის ჩასატვირთად მინიმუმ 48GB CPU RAM-ი იქნებოდა საჭირო. მოდელის უფრო ხელმისაწვდომობისთვის, EleutherAI ასევე გთავაზობთ float16 წონებს, ხოლო `transformers` ბიბლიოთეკას აქვს ახალი ოპციები დიდი ენობრივი მოდელების ჩატვირთვისას მეხსიერების მოხმარების შესამცირებლად. ამ ყველაფრის გაერთიანებით, მოდელის ჩატვირთვას დაახლოებით 12.1GB CPU RAM-ი დასჭირდება.
ამ მაგალითის უარყოფითი მხარე ის არის, რომ მოდელის მეხსიერებაში ჩატვირთვასა და გამოსაყენებლად მზადყოფნას ძალიან დიდი დრო სჭირდება. ჩემს ექსპერიმენტებში, მოდელის ჩატვირთვას ზემოთ მოყვანილი კოდის ფრაგმენტით P3.2xlarge AWS EC2 ინსტანციაზე (მოდელი დისკზე არ იყო შენახული) 3 წუთი და 32 წამი დასჭირდა. ეს ხანგრძლივობა შეიძლება შემცირდეს მოდელის დისკზე შენახვით, რაც ჩატვირთვის დროს 1 წუთსა და 23 წამამდე ამცირებს, რაც მაინც ძალიან გრძელია საწარმოო დატვირთვისთვის, სადაც საჭიროა მასშტაბურობისა და საიმედოობის გათვალისწინება. მაგალითად, Amazon SageMaker-ს აქვს 60 წამის ლიმიტი მოთხოვნებზე პასუხის გასაცემად, რაც იმას ნიშნავს, რომ მოდელი უნდა ჩაიტვირთოს და პროგნოზები გაეშვას 60 წამში, რაც, ჩემი აზრით, სავსებით გონივრულია მოდელის/ენდპოინტის მასშტაბირებადობისა და საიმედოობის შესანარჩუნებლად თქვენი სამუშაო დატვირთვისთვის. თუ უფრო ხანგრძლივი პროგნოზები გჭირდებათ, შეგიძლიათ გამოიყენოთ `batch-transform`.
`Transformers`-ში `from_pretrained` მეთოდით ჩატვირთული მოდელები მიჰყვებიან PyTorch-ის რეკომენდებულ პრაქტიკას, რასაც BERT-ისთვის დაახლოებით 1.97 წამი სჭირდება. PyTorch გვთავაზობს მოდელების შენახვისა და ჩატვირთვის დამატებით ალტერნატიულ გზას `torch.save(model, PATH)` და `torch.load(PATH)` გამოყენებით. „ამ გზით მოდელის შენახვა შეინახავს მთელ მოდულს Python-ის `pickle` მოდულის გამოყენებით. ამ მიდგომის მინუსი ის არის, რომ სერიალიზებული მონაცემები მიბმულია კონკრეტულ კლასებსა და ზუსტ დირექტორიის სტრუქტურაზე, რომელიც მოდელის შენახვისას იყო გამოყენებული.“ ეს ნიშნავს, რომ როდესაც მოდელს ვინახავთ `transformers==4.13.2`-ით, ის პოტენციურად შეუთავსებელი შეიძლება იყოს `transformers==4.15.0`-ით ჩატვირთვის მცდელობისას.
თუმცა, მოდელების ამ გზით ჩატვირთვა ამცირებს ჩატვირთვის დროს დაახლოებით ~12-ჯერ, BERT-ისთვის 0.166 წამამდე. ამის GPT-J-ზე გამოყენება ნიშნავს, რომ ჩვენ შეგვიძლია შევამციროთ ჩატვირთვის დრო 1 წუთი და 23 წამიდან 7.7 წამამდე, რაც დაახლოებით ~10.5-ჯერ უფრო სწრაფია. მოდელების შენახვისა და ჩატვირთვის ამ მეთოდით, ჩვენ მივაღწიეთ GPT-J-ისთვის მოდელის ჩატვირთვის ისეთ შესრულებას, რომელიც თავსებადია საწარმოო სცენარებთან. მაგრამ უნდა გვახსოვდეს, რომ საჭიროა შევათანხმოთ: PyTorch-ისა და Transformers-ის ვერსიები მოდელის `torch.save(model,PATH)`-ით შენახვისას და `torch.load(PATH)`-ით ჩატვირთვისას, რათა თავიდან ავიცილოთ შეუთავსებლობა. ჩვენი `torch.load()`-თან თავსებადი მოდელის ფაილის შესაქმნელად, ჩვენ ვტვირთავთ GPT-J-ს Transformers-ისა და `from_pretrained` მეთოდის გამოყენებით, შემდეგ კი ვინახავთ მას `torch.save()`-ით. ახლა ჩვენ შეგვიძლია ჩავტვირთოთ ჩვენი GPT-J მოდელი `torch.load()`-ით პროგნოზების გასაშვებად.
რადგან შეგვიძლია ჩვენი მოდელი სწრაფად ჩავტვირთოთ და მასზე ინფერენსი გავუშვათ, მოდით განვათავსოთ იგი Amazon SageMaker-ზე. `Transformers`-ის Amazon SageMaker-ზე განთავსების ორი გზა არსებობს. შეგიძლიათ პირდაპირ „მოდელის განთავსება Hugging Face Hub-იდან“ ან „მოდელის განთავსება S3-ზე შენახული `model_data`-ით“. რადგან ჩვენ არ ვიყენებთ `Transformers`-ის ნაგულისხმევ მეთოდს, მეორე ვარიანტი უნდა ავირჩიოთ და ჩვენი ენდპოინტი S3-ზე შენახული მოდელით განვათავსოთ.
ამისთვის, ჩვენ უნდა შევქმნათ `model.tar.gz` არტიფაქტი, რომელიც შეიცავს ჩვენი მოდელის წონებს და დამატებით ფაილებს, რომლებიც გვჭირდება ინფერენსისთვის, მაგალითად, `tokenizer.json`. ჩვენ გთავაზობთ ატვირთულ და საჯაროდ ხელმისაწვდომ `model.tar.gz` არტიფაქტებს, რომლებიც შეიძლება გამოყენებულ იქნას `HuggingFaceModel`-თან ერთად GPT-J-ის Amazon SageMaker-ზე განსათავსებლად. იხილეთ „GPT-J-ის განთავსება Amazon SageMaker Endpoint-ად“ მათი გამოყენების შესახებ. თუ თქვენ მაინც გსურთ ან გჭირდებათ საკუთარი `model.tar.gz`-ის შექმნა, მაგალითად, შესაბამისობის სახელმძღვანელო მითითებების გამო, შეგიძლიათ გამოიყენოთ დამხმარე სკრიპტი `convert_gpt.py`, რომელიც ქმნის `model.tar.gz`-ს და ტვირთავს მას S3-ზე. `convert_gpt.py`-მ უნდა დაბეჭდოს S3 URI მსგავსი `s3://hf-sagemaker-inference/gpt-j/model.tar.gz`. ჩვენი Amazon SageMaker Endpoint-ის განსათავსებლად...
თეგები:
#ოპტიმიზაცია
#დიდი ენობრივი მოდელები
#hugging face
#pytorch
#aws
#amazon sagemaker
#eleutherai
#gpt-j
#დეპლოირება
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ხელოვნური ინტელექტი
Anthropic-ის Claude-ის აღზევება Apple App Store-ის რეიტინგებში პენტაგონთან მოლაპარაკებების ფონზე
ხელოვნური ინტელექტი
ტრამპის ადმინისტრაცია Anthropic-ს სანქციებს უწესებს ხელოვნური ინტელექტის გამოყენებაზე უარის გამო: ექსპერტი ინდუსტრიის უსაფრთხოების ხარვეზებზე საუბრობს
ხელოვნური ინტელექტი