სცენარის ერთი ასპექტია მანქანათმცოდნეობის მოდელის შექმნა. ის უნდა იყოს გამოსაყენებელი რეალურ სამყაროში და ხელმისაწვდომი იყოს მომხმარებლებისა და დეველოპერებისთვის.
მანქანათმცოდნეობის მოდელების განლაგების უმარტივესი და ყველაზე პოპულარული გზაა მათი REST API-ში ჩასმა.
პოპულარული ბიბლიოთეკით სახელწოდებით FastAPI, სწორედ ამას მივაღწევთ დღეს.
მაგრამ, რა არის FastAPI?
FastAPI Python ვებ ჩარჩო შეიქმნა თავიდანვე, რათა ისარგებლოს თანამედროვე Python შესაძლებლობებით.
კლიენტებთან ასინქრონული, კონკურენტული კომუნიკაციისთვის, ის იცავს ASGI სტანდარტს, ხოლო მას ასევე შეუძლია გამოიყენოს WSGI.
საბოლოო წერტილებსა და მარშრუტებს შეუძლიათ გამოიყენონ ასინქრონული ფუნქციები. გარდა ამისა, FastAPI საშუალებას გაძლევთ შექმნათ ვებ აპლიკაციების პროდუქტიული ტიპით, სუფთა, თანამედროვე Python კოდით.
FastAPI-ის ძირითადი გამოყენების შემთხვევაა, როგორც სახელიდან ჩანს, API ბოლო წერტილების შექმნა.
OpenAPI სტანდარტის გამოყენება, რომელიც მოიცავს ინტერაქტიულ Swagger UI-ს, ან Python ლექსიკონის მონაცემების JSON სახით მიწოდება, ამის მისაღწევად ორივე მარტივი გზაა. თუმცა, FastAPI არ არის მხოლოდ API-ებისთვის.
ის შეიძლება გამოყენებულ იქნას სტანდარტული ვებ გვერდების შეთავაზებისთვის Jinja2 შაბლონის ძრავის გამოყენებით და აპლიკაციების მოსამსახურებლად, რომლებიც იყენებენ WebSockets-ს, გარდა თითქმის ყველაფრისა, რაც ვებ ჩარჩოს შეუძლია გააკეთოს.
ამ სტატიაში ჩვენ შევიმუშავებთ მანქანური სწავლის მარტივ მოდელს და შემდეგ გამოვიყენებთ FastAPI-ს მის გასავრცელებლად. Მოდით დავიწყოთ.
FastAPI-ის ინსტალაცია და პირველი API-ს შექმნა
პირველ რიგში საჭიროა ბიბლიოთეკის და ASGI სერვერის დაყენება; ან Uvuicorn ან Hypercorn იმუშავებს. ის მუშაობს ტერმინალში შემდეგი ბრძანების შეყვანით:
ახლა, როდესაც API შეიქმნა, შეგიძლიათ გამოიყენოთ სასურველი კოდის რედაქტორი და დაათვალიეროთ იგი. დასაწყებად შექმენით პითონის სკრიპტი სახელწოდებით ml_model.py. მოგესალმებათ თქვენი სახელის დასახელება, მაგრამ ამ პოსტის გულისთვის მე ამ ფაილს მოვიხსენიებ, როგორც ml_model.py.
პირდაპირი API-ის შესაქმნელად ორი ბოლო წერტილით, თქვენ უნდა შეასრულოთ შემდეგი ამოცანები:
- FastAPI და Uvicorn ბიბლიოთეკების იმპორტი.
- დააყენეთ FastAPI კლასის ინსტანცია.
- გამოაცხადეთ პირველი მარშრუტი, რომელიც ინდექსის გვერდზე აწარმოებს პირდაპირ JSON ობიექტს.
- გამოაცხადეთ მეორე მარშრუტი, რომელიც უზრუნველყოფს პირდაპირ JSON ობიექტს მორგებული შეტყობინებით. სახელის პარამეტრი აღებულია პირდაპირ URL-დან (მაგალითად, https://127.0.0.1:8000/Jay).
- გამოიყენეთ Uvicorn API-ს გასაშვებად.
ამ ხუთი ეტაპის განხორციელება ნაჩვენებია კოდის შემდეგ ბიტში, ე.ი. მარტივი API-ს შექმნა
Ყველაფერი შესრულებულია! მოდით დაუყოვნებლივ გავუშვათ ჩვენი API. ამის შესასრულებლად გახსენით ტერმინალის ფანჯარა ml model.py ფაილის გვერდით. შემდეგი, შეიყვანეთ შემდეგი:
Enter გასაღები. სანამ გავაგრძელებთ, მოდით ამ მტკიცებას უარვყოთ. პირველი აპლიკაცია იყენებს პითონის ფაილის სახელს მარტო, გაფართოების გარეშე. მეორე აპს უნდა ჰქონდეს იგივე სახელი, როგორც თქვენი FastAPI ეგზემპლარი.
-reload-ის გამოყენებით, თქვენ ეუბნებით API-ს, რომ გსურთ ის ავტომატურად გადაიტვირთოს ფაილის შენახვისას და არა ნულიდან დაწყებისას.
ახლა გაუშვით ბრაუზერი და გადადით https://127.0.0.1:8000; შედეგი უნდა გამოჩნდეს შემდეგნაირად:
თქვენ ახლა გესმით, თუ როგორ უნდა შექმნათ მარტივი API FastAPI გამოყენებით.
მანქანათმცოდნეობის მოდელის შექმნა და სწავლება
რაიმე მონაცემების შეგროვების ან ანალიზის გარეშე, ჩვენ უბრალოდ მოვამზადებთ მარტივ მოდელს. ეს არ არის დაკავშირებული მოდელების გავრცელებასთან და არ არის არსებითი მოცემული თემისთვის.
მოდელი, რომელიც დაფუძნებულია Iris მონაცემთა ბაზაზე, შეიძლება დამონტაჟდეს იმავე გამოყენებით ნერვული ქსელის ინსტალაციის მეთოდი.
და ჩვენ მხოლოდ ამას გავაკეთებთ: ჩამოტვირთეთ ირისის მონაცემთა ბაზა და მოამზადე მოდელი. ეს არ იქნება მარტივი. დასაწყებად შექმენით ფაილი სახელად jaysmlmodel.py.
მასში თქვენ გააკეთებთ შემდეგს:
- იმპორტი — დაგჭირდებათ პანდები, scikit-RandomForecastClassifier, Learn's pydantic's BaseModel (ამას გაიგებთ შემდეგ ეტაპზე) და joblib მოდელების შესანახად და ჩატვირთვისთვის.
- გამოაცხადეთ IrisSpecies კლასი, რომელიც მემკვიდრეობით იღებს საბაზისო მოდელს. ეს კლასი შეიცავს მხოლოდ ველებს, რომლებიც საჭიროა ერთი ყვავილის სახეობის პროგნოზირებისთვის (დაწვრილებით შემდეგ ნაწილში)
- შექმენით კლასი. IrisModel არის მოდელის სასწავლო და პროგნოზირების ინსტრუმენტი.
- გამოაცხადეთ მეთოდი სახელად _train model IrisModel-ში. იგი გამოიყენება მოდელების მოსამზადებლად შემთხვევითი ტყეების ტექნიკის გამოყენებით. გაწვრთნილი მოდელი უბრუნდება პროცედურას.
- გამოაცხადეთ პროგნოზირებული სახეობის ფუნქცია IrisModel-ში. იგი გამოიყენება პროგნოზირებისთვის 4 შეყვანის ფაქტორზე (ყვავილების გაზომვები). როგორც პროგნოზი (ყვავილების სახეობა) ასევე პროგნოზირების ალბათობა ბრუნდება ალგორითმით.
- შეცვალეთ კონსტრუქტორი IrisModel-ში ისე, რომ მან ჩატვირთოს Iris მონაცემთა ნაკრები და მოამზადოს მოდელი, თუ ის აკლია საქაღალდეში. ეს წყვეტს ახალი მოდელების განმეორებით მომზადების პრობლემას. joblib ბიბლიოთეკა გამოიყენება მოდელის ჩატვირთვისა და შესანახად.
აქ არის მთელი კოდი:
ვიმედოვნებ, რომ ზემოთ ჩამოთვლილმა სიამ და კომენტარებმა გაადვილეს აღქმა, მიუხედავად იმისა, რომ ეს იყო საკმაოდ დიდი კოდის შექმნა. ახლა, როდესაც ეს მოდელი შემუშავებულია, მოდით გამოვაქვეყნოთ მისი პროგნოზირების შესაძლებლობები ა REST API.
სრული REST API-ის აგება
დაბრუნდით ml_model.py ფაილში და გაასუფთავეთ ყველა მონაცემი. ქვაბის ფირფიტა არსებითად იგივე იქნება, რაც ადრე გქონდათ, მაგრამ თავიდან უნდა დავიწყოთ ცარიელი ფაილით.
თქვენ ამჯერად განსაზღვრავთ მხოლოდ ერთ ბოლო წერტილს, რომელიც გამოიყენება ყვავილის ტიპის დასადგენად. IrisModel.predict species(), რომელიც გამოცხადდა წინა განყოფილებაში, გამოიძახება ამ ბოლო წერტილით პროგნოზის განსახორციელებლად.
მოთხოვნის ტიპი სხვა დიდი ცვლილებაა. JSON-ში პარამეტრების გადასაცემად და არა URL-ში, რეკომენდებულია გამოიყენოთ POST გამოყენებისას მანქანა სწავლის API-ები.
ზემოხსენებული წინადადება შეიძლება ჟღერადობდეს, თუ თქვენ ხართ ა მონაცემთა მეცნიერი, მაგრამ არაუშავს. მოდელების შესაქმნელად და განსათავსებლად, სულაც არ არის საჭირო იყო ექსპერტი HTTP მოთხოვნებისა და REST API-ების შესახებ.
ამოცანები ml model.py-სთვის არის რამდენიმე და მარტივი:
- თქვენ უნდა შემოიტანოთ შემდეგი ფაილი ადრე შექმნილი jaymlmodel.py ფაილიდან: uvicorn, FastAPI, IrisModel და IrisSpecies.
- შექმენით FastAPI და IrisModel-ის ეგზემპლარები.
- გამოაცხადეთ ფუნქცია https://127.0.0.1:8000/predict პროგნოზების გასაკეთებლად.
- IrisModel.predict species() მეთოდი იღებს IrisSpecies ტიპის ობიექტს, გარდაქმნის მას ლექსიკონად და შემდეგ აბრუნებს. ანაზღაურება არის მოსალოდნელი კლასი და სავარაუდო ალბათობა.
- გამოიყენეთ uvicorn API-ს შესასრულებლად.
კიდევ ერთხელ, აქ არის მთელი ფაილის კოდი მის კომენტარებთან ერთად:
ეს არის ყველაფერი რაც თქვენ უნდა გააკეთოთ. შემდეგ ეტაპზე, მოდით შევამოწმოთ API.
API-ს ტესტირება
ხელახლა შეიყვანეთ შემდეგი ხაზი ტერმინალში API-ს შესასრულებლად: uvicorn ml_model:app –reload
ასე ჩნდება დოკუმენტაციის გვერდი:
ასე რომ, ეს დღეისთვის. ამის შემდეგ ნაწილში დავასკვნათ.
დასკვნა
დღეს თქვენ ისწავლეთ რა არის FastAPI და როგორ გამოიყენოთ იგი, როგორც მარტივი API მაგალითის, ასევე მანქანური სწავლების მარტივი მაგალითის გამოყენებით. თქვენ ასევე ისწავლეთ როგორ შექმნათ და ნახოთ API დოკუმენტაცია, ასევე როგორ შეამოწმოთ იგი.
ეს ბევრია ერთი ნაწილისთვის, ასე რომ, ნუ გაგიკვირდებათ, თუ სწორად გაგებას რამდენიმე კითხვა დასჭირდება.
ბედნიერი კოდირება.
დატოვე პასუხი