როგორ გავუშვათ Stable Diffusion Apple-ის მოწყობილობებზე Core ML-ის გამოყენებით
Apple-ის რეპოზიტორიუმი გვთავაზობს Stable Diffusion-ის კონვერტაციის სკრიპტებსა და დასკვნის (inference) კოდს Core ML-ისთვის. სიმარტივისთვის, მოდელების Core ML ვერსიები უკვე გადაყვანილია და ხელმისაწვდომია Hugging Face Hub-ზე. ასევე, შეიქმნა მშობლიური Swift აპლიკაცია, რომელიც Mac App Store-სა და ღია კოდის სახითაა გამოქვეყნებული, რათა მომხმარებლებმა მარტივად გაუშვან Stable Diffusion საკუთარ აპარატურაზე. სტატია დეტალურად აღწერს, თუ როგორ გამოიყენოთ კონვერტირებული წონები, ან თავად გადაიყვანოთ დამატებით
Apple-ის ეს რეპოზიტორიუმი გთავაზობთ კონვერტაციის სკრიპტებს და დასკვნის (inference) კოდს, რომელიც ეფუძნება 🧨 Diffusers-ს, და ჩვენ აღფრთოვანებულები ვართ ამით! იმისათვის, რომ პროცესი მაქსიმალურად მარტივი ყოფილიყო თქვენთვის, ჩვენ თავად გადავიყვანეთ წონები (weights) და მოდელების Core ML ვერსიები განვათავსეთ Hugging Face Hub-ში.
განახლება: ამ პოსტის დაწერიდან რამდენიმე კვირის შემდეგ, ჩვენ შევქმენით მშობლიური Swift აპლიკაცია, რომლის გამოყენებითაც შეგიძლიათ Stable Diffusion-ის გაშვება მარტივად თქვენს აპარატურაზე. აპლიკაცია გამოვიდა Mac App Store-ში, ისევე როგორც მისი საწყისი კოდი, რათა სხვა პროექტებმაც შეძლონ მისი გამოყენება.
ამ პოსტის დანარჩენი ნაწილი გიჩვენებთ, თუ როგორ გამოიყენოთ კონვერტირებული წონები საკუთარ კოდში ან თავად გადაიყვანოთ დამატებითი წონები.
ოფიციალური Stable Diffusion-ის საგუშაგო წერტილები (checkpoints) უკვე კონვერტირებულია და მზადაა გამოსაყენებლად: Core ML მხარს უჭერს თქვენს მოწყობილობაში არსებულ ყველა გამოთვლით ერთეულს: CPU, GPU და Apple-ის ნერვულ ძრავას (NE). ასევე შესაძლებელია, Core ML-მა მოდელის სხვადასხვა ნაწილები სხვადასხვა მოწყობილობებზე გაუშვას, რათა მაქსიმალური იყოს შესრულება.
თითოეული მოდელის რამდენიმე ვარიანტი არსებობს, რომლებმაც შესაძლოა განსხვავებული წარმადობა აჩვენონ თქვენი აპარატურის მიხედვით. გირჩევთ, სცადოთ ისინი და შეარჩიოთ ის, რომელიც საუკეთესოდ მუშაობს თქვენს სისტემაზე. დეტალებისთვის განაგრძეთ კითხვა. თითოეული მოდელის რამდენიმე ვარიანტია:
ამ სტატიის დაწერის მომენტში, ჩვენ მივიღეთ საუკეთესო შედეგები ჩემს MacBook Pro-ზე (M1 Max, 32 GPU ბირთვი, 64 GB) შემდეგი კომბინაციის გამოყენებით: ამ კონფიგურაციით, 18 წამი დასჭირდა ერთი სურათის გენერირებას Stable Diffusion v1.4-ის Core ML ვერსიით 🤯.
⚠️ შენიშვნა: Core ML-ში რამდენიმე გაუმჯობესება დაინერგა macOS Ventura 13.1-ში და ისინი აუცილებელია Apple-ის იმპლემენტაციისთვის. შესაძლოა მიიღოთ შავი გამოსახულებები – და ბევრად ნელი მუშაობის დრო – თუ იყენებთ macOS-ის წინა ვერსიებს.
თითოეული მოდელის რეპოზიტორიუმი ორგანიზებულია ხისებრ სტრუქტურაში, რომელიც უზრუნველყოფს ამ განსხვავებულ ვარიანტებს: შეგიძლიათ ჩამოტვირთოთ და გამოიყენოთ თქვენთვის საჭირო ვარიანტი, როგორც ნაჩვენებია ქვემოთ. Python-ში დასკვნის (inference) გასაშვებად, თქვენ უნდა გამოიყენოთ packages საქაღალდეებში შენახული ერთ-ერთი ვერსია, რადგან კომპილირებული ვერსიები მხოლოდ Swift-თან არის თავსებადი.
შეგიძლიათ აირჩიოთ, გსურთ თუ არა გამოიყენოთ ორიგინალი ან split_einsum ყურადღების სტილები (attention styles). ასე ჩამოტვირთავთ ორიგინალურ ყურადღების ვარიანტს Hub-იდან: ზემოთ მოცემული კოდი გადმოწერილ მოდელის სნეპშოტს მოათავსებს models სახელწოდების დირექტორიაში. მოდელის სნეპშოტის ჩამოტვირთვის შემდეგ, დასკვნის (inference) გაშვების უმარტივესი გზა იქნება Apple-ის Python სკრიპტის გამოყენება.
უნდა მიუთითებდეს იმ საგუშაგო წერტილზე (checkpoint), რომელიც წინა ეტაპზე გადმოწერეთ, ხოლო --compute-unit მიუთითებს აპარატურას, რომლის გამოყენებაც გსურთ დასკვნისთვის (inference). ეს უნდა იყოს ერთ-ერთი შემდეგი ვარიანტი: ALL, CPU_AND_GPU, CPU_ONLY, CPU_AND_NE. ასევე შეგიძლიათ მიუთითოთ სურვილისამებრ გამომავალი გზა (output path) და seed-ი რეპროდუცირებადობისთვის. დასკვნის (inference) სკრიპტი იყენებს Stable Diffusion მოდელის ორიგინალურ ვერსიას, რომელიც Hub-ში ინახება როგორც CompVis/stable-diffusion-v1-4. თუ იყენებთ სხვა მოდელს, მისი Hub ID უნდა მიუთითოთ დასკვნის (inference) ბრძანების სტრიქონში, --model-version ოფციის გამოყენებით. ეს მუშაობს როგორც უკვე მხარდაჭერილი მოდელებისთვის, ასევე თქვენ მიერ გაწვრთნილი ან დაზუსტებული (fine-tuned) მორგებული მოდელებისთვის. Stable Diffusion 1.5-ისთვის (Hub ID: runwayml/stable-diffusion-v1-5): Stable Diffusion 2 base-ისთვის (Hub ID: stabilityai/stable-diffusion-2-base):
დასკვნის (inference) გაშვება Swift-ში ოდნავ უფრო სწრაფია, ვიდრე Python-ში, რადგან მოდელები უკვე კომპილირებულია mlmodelc ფორმატში. ეს შესამჩნევი იქნება აპლიკაციის გაშვებისას, როდესაც მოდელი იტვირთება, მაგრამ არ უნდა იყოს შესამჩნევი, თუ რამდენიმე გენერაციას გაუშვებთ შემდგომ.
Swift-ში დასკვნის (inference) გასაშვებად თქვენს Mac-ზე, გჭირდებათ კომპილირებული საგუშაგო წერტილების (checkpoint) ერთ-ერთი ვერსია. გირჩევთ, ჩამოტვირთოთ ისინი ლოკალურად Python კოდის გამოყენებით, მსგავსი იმისა, რაც ზემოთ ვაჩვენეთ, მაგრამ კომპილირებული ვარიანტებიდან ერთ-ერთის გამოყენებით: დასკვნის (inference) გასაშვებად, გთხოვთ, კლონირება მოახდინოთ Apple-ის რეპოზიტორიუმის: შემდეგ კი გამოიყენეთ Apple-ის ბრძანების ხაზის ინსტრუმენტი Swift Package Manager-ის საშუალებებით:
თქვენ უნდა მიუთითოთ --resource-path-ში წინა ეტაპზე ჩამოტვირთული საგუშაგო წერტილებიდან (checkpoints) ერთ-ერთი, ამიტომ გთხოვთ, დარწმუნდეთ, რომ ის შეიცავს კომპილირებულ Core ML პაკეტებს .mlmodelc გაფართოებით. --compute-units უნდა იყოს ერთ-ერთი შემდეგი მნიშვნელობა: all, cpuOnly, cpuAndGPU, cpuAndNeuralEngine. დამატებითი დეტალებისთვის, გთხოვთ, იხილოთ ინსტრუქციები Apple-ის რეპოზიტორიუმში.
თუ თქვენ შექმენით საკუთარი მოდელები, რომლებიც თავსებადია Stable Diffusion-თან (მაგალითად, თუ გამოიყენეთ Dreambooth, Textual Inversion ან fine-tuning), მაშინ მოდელები თავად უნდა გადაიყვანოთ. საბედნიეროდ, Apple გთავაზობთ კონვერტაციის სკრიპტს, რომელიც ამის საშუალებას გაძლევთ. ამ ამოცანისთვის, გირჩევთ, მიჰყვეთ ამ ინსტრუქციებს.
ჩვენ ნამდვილად აღფრთოვანებულები ვართ იმ შესაძლებლობებით, რასაც ეს სიახლე გვთავაზობს და მოუთმენლად ველით, თუ რას შექმნის საზოგადოება ამის საფუძველზე. ზოგიერთი პოტენციური იდეაა: მოუთმენლად ველით თქვენს ნამუშევრებს! მეტი სტატია ჩვენი ბლოგიდან · დარეგისტრირდით ან შეხვიდეთ კომენტარის დასატოვებლად.
თეგები:
#ხელოვნური ინტელექტი
#apple
#მანქანური სწავლება
#გენერაციული ai
#macos
#stable diffusion
#core ml
#python
#swift
#diffusers
#mac
წყარო: huggingface.co
AI-ით გადამუშავებული