Toplu veya gerçek zamanlı çıkarım gerçekleştirmek için yüksek kaliteli, eğitilmiş makine öğrenimi (ML) modellerini devreye almak, müşterilere değer katmanın kritik bir parçasıdır. Ancak makine öğrenimi deneme süreci sıkıcı olabilir; uygulanması için önemli miktarda zaman gerektiren pek çok yaklaşım vardır. Bu nedenle, burada sağlananlar gibi önceden eğitilmiş makine öğrenimi modelleri PyTorch Modeli Hayvanat Bahçesi çok yardımseverler. Amazon Adaçayı Yapıcı farklı makine öğrenimi modelleriyle denemeler yapmak için birleşik bir arabirim sağlar ve PyTorch Model Hayvanat Bahçesi, modellerimizi standart bir şekilde kolayca değiştirmemize olanak tanır.
Bu blog gönderisi, SageMaker içindeki PyTorch Model Zoo'dan bir nesne algılama modeli kullanarak makine öğrenimi çıkarımının nasıl gerçekleştirileceğini gösterir. PyTorch Model Zoo'daki önceden eğitilmiş ML modelleri hazırdır ve ML uygulamalarının bir parçası olarak kolayca kullanılabilir. Bu makine öğrenimi modellerini bir SageMaker uç noktası olarak ayarlamak veya SageMaker Toplu Dönüştürme Bu blog gönderisinde belirtilen adımlarla çevrimiçi veya çevrimdışı çıkarım yapmak kolaydır. bir kullanacağız Daha hızlı R-CNN önceden tanımlanmış nesne sınıfları için sınırlayıcı kutuları tahmin etmek için nesne algılama modeli.
Daha Hızlı R-CNN nesne algılama modeli ağırlıklarını yüklemekten bunları bir Amazon Basit Depolama Hizmeti (Amazon S3) kova ve bir giriş noktası dosyası yazmak ve PyTorchModel API'sindeki anahtar parametreleri anlamak. Son olarak, ML modelini konuşlandıracağız, SageMaker Batch Transform kullanarak onun üzerinde çıkarımlar yapacağız ve ML modeli çıktısını inceleyeceğiz ve sonuçların nasıl yorumlanacağını öğreneceğiz. Bu çözüm, PyTorch Model Zoo'da önceden eğitilmiş herhangi bir modele uygulanabilir. Mevcut modellerin listesi için bkz. PyTorch Modeli Hayvanat Bahçesi belgeleri.
Çözüme genel bakış
Bu blog gönderisi aşağıdaki adımlardan geçecektir. Tüm adımların tam çalışan versiyonu için bkz. create_pytorch_model_sagemaker.ipynb
- Adım 1: Kurulum
- 2. Adım: PyTorch Model Zoo'dan bir makine öğrenimi modeli yükleme
- 3. Adım Makine öğrenimi modeli yapılarını kaydedin ve Amazon S3'e yükleyin
- 4. Adım: ML modeli çıkarım betikleri oluşturma
- 5. Adım: Bir SageMaker toplu dönüştürme işini başlatma
- 6. Adım: Sonuçları görselleştirme
Mimari diyagram
Dizin yapısı
Bu blogun kodu burada bulunabilir GitHub deposu. Kod tabanı, makine öğrenimi modeli yapıları oluşturmak, dönüştürme işini başlatmak ve sonuçları görselleştirmek için ihtiyacımız olan her şeyi içerir.
Bu, kullandığımız iş akışıdır. Aşağıdaki adımların tümü bu yapıdaki modüllere atıfta bulunacaktır.
The sagemaker_torch_model_zoo
klasör içermelidir inference.py
model ağırlıklarını yüklemek ve kaydetmek, bir SageMaker model nesnesi oluşturmak ve son olarak bunu bir SageMaker toplu dönüştürme işine geçirmek için bir giriş noktası dosyası olarak ve create_pytorch_model_sagemaker.ipynb dosyası olarak. Kendi ML modellerinizi getirmek için not defterinin Adım 1: kurulum bölümündeki yolları değiştirin ve Adım 2: PyTorch Model Zoo bölümünden Adım XNUMX: Bir ML Modeli Yükleme bölümünde yeni bir model yükleyin. Aşağıdaki adımların geri kalanı aynı kalacaktır.
Adım 1: Kurulum
IAM rolleri
SageMaker, işlemleri SageMaker tarafından yönetilen altyapı üzerinde gerçekleştirir. SageMaker, yalnızca not defterinin SageMaker için eşlik eden IAM yürütme rolünde tanımlandığı şekilde izin verilen eylemleri gerçekleştirebilir. IAM rolleri oluşturma ve IAM izinlerini yönetme hakkında daha ayrıntılı belgeler için bkz. AWS SageMaker rol belgeleri. Yeni bir rol oluşturabiliriz veya SageMaker (Stüdyo) not defteriaşağıdaki kod satırlarını çalıştırarak varsayılan yürütme rolü:
Yukarıdaki kod, not defteri örneği için SageMaker yürütme rolünü alır. Bu, SageMaker veya SageMaker Studio not defteri örneğimiz için oluşturduğumuz IAM rolüdür.
Kullanıcı tarafından yapılandırılabilen parametreler
SageMaker toplu dönüştürme işimizi oluşturmak ve başlatmak için gereken tüm yapılandırılabilir parametreler şunlardır:
2. Adım: PyTorch Model Zoo'dan bir ML modeli yükleme
Ardından, PyTorch Model Zoo'dan bir nesne algılama modeli belirliyoruz ve ML model ağırlıklarını kaydediyoruz. Tipik olarak, bir PyTorch modelini .pt veya .pth dosya uzantılarını kullanarak kaydederiz. Aşağıdaki kod parçacığı, PyTorch Model Zoo'dan önceden eğitilmiş Faster R-CNN ResNet50 ML modelini indirir:
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(önceden eğitilmiş=Doğru)
SageMaker toplu dönüşümü, girdi olarak bazı model ağırlıkları gerektirir, bu nedenle önceden eğitilmiş makine öğrenimi modelini model.pt olarak kaydedeceğiz. Özel bir model yüklemek istiyorsak, bunun yerine başka bir PyTorch modelindeki model ağırlıklarını model.pt olarak kaydedebiliriz.
3. Adım: Makine öğrenimi modeli yapılarını kaydedin ve Amazon S3'e yükleyin
Makine öğrenimi çıkarımı için SageMaker kullanacağımız için model ağırlıklarını bir S3 klasörüne yüklememiz gerekiyor. Bunu aşağıdaki komutları kullanarak veya indirerek ve dosyayı doğrudan S3'e sürükleyip bırakarak yapabiliriz. Aşağıdaki komutlar önce içindeki dosya grubunu sıkıştıracaktır. model.pt
bir tarball'a kopyalayın ve model ağırlıklarını yerel makinemizden S3 klasörüne kopyalayın.
not: Aşağıdaki komutları çalıştırmak için, AWS Komut Satırı Arayüzü (AWS CLI) yüklü.
Ardından, giriş resmimizi S3'e kopyalıyoruz. Görüntü için tam S3 yolu aşağıdadır.
Başka bir aws s3 cp komutu ile bu imajı S3'e kopyalayabiliriz.
4. Adım: ML modeli çıkarım betikleri oluşturma
Şimdi giriş noktası dosyamızın üzerinden geçeceğiz, inference.py
modül. PyTorchModel sınıfını kullanarak SageMaker dışında eğitilmiş bir PyTorch modelini konuşlandırabiliriz. İlk olarak, PyTorchModelZoo nesnesini başlatıyoruz. Ardından, Amazon S3'te barındırılan örnek veriler üzerinde SageMaker toplu dönüşümünü kullanarak makine öğrenimi çıkarımı gerçekleştirmek için bir inference.py giriş noktası dosyası oluşturacağız.
PyTorchModel nesnesini anlama
The PyTorchModeli SageMaker Python API içindeki sınıf, indirilen model yapıtımızı kullanarak makine öğrenimi çıkarımı gerçekleştirmemize izin verir.
PyTorchModel sınıfını başlatmak için aşağıdaki giriş parametrelerini anlamamız gerekir:
name
: Model adı; benzersizlik için model adı + tarih saatini veya rastgele bir dizi + tarih saatini kullanmanızı öneririz.model_data
: Paketlenmiş makine öğrenimi modeli yapısının S3 URI'si.entry_point
: Gelen istekler için işleyicileri tanımlamak üzere çıkarım Docker görüntüsü tarafından kullanılacak kullanıcı tanımlı bir Python dosyası. Kod, model yüklemeyi, giriş ön işlemeyi, tahmin mantığını ve çıkış sonrası işlemeyi tanımlar.framework_version
: Otomatik PyTorch model yeniden paketlemesini etkinleştirmek için sürüm 1.2 veya üzerine ayarlanması gerekir.source_dir
: entry_point dosyasının dizini.role
: AWS hizmet istekleri yapmak için bir IAM rolü.image_uri
: Bu Amazon ECR Docker kapsayıcı görüntüsünü makine öğrenimi modeli bilgi işlem ortamı için bir temel olarak kullanın.sagemaker_session
: SageMaker oturumu.py_version
: Kullanılacak Python sürümü
Aşağıdaki kod parçacığı, önceden eğitilmiş PyTorch modelini kullanarak çıkarım gerçekleştirmek için PyTorchModel sınıfını başlatır:
Giriş noktası dosyasını anlama (inference.py)
entry_point parametresi, adlı bir Python dosyasına işaret eder. inference.py
. Bu giriş noktası, model yüklemeyi, giriş ön işlemeyi, tahmin mantığını ve çıkış sonrası işlemeyi tanımlar. Önceden oluşturulmuş PyTorch'ta makine öğrenimi modeli hizmet kodunu tamamlar SageMaker Derin Öğrenme Kapsayıcısı görüntü.
Inference.py
aşağıdaki işlevleri içerecektir. Örneğimizde, model_fn
, input_fn
, predict_fn
ve output_fn
geçersiz kılmak için işlevler varsayılan PyTorch çıkarım işleyicisi.
model_fn
: Çıkarım görüntüsündeki statik model kontrol noktalarını içeren bir dizini alır. Modeli belirtilen yoldan açar ve yükler ve bir PyTorch modeli döndürür.input_fn
: Gelen isteğin yükünü (request_body) ve gelen isteğin içerik türünü (request_content_type) girdi olarak alır. Veri kod çözme işlemlerini gerçekleştirir. Bu işlevin, modelin beklediği girdiye göre ayarlanması gerekir.predict_fn
: input_fn'de seri durumundan çıkarılan veriler üzerinde bir model çağırır. Yüklenen makine öğrenimi modeliyle seri durumundan çıkarılan nesne üzerinde tahmin gerçekleştirir.output_fn
: Tahmin sonucunu istenen yanıt içerik türüne seri hale getirir. tahmin_fn işlevinden elde edilen tahminleri JSON, CSV veya NPY biçimlerine dönüştürür.
5. Adım: Bir SageMaker toplu dönüştürme işini başlatma
Bu örnek için, bir SageMaker toplu dönüştürme işi aracılığıyla makine öğrenimi çıkarım sonuçlarını elde edeceğiz. Toplu dönüştürme işleri, kalıcı bir uç noktaya ihtiyaç duymadan veri kümelerinden bir kez çıkarımlar elde etmek istediğimizde en çok kullanışlıdır. bir örneğini oluşturuyoruz sagemaker.transformer.transformer SageMaker toplu dönüştürme işleri oluşturmak ve bunlarla etkileşim kurmak için nesne.
Toplu dönüştürme işi oluşturmak için şu adresteki belgelere bakın: YaratDönüşİş.
Adım 6: Tespitleri görselleştirme
SageMaker toplu dönüştürme işi bittiğinde, Amazon S3'ten makine öğrenimi çıkarım çıktılarını yükleyebiliriz. Bunun için şuraya gidin: AWS Yönetim Konsolu ve Amazon SageMaker'ı arayın. Sol panelde, altında sonuçBakın Toplu dönüştürme işleri.
Seçtikten sonra Toplu dönüştürme, tüm SageMaker toplu dönüştürme işlerini listeleyen web sayfasına bakın. En son iş uygulamamızın ilerlemesini görebiliriz.
İlk olarak, iş "Devam Ediyor" durumuna sahip olacaktır. Tamamlandığında, durumun Tamamlandı olarak değiştiğini görün.
Durum tamamlandı olarak işaretlendikten sonra, sonuçları görüntülemek için işi tıklayabiliriz. Bu web sayfası, yürüttüğümüz işin yapılandırmaları da dahil olmak üzere iş özetini içerir.
Altında Çıkış verileri yapılandırması, bir S3 çıkış yolu göreceğiz. ML çıkarım çıktımızı bulacağımız yer burasıdır.
S3 çıktı yolunu seçin ve çıktı verilerimizi içeren bir [image_name].[file_type].out dosyasına bakın. Çıktı dosyamız bir eşleme listesi içerecektir. Örnek çıktı:
Ardından, bu çıktı dosyasını işliyoruz ve tahminlerimizi görselleştiriyoruz. Aşağıda güven eşiğimizi belirtiyoruz. Sınıfların listesini şu adresten alıyoruz: COCO veri kümesi nesne eşlemesi. Çıkarım sırasında, model yalnızca giriş tensörlerini gerektirir ve sonradan işlenmiş tahminleri, her giriş görüntüsü için bir Liste[Dict[Tensor]] olarak döndürür. Dikte alanları aşağıdaki gibidir; burada N, algılama sayısıdır:
- kutuları (FloatTensor[N, 4]): tahmin edilen kutular
[x1, y1, x2, y2]
biçiminde0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
, BuradaW
görüntünün genişliği veH
görüntünün yüksekliği - etiketler (
Int64Tensor[N]
): her tespit için tahmin edilen etiketler - puanlar (
Tensor[N]
): her tespit için tahmin puanları
Çıktı hakkında daha fazla ayrıntı için bkz. PyTorch Daha Hızlı R-CNN FPN Belgeleri.
Model çıktısı, ilgili güven puanlarına sahip sınırlayıcı kutular içerir. Modelin emin olmadığı sınırlayıcı kutuları kaldırarak yanlış pozitiflerin görüntülenmesini optimize edebiliriz. Aşağıdaki kod parçacıkları, çıktı dosyasındaki tahminleri işler ve puanın güven eşiğimizin üzerinde olduğu tahminlerde sınırlayıcı kutular çizer. Olasılık eşiğini belirledik, CONF_THRESH
, bu örnek için .75'e.
Son olarak, çıktımızı anlamak için bu eşlemeleri görselleştiririz.
not: Resim not defterinizde görünmüyorsa, lütfen onu JupyterLab'in sol tarafındaki dizin ağacında bulun ve oradan açın.
Örnek kodu çalıştırma
Tam çalışan bir örnek için, kodu kopyalayın. amazon-sagemaker-örnekler GitHub ve içindeki hücreleri çalıştır create_pytorch_model_sagemaker.ipynb
not defteri.
Sonuç
Bu blog gönderisinde, SageMaker toplu dönüşümü kullanan PyTorch Model Zoo'dan bir nesne algılama modeli kullanarak makine öğrenimi çıkarımı gerçekleştirmenin uçtan uca bir örneğini sergiledik. Daha Hızlı R-CNN nesne algılama modeli ağırlıklarını yüklemeyi, bunları bir S3 klasörüne kaydetmeyi, bir giriş noktası dosyası yazmayı ve PyTorchModel API'sindeki temel parametreleri anlamayı ele aldık. Son olarak, modeli dağıttık ve makine öğrenimi modeli çıkarımı gerçekleştirdik, model çıktısını görselleştirdik ve sonuçları nasıl yorumlayacağımızı öğrendik.
Yazarlar Hakkında
Dipika Khullar makine öğrenimi mühendisi Amazon ML Çözümleri Laboratuvarı. Müşterilerin iş sorunlarını çözmeleri için makine öğrenimi çözümlerini entegre etmelerine yardımcı olur. En son olarak, medya müşterileri için eğitim ve çıkarım hatları ve pazarlama için tahmine dayalı modeller oluşturmuştur.
Marcelo Aberle AWS AI organizasyonunda bir Makine Öğrenimi Mühendisidir. Şurada MLOps çalışmalarına liderlik ediyor: Amazon ML Çözümleri Laboratuvarı, müşterilerin ölçeklenebilir makine öğrenimi sistemleri tasarlamasına ve uygulamasına yardımcı olur. Misyonu, müşterilere kurumsal makine öğrenimi yolculuklarında rehberlik etmek ve üretime giden makine öğrenimi yollarını hızlandırmaktır.
Ninad Kulkarni Uygulamalı Bilim Adamı Amazon ML Çözümleri Laboratuvarı. İş sorunlarını çözmek için çözümler geliştirerek müşterilerin makine öğrenimi ve yapay zekayı benimsemesine yardımcı olur. Son zamanlarda spor, otomotiv ve medya müşterileri için tahmine dayalı modeller geliştirmiştir.
Yash Shah şirketinde bir Bilim Yöneticisidir. Amazon ML Çözümleri Laboratuvarı. O ve uygulamalı bilim adamları ve makine öğrenimi mühendislerinden oluşan ekibi, sağlık, spor, otomotiv ve üretimden çeşitli makine öğrenimi kullanım durumları üzerinde çalışıyor.
- AI
- yapay zeka
- AI sanat üreteci
- yapay zeka robotu
- Amazon Makine Öğrenimi
- Amazon ML Çözümleri Laboratuvarı
- Amazon Adaçayı Yapıcı
- yapay zeka
- yapay zeka sertifikası
- bankacılıkta yapay zeka
- yapay zeka robotu
- yapay zeka robotları
- yapay zeka yazılımı
- AWS Makine Öğrenimi
- blockchain
- blockchain konferans ai
- zeka
- konuşma yapay zekası
- kripto konferans ai
- dal-e
- derin öğrenme
- google ai
- makine öğrenme
- Platon
- plato yapay zekası
- Plato Veri Zekası
- Plato Oyunu
- PlatoVeri
- plato oyunu
- ölçek ai
- sözdizimi
- Teknik Nasıl Yapılır
- zefirnet