Senaryonun bir yönü, bir makine öğrenimi modeli oluşturmaktır. Gerçek dünyada kullanılabilir olmalı ve tüketicilere ve geliştiricilere açık olmalıdır.
Makine öğrenimi modellerini dağıtmanın en basit ve en popüler yolu, onları bir REST API'sine dahil etmektir.
FastAPI adlı popüler bir kitaplıkla, bugün tam olarak bunu başaracağız.
Ama, ne HızlıAPI?
FastAPI Python web çerçevesi, çağdaş Python özelliklerinden yararlanmak için sıfırdan oluşturuldu.
İstemcilerle eşzamansız, eşzamanlı iletişim için ASGI standardına bağlı kalırken WSGI'yi de kullanabilir.
Uç noktalar ve rotaların her ikisi de zaman uyumsuz işlevler kullanabilir. Ek olarak FastAPI, web uygulamalarının yazım ipuçlarıyla, temiz, çağdaş Python kodunda verimli bir şekilde oluşturulmasını sağlar.
FastAPI'nin ana kullanım durumu, adından da anlaşılacağı gibi, API uç noktaları oluşturmaktır.
Etkileşimli bir Swagger UI içeren OpenAPI standardını kullanmak veya Python sözlük verilerini JSON olarak sağlamak, bunu başarmanın basit yollarıdır. Ancak FastAPI yalnızca API'ler için değildir.
Jinja2 şablon motorunu kullanarak standart web sayfaları sunmak ve bir web çerçevesinin yapabileceği hemen hemen her şeye ek olarak WebSockets kullanan uygulamalar sunmak için kullanılabilir.
Bu makalede, basit bir makine öğrenimi modeli geliştireceğiz ve ardından bunu dağıtmak için FastAPI'yi kullanacağız. Hadi başlayalım.
FastAPI kurulumu ve ilk API'nin oluşturulması
Önce kitaplığın ve bir ASGI sunucusunun kurulması gerekir; Uvuicorn veya Hypercorn çalışacaktır. Terminale aşağıdaki komutu girerek çalışır:
API oluşturulduğuna göre, tercih ettiğiniz kod düzenleyiciyi kullanabilir ve ona göz atabilirsiniz. Başlamak için ml_model.py adlı bir Python betiği oluşturun. Sizinkine farklı bir isim verebilirsiniz, ancak bu yazı için bu dosyaya ml_model.py olarak değineceğim.
İki uç nokta ile basit bir API oluşturmak için aşağıdaki görevleri tamamlamanız gerekir:
- FastAPI ve Uvicorn kitaplıklarını içe aktarın.
- Bir FastAPI sınıfı örneği ayarlayın.
- Dizin sayfasında basit bir JSON nesnesi üreten ilk rotayı bildirin.
- Özelleştirilmiş bir mesajla basit bir JSON nesnesi sağlayan ikinci yolu bildirin. name parametresi doğrudan URL'den alınır (örneğin, https://127.0.0.1:8000/Jay).
- API'yi çalıştırmak için Uvicorn'u kullanın.
Bu beş aşamanın uygulanması, aşağıdaki kod bitinde gösterilmiştir, yani. basit bir API oluşturma
Hepsi tamam! Hemen API'mizi çalıştıralım. Bunu gerçekleştirmek için ml model.py dosyasının yanında bir Terminal penceresi açın. Ardından, aşağıdakileri girin:
Enter tuşuna basın. Devam etmeden önce, bu iddiayı çürütelim. İlk uygulama, uzantı olmadan yalnızca Python dosya adını kullanır. İkinci uygulama, FastAPI örneğiniz ile aynı ada sahip olmalıdır.
-reload kullanarak, API'ye dosyayı kaydettiğinizde sıfırdan başlamak yerine otomatik olarak yeniden yüklenmesini istediğinizi söylersiniz.
Şimdi bir tarayıcı başlatın ve https://127.0.0.1:8000; sonuç aşağıdaki gibi görünmelidir:
Artık FastAPI kullanarak basit bir API'nin nasıl oluşturulacağını anlıyorsunuz.
Makine Öğrenimi modelini oluşturma ve eğitme
Herhangi bir veri toplamadan veya analiz etmeden, sadece basit bir model eğiteceğiz. Bunlar, modellerin konuşlandırılmasıyla ilgisizdir ve eldeki konu için gerekli değildir.
Iris veri setine dayalı bir model aynı kullanılarak kurulabilir. sinir ağı Yükleme metodu.
Ve biz de tam olarak bunu yapacağız: Iris veri kümesi ve modeli eğitin. Bu basit olmayacak. Başlamak için jaysmlmodel.py adlı bir dosya oluşturun.
İçinde şunları yapacaksınız:
- İçe Aktarmalar — Pandalara, scikit-RandomForecastClassifier'a, Learn's pydantic'in BaseModel'ine (nedenini sonraki adımda keşfedeceksiniz) ve modelleri depolamak ve yüklemek için joblib'e ihtiyacınız olacak.
- Temel modelden devralan bir IrisSpecies sınıfı bildirin. Bu sınıf yalnızca tek bir çiçek türünü tahmin etmek için gereken alanları içerir (bir sonraki bölümde daha fazlası)
- Bir sınıf oluşturun. IrisModel bir model eğitim ve tahmin aracıdır.
- IrisModel içinde _train modeli adlı bir yöntem bildirin. Rastgele Ormanlar tekniğini kullanarak modelleri eğitmek için kullanılır. Eğitilen model, prosedür tarafından döndürülür.
- IrisModel içinde tahmin edilen bir tür işlevi bildirin. 4 girdi faktörüne (çiçek ölçümleri) dayalı tahmin yapmak için kullanılır. Hem tahmin (çiçek türleri) hem de tahmin olasılığı algoritma tarafından döndürülür.
- IrisModel'deki yapıcıyı, Iris veri kümesini yükleyecek ve model klasörde yoksa modeli eğitecek şekilde değiştirin. Bu, yeni modellerin tekrar tekrar eğitilmesi sorununu çözer. Model yükleme ve kaydetme için joblib kütüphanesinden yararlanılır.
İşte kodun tamamı:
Umarım yukarıdaki liste ve yorumlar, oluşturulacak oldukça büyük bir kod olmasına rağmen kavramayı kolaylaştırmıştır. Şimdi bu model geliştirildiğine göre, tahmin yeteneklerini bir dizi üzerinden yayınlayalım. REST API.
Tam bir REST API'si oluşturma
ml_model.py dosyasına dönün ve tüm verileri temizleyin. Kazan plakası temelde daha önce sahip olduğunuzla aynı olacaktır, ancak boş bir dosya ile baştan başlamalıyız.
Bu sefer sadece çiçeğin türünü belirlemek için kullanılan bir bitiş noktası tanımlayacaksınız. Önceki bölümde açıklanan IrisModel.predict tür(), tahmini gerçekleştirmek için bu uç nokta tarafından çağrılır.
İstek türü diğer büyük değişikliktir. Parametreleri URL yerine JSON'da iletmek için kullanırken POST kullanmanız önerilir. makine öğrenme API'leri.
Eğer bir erkekseniz, yukarıdaki cümle anlamsız gelebilir. veri bilimcisi, ama sorun değil. Modelleri tasarlamak ve dağıtmak için HTTP istekleri ve REST API'leri konusunda uzman olmanız gerekmez.
ml model.py için görevler az ve basittir:
- Önceden oluşturulmuş jaymlmodel.py dosyasından şunları içe aktarmalısınız: uvicorn, FastAPI, IrisModel ve IrisSpecies.
- FastAPI ve IrisModel örnekleri oluşturun.
- Tahmin yapmak için https://127.0.0.1:8000/predict adresinde bir işlev bildirin.
- IrisModel.predict türler() yöntemi, IrisSpecies türünde bir nesne alır, onu bir sözlüğe dönüştürür ve sonra onu döndürür. Getiriler, beklenen sınıf ve tahmin edilen olasılıktır.
- API'yi yürütmek için uvicorn kullanın.
Yine, yorumlarıyla birlikte tüm dosyanın kodunu burada bulabilirsiniz:
Tek yapman gereken bu. Bir sonraki adımda API'yi test edelim.
API'yi test etme
API'yi çalıştırmak için aşağıdaki satırı Terminal'e tekrar girin: uvicorn ml_model:app –reload
Dokümantasyon sayfası şu şekilde görünür:
Bugünlük bu kadar. Bundan sonraki kısımda, bitirelim.
Sonuç
Bugün, hem basit bir API örneği hem de basit bir makine öğrenimi örneği kullanarak FastAPI'nin ne olduğunu ve nasıl kullanılacağını öğrendiniz. API belgelerinin nasıl oluşturulacağını ve görüntüleneceğini ve bunun nasıl test edileceğini de öğrendiniz.
Bu tek bir parça için çok fazla, bu yüzden doğru bir şekilde anlamak için birkaç okuma alırsa şaşırmayın.
Mutlu kodlama.
Yorum bırak