Bu blog yazısı, Intel'den Jonathan Lee, Nelson Leung, Paul Min ve Troy Squillaci tarafından ortaklaşa yazılmıştır.
In Bölüm 1 Bu gönderide Intel®3DAT ile nasıl işbirliği yaptığını tartıştık. AWS Machine Learning Profesyonel Hizmetleri (MLPS) ölçeklenebilir bir AI SaaS uygulaması oluşturmak için. 3DAT, standart videodan 1,000'den fazla biyomekanik veri noktasını tanımak, izlemek ve analiz etmek için bilgisayar vizyonunu ve yapay zekayı kullanır. Müşterilerin ayrıntılı performans verileri ve üç boyutlu görselleştirmelerle web ve mobil uygulamalar gibi zengin ve güçlü biyomekanik odaklı ürünler oluşturmasına olanak tanır.
Bu yazının 2. Kısmında, mimarinin her aşamasına daha derinden dalıyoruz. Aşağıdakiler dahil 3DAT tasarım gereksinimlerini karşılamak için kullanılan AWS hizmetlerini keşfediyoruz: Amazon Kinesis Veri Akışları ve Amazon Elastik Kubernetes Hizmeti (Amazon EKS), bu yazılım için bir hizmet (SaaS) uygulaması olarak gerekli poz tahmin modellerini ölçeklenebilir bir şekilde dağıtmak için.
Mimariye genel bakış
MLPS ekibinin birincil amacı, 2B ve 3B poz tahmin modeli ardışık düzenlerini üretmek ve işlevsel ve ölçeklenebilir bir uygulama oluşturmaktı. Aşağıdaki diyagram, çözüm mimarisini göstermektedir.
Komple mimari beş ana bileşene ayrılmıştır:
- Kullanıcı uygulama arayüzü katmanları
- veritabanı
- İş akışı düzenlemesi
- Ölçeklenebilir poz tahmini çıkarım oluşturma
- operasyonel izleme
Her bir bileşen, bunların etkileşimleri ve tasarım seçimlerinin arkasındaki mantık hakkında ayrıntılara girelim.
Kullanıcı uygulama arayüzü katmanları
Aşağıdaki diyagram, kullanıcı erişimini ve uygulamanın ve kaynaklarının kontrolünü sağlayan uygulama arabirimi katmanlarını gösterir.
Bu erişim noktaları, farklı müşteri kişiliklerine dayalı olarak farklı kullanım durumlarını destekler. Örneğin, bir uygulama kullanıcısı CLI aracılığıyla bir iş gönderebilirken bir geliştirici Python SDK'sını kullanarak bir uygulama oluşturabilir ve uygulamalarına poz tahmini zekası yerleştirebilir. CLI ve SDK modüler bileşenler olarak oluşturulmuştur; her iki katman da API katmanının sarmalayıcılarıdır. Amazon API Ağ Geçidi API çağrılarını çözmek ve ilişkili AWS Lambda her API çağrısıyla ilişkili arka uç mantığıyla ilgilenen işlevler. Bu katmanlar Intel OTG ekibi için çok önemli bir bileşendi çünkü bu SaaS uygulamasını etkin bir şekilde kullanabilecek geniş bir müşteri tabanı oluşturuyor.
API katmanı
Çözüm, bu platformda çalışan nesne türlerine karşılık gelen dokuz API'lik bir çekirdek sete sahiptir. Her API'nin çalıştırılabilecek API eylemlerini tanımlayan bir Python dosyası vardır. Yeni nesnelerin oluşturulmasına otomatik olarak sırayla bir nesne kimliği atanır. Bu nesnelerin nitelikleri depolanır ve izlenir. Amazon Aurora Sunucusuz bu kimliği kullanan veritabanı. Bu nedenle, API eylemleri, Aurora veritabanını sorgulamak için arka uç mantığını içeren merkezi bir dosyada tanımlanan işlevlere geri bağlanır. Bu arka uç mantığı Boto3'ü kullanır Amazon RDS DataService istemcisi veritabanı kümesine erişmek için.
Tek istisna, /job
bir API'ye sahip olan create_job
yeni bir işleme işi oluşturmak için video göndermeyi işleyen yöntem. Bu yöntem başlatır AWS Basamak İşlevleri işi çalıştırmak için iş akışı mantığı. İçinden geçerek job_id
, bu yöntem Boto3'ü kullanır Adım İşlevleri istemcisi aramak start_execution
Belirli bir yöntem için stateMachineARN
(Amazon Kaynak Adı).
Sekiz nesne API'si, aşağıdaki tabloda özetlenen yöntemlere ve benzer erişim modeline sahiptir.
Yöntem Türü | Fonksiyon adı | Açıklama |
GET | list_[object_name]s |
Veritabanından bu türdeki tüm nesneleri seçer ve görüntüler. |
POST | create_[object] |
Veritabanına gerekli girdilerle yeni bir nesne kaydı ekler. |
GET | get_[object] |
Veritabanından nesne kimliğine göre nesne niteliklerini seçer ve görüntüler. |
PUT | update_[object] |
Mevcut bir nesne kaydını gerekli girdilerle günceller. |
SİL | delete_[object] |
Nesne kimliğine dayalı olarak veritabanından var olan bir nesne kaydını siler. |
Dokuz API'nin ayrıntıları aşağıdaki gibidir:
- / kullanıcı – Kullanıcı, bu uygulamaya iş göndermeye yetkili birinin kimliğidir. Bir kullanıcının oluşturulması, bir kullanıcı adı, kullanıcı e-postası ve kullanıcının ait olduğu grup kimliği gerektirir.
- /Kullanıcı grubu – Bir kullanıcı grubu, bir kullanıcı topluluğudur. Her kullanıcı grubu, bir projeye ve bir ardışık düzen parametre kümesine eşlenir. Farklı katmanlara sahip olmak için (altyapı kaynakları ve boru hattı parametreleri açısından), kullanıcılar kullanıcı gruplarına ayrılır. Her kullanıcı yalnızca bir kullanıcı grubuna ait olabilir. Bir kullanıcı grubunun oluşturulması, bir proje kimliği, ardışık düzen parametre seti kimliği, kullanıcı grubu adı ve kullanıcı grubu açıklaması gerektirir. Kullanıcı gruplarının, AWS hesabında tanımlanan kullanıcı rollerinden farklı olduğunu unutmayın. İkincisi, erişim rollerine (örneğin yönetici) dayalı olarak farklı erişim düzeyleri sağlamak için kullanılır.
- /proje – Farklı altyapı kaynaklarını bir arada gruplandırmak için bir proje kullanılır. Bir proje, tek bir projeyle ilişkilendirilir.
project_cluster_url
(Aurora kümesi), kullanıcıları, işleri ve diğer meta verileri kaydetmek için birproject_queue_arn
(Kinesis Data Streams ARN) ve kare yığınları üzerinde çıkarım yapmak veya videolarda son işlem yapmak için kullanılan bir hesaplama çalıştırma zamanı ortamı (şu anda Cortex aracılığıyla kontrol edilmektedir). Her kullanıcı grubu bir projeyle ilişkilendirilir ve bu mekanizma, farklı kullanıcı grupları için gecikme ve işlem gücü açısından farklı katmanların nasıl etkinleştirildiğidir. Bir projenin oluşturulması için bir proje adı, proje kümesi URL'si ve proje kuyruğu ARN'si gerekir. - /boru hattı – Bir ardışık düzen, Cortex tarafından koordine edilen Amazon EKS çıkarım oluşturma kümesinde video işleme gerçekleştiren bir dizi işleme kapsayıcısı için tek bir yapılandırmayla ilişkilendirilir (daha fazla ayrıntı için video işleme çıkarım oluşturma bölümüne bakın). Tipik olarak, bu üç kapsayıcıdan oluşur: ön işleme ve kod çözme, nesne algılama ve poz tahmini. Örneğin, kod çözme ve nesne algılama adımı 2B ve 3B boru hatları için aynıdır, ancak son kapsayıcının HRNet veya 3DMPPE kullanılarak değiştirilmesi, 2B ve 3B işleme boru hatları için parametre kümesiyle sonuçlanır. İşleme için kullanılabilecek olası işlem hatlarını tanımlamak için yeni konfigürasyonlar oluşturabilirsiniz ve bu, Cortex deposunda, bu hattı tanımlayan model uç noktaları çağrısının sırasını ayrıntılandıran yeni bir Python dosyası girişi gerektirir (video işleme çıkarım oluşturma bölümüne bakın). ). İşlem hattı uç noktası, tek bir çerçeveyi işlemek için çağrılan Cortex uç noktasıdır. Bir işlem hattının oluşturulması, bir işlem hattı adı, işlem hattı açıklaması ve işlem hattı uç noktası gerektirir.
- /pipeline_parameter_set – Bir işlem hattı parametre seti, belirli bir işlem hattı için birden çok parametrenin (bir işlem hattı yapılandırma çalışma zamanı) esnek bir JSON koleksiyonudur ve birden çok işlem hattı yapılandırma çalışma zamanı gerektiğinde gelecekteki özelleştirme için esneklik sağlamak üzere eklenir. Kullanıcı grupları belirli bir ardışık düzen parametre seti ile ilişkilendirilebilir ve amacı, kullanıcı grubu ve işlem hattı başına farklı parametre gruplarına sahip olmaktır. Bu, Intel OTG'nin, özellikle ISV'ler olmak üzere farklı müşteriler uygulamayı kullanmaya başladıkça taşınabilirliği destekleyen özelleştirme oluşturması için ileriye dönük önemli bir eklemeydi.
- /boru hattı_parametreleri – Tek bir işlem hattı parametreleri koleksiyonu, bir işlem hattı parametre kümesinin somutlaştırılmasıdır. Bu, onu boru hattı parametrelerine ayarlanmış bir boru hattı parametresinin 1:çok eşlemesi yapar. Bu API, işlem hattı parametrelerinin 1:1 eşlemesi için bir işlem hattı oluşturulmasını sağlayan işlem hattı parametreleri kümesiyle ilişkilendirmek için bir işlem hattı kimliği gerektirir. Bu API'nin gerektirdiği diğer girdiler, bir ardışık düzen parametre seti kimliği, ardışık düzen parametreleri değeri ve ardışık düzen parametreleri adıdır.
- /video – Bir iş sırasında gönderilen bir .zip paketini oluşturan ayrı videoları tanımlamak için bir video nesnesi kullanılır. Bu dosya, gönderildikten sonra birden çok videoya bölünür. ilgili bir video
job_id
.zip paketinin gönderildiği iş için ve Amazon Basit Depolama Hizmeti (Amazon S3) ham ayrılmış videoların konumu ve her videonun son işleme sonuçları için yollar. Video nesnesi ayrıca, o videonun tek tek kare gruplarının işlenmesi sırasında sürekli olarak güncellenen bir video ilerleme yüzdesi ve ayrıca tamamlanmış veya tamamlanmamış için bir video durum bayrağı içerir. Bir videonun oluşturulması için bir iş kimliği, video yolu, video sonuçları yolu, video ilerleme yüzdesi ve video durumu gerekir. - /frame_batch - A
frame_batch
nesne, tek bir videonun örneklenmesiyle oluşturulan küçük bir kareler kümesidir. Bir videoyu normal boyutlu kare gruplarına ayırmak, gecikmeyi ayarlamak için bir kaldıraç sağlar ve paralelleştirmeyi ve verimi artırır. Bu, çıkarım için Kinesis Veri Akışları aracılığıyla çalıştırılan ayrıntılı birimdir. Bir çerçeve grubunun oluşturulması için bir video kimliği, çerçeve toplu başlangıç numarası, çerçeve toplu iş bitiş numarası, kare toplu giriş yolu, kare toplu sonuç yolu ve kare toplu durumu gerekir. - /Görev – Bu etkileşim API'si, bir işleme işini başlatmak üzere dosya gönderimi için kullanılır. Bu API, video işleme arka ucu Step Functions iş akışı koordinasyonu ve Amazon EKS kümesi ile etkileşime girmenin doğrudan yolu olduğundan, diğer nesne API'lerinden farklı bir işleve sahiptir. Bu API, bir kullanıcı kimliği, proje kimliği, ardışık düzen kimliği, ardışık düzen parametre seti kimliği, iş parametreleri ve iş durumu gerektirir. İş parametrelerinde, işlenecek videoların .zip paketinin bulunduğu Amazon S3'teki konum olan bir giriş dosyası yolu belirtilir. Dosya yükleme ile işlenir
upload_handler
kullanıcının bir dosya yerleştirmesi için önceden belirlenmiş bir S3 URL'si oluşturan yöntem. WORKFLOW_STATEMACHINE_ARN, sunucuya iletilen bir ortam değişkenidir.create_job
Bir işi başlatmak için bir giriş dosyası yoluna sahip bir video .zip paketinin nereye gönderileceğini belirtmek için API.
Aşağıdaki tablo API'nin işlevlerini özetlemektedir.
Yöntem Türü | işlev | Açıklama |
GET | list_jobs |
Veritabanından tüm işleri seçer ve görüntüler. |
POST | create_ job |
Kullanıcı kimliği, proje kimliği, işlem hattı kimliği, işlem hattı parametre seti kimliği, iş sonuçları yolu, iş parametreleri ve iş durumu ile yeni bir iş kaydı ekler. |
GET | get_ job |
Veritabanından iş kimliğine göre iş niteliklerini seçer ve görüntüler. |
GET | upload_handler |
.zip dosyası yükleme konumu olarak önceden belirlenmiş bir S3 URL'si oluşturur. Bir S3 paket adı gerektirir ve bir uygulama/zip dosyası türü bekler. |
Python SDK katmanı
API'leri temel alan ekip, geliştiricilerin API yöntemlerine erişmesini kolaylaştırmak için sarmalayıcı olarak bir Python SDK istemci kitaplığı oluşturdu. Açık kaynak kullandılar şiirPython paketleme ve bağımlılık yönetimini yöneten . onlar yarattı client.py
Python kullanarak API'lerin her birini sarmalayan işlevleri içeren dosya requests
API isteklerini ve istisnaları işlemek için kitaplık.
Geliştiricilerin Intel 3DAT SDK'yı başlatmaları için Poetry paketini kurmaları ve oluşturmaları gerekir. Ardından, basit bir Python içe aktarımı ekleyebilirler. intel_3dat_sdk
herhangi bir Python koduna.
İstemciyi kullanmak için, API uç noktasını belirterek istemcinin bir örneğini oluşturabilirsiniz:
Daha sonra istemciyi aşağıdaki gibi bireysel yöntemleri çağırmak için kullanabilirsiniz. create_pipeline
yöntemi (aşağıdaki koda bakın), boru hattı adı ve boru hattı açıklaması gibi uygun argümanları alarak.
CLI katmanı
Benzer şekilde ekip, API yöntemlerine Python kodu yazmaya gerek kalmadan basit bir arayüzle erişmek isteyen kullanıcılar için bir komut satırı arayüzü oluşturmak için API'ler üzerine inşa etti. Açık kaynaklı Python paketini kullandılar Tıkla (Komut Satırı Arayüzü Oluşturma Kiti). Bu çerçevenin faydaları, komutların rastgele iç içe yerleştirilmesi, otomatik yardım sayfası oluşturma ve çalışma zamanında alt komutların tembel yüklenmesini desteklemesidir. Aynısı client.py
dosyasında olduğu gibi, her bir SDK istemci yöntemi Click kullanılarak sarılır ve gerekli yöntem bağımsız değişkenleri komut satırı bayraklarına dönüştürülür. Bayrak girişleri daha sonra SDK komutu çağrılırken kullanılır.
CLI'yi başlatmak için, CLI configure
emretmek. Uç nokta URL'si istenir:
Artık API yöntemleriyle ilgili farklı komutları çağırmak için CLI'yi kullanabilirsiniz, örneğin:
veritabanı
Bir veritabanı olarak, bu uygulama, veritabanı motoru olarak MYSQL ile API'lerin her biri ile ilişkili meta verileri depolamak için Aurora Serverless'ı kullanır. Aurora Sunucusuz veritabanı hizmetinin seçilmesi, mümkün olduğunda sunucusuz AWS hizmetlerini kullanarak altyapı ek yükünü en aza indirmeye yönelik tasarım ilkesine bağlı kalır. Aşağıdaki diyagram bu mimariyi göstermektedir.
The sunucusuz motor modu bu uygulama yeni müşterilere göre ölçeklendiğinden ve iş yükleri hala belirsiz olduğundan aralıklı kullanım modelini karşılar. Bir veritabanı uç noktası başlatılırken belirli bir veritabanı bulut sunucusu boyutu gerekmez, küme kapasitesi için yalnızca minimum ve maksimum aralık gerekir. Aurora Serverless, bir yönlendirici filosunun uygun şekilde sağlanmasını yönetir ve iş yükünü kaynaklar arasında dağıtır. Aurora Serverless, minimum 1 günden 35 güne kadar otomatik olarak yedekleme bekletme gerçekleştirir. Ekip, varsayılanı maksimum 35 değerine ayarlayarak güvenlik için optimize etti.
Ek olarak, ekip şunları kullandı: Veri API'si kalıcı bir bağlantı gerektirmeyen ve bunun yerine güvenli bir HTTP uç noktası ve AWS SDK'ları ile entegrasyon sağlayan Aurora Serverless kümesine erişimi işlemek için. Bu özellik kullanır AWS Sırları Yöneticisi kimlik bilgilerini açıkça iletmeye gerek kalmaması için veritabanı kimlik bilgilerini saklamak için. CREATE TABLE komut dosyaları, dokuz API'ye karşılık gelen dokuz tablonun her biri için .sql dosyalarında yazılmıştır. Bu veritabanı sistemdeki tüm meta verileri ve nesnelerin durumunu içerdiğinden, API yöntemleri uygun SQL komutları kullanılarak çalıştırıldı (örneğin select * from Job
için list_jobs
API) ve iletildi execute_statement
Veri API'sindeki Amazon RDS istemcisinden yöntem.
İş akışı düzenlemesi
Uygulamanın işlevsel omurgası, aşağıdaki şemada gösterildiği gibi iş akışını koordine etmek için Step Functions kullanılarak ele alındı.
Durum makinesi, bir iş gönderildiğinde başlayan dört Lambda işlevi dizisinden oluşuyordu. create_job
yöntemden job
API. İş oluşturma için kullanıcı kimliği, proje kimliği, işlem hattı kimliği, işlem hattı parametre seti kimliği, iş sonuçları yolu, iş parametreleri ve iş durumu gereklidir. Önce aşağıdakileri kullanarak bir .zip video dosyası paketi yükleyebilirsiniz: upload_handler
önceden belirlenmiş bir S3 URL'si oluşturmak için iş API'sinden yöntem. İş gönderimi sırasında, dosyanın konumunu belirtmek için girdi dosyası yolu iş parametreleri aracılığıyla iletilir. Bu, dört ana adımı tetikleyerek iş akışı durum makinesinin çalışmasını başlatır:
- Başlatıcı Lambda işlevi
- Gönderici Lambda işlevi
- Tamamlama Kontrolü Lambda işlevi
- Toplayıcı Lambda işlevi
Başlatıcı Lambda işlevi
Başlatıcının ana işlevi, .zip paketini ayrı video dosyalarına ayırmak ve bunları Gönderici için hazırlamaktır. İlk olarak, .zip dosyası indirilir ve ardından video dosyaları da dahil olmak üzere her bir dosyanın sıkıştırması açılır ve ayıklanır. Tercihen .mp4 formatındaki videolar bir S3 kovasına geri yüklenir. Kullanmak create_video
yönteminde video
API, giriş olarak video yolu ile bir video nesnesi oluşturulur. Bu, her videodaki verileri Aurora veritabanına ekler. JSON dosyaları gibi diğer dosya türleri meta veri olarak kabul edilir ve benzer şekilde yüklenir, ancak hiçbir video nesnesi oluşturulmaz. Çıkarılan dosya ve video dosyalarının adlarının bir listesi bir sonraki adıma geçirilir.
Gönderici Lambda işlevi
Gönderici işlevi, Başlatıcı tarafından ayıklanan video dosyalarını alır ve görüntü olarak mini video kareleri yığını oluşturur. Üretimdeki çoğu mevcut bilgisayarlı görü modelleri görüntüler üzerinde eğitilmiştir, bu nedenle video işlendiğinde bile, model çıkarımından önce ilk olarak görüntü çerçevelerine ayrılırlar. Son teknoloji ürünü bir poz tahmin modeli kullanan bu mevcut çözüm farklı değildir - Göndericiden gelen çerçeve grupları, çıkarım oluşturma adımını başlatmak için Kinesis Veri Akışlarına iletilir.
İlk olarak, video dosyası Lambda işlevi tarafından indirilir. Kare hızı ve kare sayısı şu şekilde hesaplanır: FileVideoStream
modülünden imutils.video
işleme kitaplığı Çerçeveler, bu ardışık düzenin temel ayarlanabilir parametrelerinden biri olan belirli bir mini parti boyutuna göre ayıklanır ve gruplandırılır. Python turşu kitaplığı kullanılarak veriler seri hale getirilir ve Amazon S3'e yüklenir. Ardından, bir çerçeve toplu nesnesi oluşturulur ve Aurora veritabanında meta veri girişi oluşturulur. Bu Lambda işlevi, bağımlılıkları olan bir Dockerfile kullanılarak oluşturulmuştur. opencv-python
, numpy
, ve imutils
kütüphaneler.
Tamamlama Kontrolü Lambda işlevi
Tamamlama Kontrolü işlevi, bu geçerli iş için .zip paketindeki her video için, TAMAMLANDI durumunda kaç kare grubu olduğunu görmek için Aurora veritabanını sorgulamaya devam eder. Tüm videolar için tüm çerçeve grupları tamamlandığında, bu kontrol işlemi tamamlanır.
Toplayıcı Lambda işlevi
Toplayıcı işlevi, Tüketici aşaması sırasında her karede gerçekleştirilen çıkarımların çıktılarını alır ve bunları bir kare yığını ve bir video boyunca birleştirir. Birleştirilmiş birleştirilmiş veriler daha sonra bir S3 kovasına yüklenir. İşlev, daha sonra herhangi bir işlem sonrası hesaplamayı gerçekleştirmek için belirli bir ML ardışık düzeni için Cortex son işleme API'sini çağırır ve videoyla toplanan sonuçları çıkış kovasına ekler. Bu metriklerin çoğu hız, ivme ve eklem açısı gibi kareler arasında hesaplanır, bu nedenle bu hesaplamanın toplu veriler üzerinde yapılması gerekir. Ana çıktılar, gövde anahtar noktaları verilerini (CSV formatında toplanır), BMA hesaplamalarını (hızlanma gibi) ve bir görüntü dosyasındaki her kareye eklenen anahtar noktaların görsel bindirmesini içerir.
Ölçeklenebilir poz tahmini çıkarım oluşturma
ML çıkarımının ölçeklenmesini sağlayan işleme motoru bu aşamada gerçekleşir. Her biri gecikme süresi değiş tokuşu için ayarlanabilen kendi eşzamanlılık kollarına sahip üç ana parça içerir (aşağıdaki şemaya bakın).
Bu mimari, gecikme kazanımlarını test etmede deney yapılmasına ve ayrıca uygulamaya erişen farklı son kullanıcı segmentleri karışımlarıyla iş yüklerinin değişebileceği geleceğe yönelik esneklik sağlar.
Kinesis Veri Akışları
Ekip, tipik olarak akış verilerini işlemek için kullanıldığından Kinesis Veri Akışlarını seçti ve bu durumda, ölçeklenebilirlik ve paralelleştirme sağlamak için çerçeve gruplarını benzer bir şekilde işleyebildiğinden bu durum iyi bir seçimdir. Gönderici Lambda işlevinde, Kinesis Boto3 istemcisi kullanılır. put_record
çerçeve toplu kimliği, çerçeve toplu başlangıç çerçevesi, çerçeve toplu bitiş çerçevesi, görüntü şekli, çerçeve hızı ve video kimliği gibi tek bir çerçeve grubuyla ilişkili meta verileri geçirme yöntemi.
Farklı kullanıcı gruplarının öncelik düzeyine bağlanan verim düzeylerini belirlemek için çeşitli iş kuyruğu ve Kinesis veri akışı yapılandırmaları tanımladık. kullanılarak yeni bir proje oluşturulurken bir proje kuyruğu ARN geçirilerek farklı işlem gücü seviyelerine erişim bağlanır. project
API. Daha sonra her kullanıcı grubu, kullanıcı grubu oluşturma sırasında belirli bir projeye bağlanır. içinde üç varsayılan akış konfigürasyonu tanımlanmıştır. AWS Sunucusuz Uygulama Modeli (AWS SAM) altyapı şablonu:
- Standart -
JobStreamShardCount
- öncelik -
PriorityJobStreamShardCount
- Yüksek öncelik -
HighPriorityJobStreamShardCount
Ekip, aşağıdaki tabloda özetlendiği gibi, her akışın işlem gücünü ayırt etmek veya sistemin gecikmesini ayarlamak için birkaç farklı kaldıraç kullandı.
manivela | Açıklama | Varsayılan değer |
çömlek kırığı | Bir parça Kinesis Veri Akışlarına özgüdür; alım için temel çıktı birimidir. Varsayılan 1MB/sn'dir ve bu, saniyede 1,000 veri kaydına eşittir. | 2 |
KinesisBatchSize |
Tüketici Lambda işlevini çağırmadan önce Kinesis Data Streams'in tek bir toplu işte aldığı maksimum kayıt sayısı. | 1 |
KinesisParallelizationFactor |
Her parçadan aynı anda işlenecek parti sayısı. | 1 |
Gelişmiş yayma | Gelişmiş yayma özelliği etkinleştirilen veri tüketicilerinin, verimi tüketiciler arasında paylaşmak yerine, tüketici başına özel bir veri alma verimi (varsayılan 1 MB/sn gibi) vardır. | kapalı |
Tüketici Lambda işlevi
Kinesis Veri Akışları perspektifinden bakıldığında, veri tüketicisi, veriler bir akışta oluşturulurken veri akışı parçasından veri alan bir AWS hizmetidir. Bu uygulama, veri akışı kuyruklarından iletiler iletildiğinde çağrılan Tüketici Lambda işlevini kullanır. Her Tüketici işlevi, aşağıdaki adımları gerçekleştirerek bir çerçeve toplu işlemi işler. İlk olarak, model çıkarım ardışık düzenini barındıran uç nokta olan Cortex işlemci API'sine eşzamanlı olarak bir çağrı yapılır (daha fazla ayrıntı için Cortex'li Amazon EKS ile ilgili sonraki bölüme bakın). Sonuçlar Amazon S3'te depolanır ve işlenen çerçeve toplu işleminin durumu şu şekilde değiştirilerek veritabanında bir güncelleme yapılır: Complete
. Hata işleme, Cortex kümesindeki herhangi bir 504 hatayı işlemek için yeniden deneme döngüsüyle Cortex API çağrısını yönetmek için yerleşiktir ve yeniden deneme sayısı 5'e ayarlanır.
ML çıkarımı için Cortex ile Amazon EKS
Ekip, makine öğrenimi çıkarımı için işlem motoru olarak AWS'de yönetilen bir Kubernetes hizmeti olan Amazon EKS'yi kullandı. ML uç noktalarını barındırmak için Amazon EKS'yi kullanmak için bir tasarım seçimi yapıldı ve her ikisi de AWS'de tamamen yönetilen kümeler seçeneğiyle yukarı akış Kubernetes çalıştırma esnekliği sağladı. AWS Fargateveya şirket içi donanım aracılığıyla Amazon EKS Her Yerde. Bu, örneğin bu uygulamayı özel şirket içi donanıma bağlama seçeneği sunan Intel OTG tarafından istenen kritik bir işlevsellik parçasıydı.
Çıkarım ardışık düzenlerini oluşturmak için yapı taşları olan üç ML modeli, özel bir Yolo modeli (nesne algılama için), özel bir HRNet modeli (2B poz tahmini için) ve bir 3DMPPE modeli (3B poz tahmini için) idi (önceki bölüme bakın). Daha fazla ayrıntı için ML bölümü). Açık kaynak kullandılar Cortex ML çıkarımı ardışık düzen uç noktalarının dağıtımını ve yönetimini ve Amazon EKS kümelerinin başlatılmasını ve dağıtımını işlemek için kitaplık. Bu modellerin her biri Docker kapsayıcılarında paketlendi; model dosyaları Amazon S3'te, model görüntüleri ise Amazon Elastik Konteyner Kayıt Defteri (Amazon ECR)—ve Cortex Realtime API'leri olarak dağıtılır. CPU ve GPU üzerinde çalışan model kapsayıcılarının sürümleri, bilgi işlem donanımı türü için esneklik sağlamak üzere oluşturulmuştur. Gelecekte, ek modellerin veya model boru hatlarının eklenmesi gerekirse, ek Cortex Realtime API'leri oluşturabilirler.
Daha sonra Cortex Realtime model API'lerini Cortex Realtime işlem hattı API'lerinde bir araya getirerek çıkarım işlem hatları oluşturdular. Tek bir Gerçek Zamanlı ardışık düzen API'si, bir dizi Gerçek Zamanlı model API'sinin çağrılmasından oluşuyordu. Tüketici Lambda işlevleri, bir pipeline
Bir görüntünün son çıkarım çıktısını almak için tek bir API çağrısı kullanan bir kara kutu olarak API. İki işlem hattı oluşturuldu: 2B işlem hattı ve 3B işlem hattı.
2B boru hattı, bir kod çözme ön işleme adımını, sporcuyu bulmak ve sınırlayıcı kutular oluşturmak için özel bir Yolo modeli kullanan nesne algılamayı ve son olarak poz tahmini için 2B anahtar noktaları oluşturmak için özel bir HRNet modelini birleştirir.
3D boru hattı, bir kod çözme ön işleme adımını, sporcuyu bulmak ve sınırlayıcı kutular oluşturmak için özel bir Yolo modeli kullanan nesne algılamayı ve son olarak poz tahmini için 3D anahtar noktalar oluşturmak için bir 3DMPPE modelini birleştirir.
Bir grup çerçeve üzerinde çıkarımlar oluşturduktan sonra, her ardışık düzen ayrıca üç ana çıktı üreten ayrı bir son işleme Realtime Cortex uç noktası içerir:
- Toplanan gövde anahtarı verileri tek bir CSV dosyasına aktarır
- BMA hesaplamaları (hızlanma gibi)
- Bir görüntü dosyasındaki her kareye eklenen önemli noktaların görsel bindirmesi
Toplayıcı Lambda işlevi, poz tahmini çıkarım çıktılarının kare kimlikleri ve S3 konumları gibi belirli bir videoyla ilişkili uygun meta verileri, bu son işleme çıktılarını oluşturmak için uç noktaya gönderir.
Cortex, Amazon EKS ile entegre olacak şekilde tasarlanmıştır ve bir Kubernetes kümesini başlatmak için yalnızca bir küme yapılandırma dosyası ve basit bir komut gerektirir:
Performans ayarlama için başka bir kaldıraç, bilgi işlem kümeleri için örnek yapılandırmasıydı. Küme adı, Bölge ve bulut sunucusu yapılandırması ve karışımı gibi özelliklere sahip .yaml dosyaları olarak kodlanan M5 ve G4dn örneklerinin çeşitli karışımlarıyla üç katman oluşturuldu. M5 bulut sunucuları daha düşük maliyetli CPU tabanlıdır ve G4dn, bazı maliyet/performans ödünleşimleri sağlamak için daha yüksek maliyetli GPU tabanlıdır.
operasyonel izleme
Operasyonel günlük kaydı standartlarını korumak için, tüm Lambda işlevleri, günlükleri şu şekilde kaydetmek ve almak için kod içerir: Amazon Kinesis Veri İtfaiyesi. Örneğin, Gönderici Lambda işlevinden işlenen her kare toplu iş, zaman damgası, eylem adı ve Lambda işlevi yanıtı JSON ile günlüğe kaydedilir ve Amazon S3'e kaydedilir. Aşağıdaki diyagram mimarideki bu adımı göstermektedir.
açılma
Dağıtım, AWS'de sunucusuz uygulamalar oluşturmaya yönelik açık kaynaklı bir çerçeve olan AWS SAM kullanılarak gerçekleştirilir. AWS SAM, işlevler, API'ler, veritabanları ve olay kaynağı eşlemeleri dahil olmak üzere altyapı tasarımının kodlanmasını ve yeni AWS ortamlarında kolayca devreye alınmasını sağlar. Dağıtım sırasında AWS SAM sözdizimi şu dile çevrilir: AWS CloudFormation altyapı sağlama işlemlerini yürütmek.
A template.yaml
dosyası, önceki bölümlerde ayrıntılı olarak açıklanan Kinesis Veri Akışları gecikme kolları gibi ayarlanabilir parametrelerle birlikte altyapı özelliklerini içerir. A samconfig.toml
dosya, yığın adı, Lambda işlev kodu gibi uygulama dosyalarının depolandığı S3 kova adı ve izleme maliyeti için kaynak etiketleri gibi dağıtım parametrelerini içerir. Tüm şablonu oluşturmak ve dağıtmak için gereken tek şey basit komutları içeren bir dağıtım.sh kabuk betiğidir:
Kullanıcı iş akışı
Özetle, altyapı dağıtıldıktan sonra, başlamak için bu iş akışını takip edebilirsiniz:
- İstemci kitaplığını kullanarak bir Intel 3DAT istemcisi oluşturun.
- 3B poz tahmini için olduğu gibi gerekli işleme türüne karşılık gelen yeni bir işlem hattı örneği oluşturmak için API'yi kullanın.
- ARN kümesinden ve Kinesis kuyruğu ARN'sinden geçen bir projenin yeni bir örneğini oluşturun.
- İşlem hattı parametre kümesinin yeni bir örneğini oluşturun.
- İşlem hattı parametre kümesiyle eşleşen yeni bir işlem hattı parametreleri örneği oluşturun.
- Bir proje kimliği ve bir ardışık düzen parametre seti kimliği ile ilişkilendirilmiş yeni bir kullanıcı grubu oluşturun.
- Kullanıcı grubuyla ilişkilendirilmiş yeni bir kullanıcı oluşturun.
- İş API'sindeki yükleme işlevi tarafından oluşturulan önceden belirlenmiş bir S3 URL'sini kullanarak Amazon S3'e videolardan oluşan bir .zip dosyası yükleyin.
- Bir gönder
create_job
Video dosyalarının konumunu belirten iş parametreleriyle API çağrısı. Bu, işleme işini başlatır.
Sonuç
Uygulama artık yayında ve hem sporcular hem de antrenörler ile test edilmeye hazır. Intel OTG, geliştiricilerden sporculara ve yazılım satıcısı ortaklarına kadar çeşitli kullanıcılar için bilgisayarla görü kullanarak yenilikçi poz tahmini teknolojisini erişilebilir kılmaktan heyecan duyuyor.
AWS ekibi, Intel OTG gibi müşterilerin ML Solutions Lab ile fikir ve keşif aşamasından AWS ML ProServe ile sağlamlaştırma ve devreye alma aşamasına kadar ML yolculuklarını hızlandırma konusunda tutkulu. ML'nin sporda kilidini açabileceği tüm ilerlemeyi öngörmek için bu yaz 2021 Tokyo Olimpiyatları'nı hepimiz yakından izliyor olacağız.
Bu gün başlayacağım! Kullanım alanınızı bu yayında ve diğer pek çok yerde bahsedilen hizmetlerle keşfedin. AWS Yönetim Konsolu.
Yazarlar Hakkında
Han Adam San Diego, CA merkezli AWS'de Makine Öğrenimi ve Yapay Zeka Kıdemli Yöneticidir. Northwestern Üniversitesi'nden mühendislik alanında doktora derecesine sahiptir ve üretim, finansal hizmetler ve enerji alanlarında müşterilere danışmanlık yapan bir yönetim danışmanı olarak birkaç yıllık deneyime sahiptir. Bugün, AWS'de makine öğrenimi ve yapay zeka çözümleri geliştirmek ve uygulamak için çeşitli sektörlerden müşterilerle tutkuyla çalışıyor. NBA'i takip etmeyi ve boş zamanlarında basketbol oynamayı seviyor.
imam kamyabi AWS Professional Services'a sahip bir ML Mühendisidir. Tekrarlanabilir ve güvenilir ML ardışık düzenlerinin oluşturulmasında en iyi uygulamaları desteklemek için çok çeşitli AWS müşterileriyle çalıştı.
Jonathan Lee Intel'de Olimpik Teknoloji Grubu Spor Performans Teknolojisi Direktörüdür. UCLA'da lisans öğrencisi olarak ve Oxford Üniversitesi'nde yüksek lisans eğitimi sırasında makine öğreniminin sağlığa uygulanması konusunda çalıştı. Kariyeri, sağlık ve insan performansı için algoritma ve sensör geliştirmeye odaklanmıştır. Şimdi Intel'de 3D Sporcu Takip projesini yönetiyor.
nelson leung atlet performansını artıran son teknoloji ürünler için uçtan uca mimariyi tanımladığı Intel'deki Sports Performance CoE'de Platform Mimarıdır. Ayrıca, bu makine öğrenimi çözümlerinin farklı Intel ortaklarına uygun ölçekte uygulanmasına, devreye alınmasına ve ürünleştirilmesine liderlik ediyor.
Troy Squillacı Intel'de bir DecSecOps mühendisidir ve burada DevOps en iyi uygulamaları aracılığıyla müşterilere profesyonel yazılım çözümleri sunar. Yapay zeka çözümlerini çeşitli alanlarda ölçeklenebilir platformlara entegre etmekten hoşlanıyor.
Paul Min Amazon Web Services'de (AWS) Associate Solutions Architect Stajyeri olup, burada farklı sektör sektörlerindeki müşterilerin misyonlarını geliştirmelerine ve bulut benimsemelerini hızlandırmalarına yardımcı olur. Daha önce Intel'de, 3D Athlete Tracking Cloud SDK'nın geliştirilmesine yardımcı olmak için Yazılım Mühendisliği Stajyeri olarak çalıştı. Paul, iş dışında golf oynamayı sever ve şarkı söylerken duyulabilir.
- Akıllı para. Avrupa'nın En İyi Bitcoin ve Kripto Borsası.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. SERBEST ERİŞİM.
- KriptoHawk. Altcoin Radarı. Ücretsiz deneme.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- ve-amazon-eks/
- "
- &
- 000
- 100
- 2021
- 3d
- Hakkımızda
- hızlandırmak
- erişim
- ulaşılabilir
- Göre
- Hesap
- karşısında
- Action
- eylemler
- ilave
- Ek
- Gizem
- Benimseme
- AI
- algoritma
- Türkiye
- Amazon
- Amazon Web Servisleri
- arasında
- api
- API'ler
- Uygulama
- uygulamaları
- uygun
- mimari
- argümanlar
- atanmış
- Ortak
- sporcular
- öznitelikleri
- Otomatik
- AWS
- yedek
- Basketbol
- önce
- faydaları
- İYİ
- en iyi uygulamalar
- Siyah
- Blog
- vücut
- kutu
- inşa etmek
- bina
- çağrı
- Kapasite
- hangi
- Kariyer
- durumlarda
- merkezi
- şampiyon
- değişiklik
- choices
- istemciler
- bulut
- kod
- Toplamak
- kolektör
- kombine
- bileşen
- hesaplamak
- bilgisayar
- yapılandırma
- bağ
- danışman
- tüketici
- Tüketiciler
- Konteyner
- Konteynerler
- içeren
- devam ediyor
- kontrol
- koordinat
- çekirdek
- uyan
- yaratmak
- çevrimiçi kurslar düzenliyorlar.
- oluşturur
- Oluşturma
- oluşturma
- Tanıtım
- kritik
- çok önemli
- akım
- Şu anda
- görenek
- müşteri
- Müşteriler
- keskin kenar
- veri
- veritabanı
- veritabanları
- gün
- adanmış
- derin
- sağlıyor
- dağıtmak
- konuşlandırılmış
- açılma
- dağıtır
- Dizayn
- tasarlanmış
- ayrıntı
- detaylı
- ayrıntılar
- Bulma
- geliştirmek
- Geliştirici
- geliştiriciler
- gelişme
- farklı
- farklılaştırmak
- direkt
- yönetmen
- keşif
- görüntüler
- liman işçisi
- Değil
- etki
- aşağı
- sırasında
- kolayca
- E-posta
- Son nokta
- enerji
- Motor
- mühendis
- Mühendislik
- çevre
- Etkinlikler
- örnek
- uyarılmış
- mevcut
- beklediğini
- deneyim
- keşfetmek
- Özellikler(Hazırlık aşamasında)
- Nihayet
- mali
- finansal hizmetler
- Ad
- uygun
- FİLO
- Esneklik
- esnek
- odaklanmış
- takip et
- takip etme
- şu
- biçim
- ileriye dönük
- ÇERÇEVE
- iskelet
- işlev
- fonksiyonel
- işlevsellik
- fonksiyonlar
- gelecek
- oluşturmak
- üreten
- nesil
- Verilmesi
- gol
- Tercih Etmenizin
- GPU
- mezun
- grup
- Grubun
- sap
- kullanma
- donanım
- Sağlık
- duydum
- yardım et
- yardım
- yardımcı olur
- okuyun
- daha yüksek
- Ne kadar
- HTTPS
- insan
- Kimlik
- görüntü
- uygulamak
- uygulama
- önemli
- dahil
- içerir
- Dahil olmak üzere
- bireysel
- Endüstri
- sanayi
- Altyapı
- yenilikçi
- giriş
- Uçlar
- kurmak
- entegre
- bütünleşme
- Intel
- İstihbarat
- etkileşim
- arayüzey
- IT
- İş
- Mesleki Öğretiler
- seyahat
- anahtar
- laboratuvar
- başlatmak
- fırlatma
- İlanlar
- öğrenme
- seviye
- Kütüphane
- çizgi
- Liste
- yükleme
- yer
- yerleri
- makine
- makine öğrenme
- yapılmış
- korumak
- büyük
- YAPAR
- adam
- yönetmek
- yönetilen
- yönetim
- üretim
- harita
- haritalama
- adı geçen
- yöntemleri
- Metrikleri
- asgari
- Misyonumuz
- ML
- Telefon
- Mobil uygulamalar
- model
- modelleri
- modüler
- Daha
- çoğu
- çoklu
- isimleri
- NBA
- gerekli
- ihtiyaçlar
- numara
- olympics
- açılır
- işletmek
- optimize
- seçenek
- sipariş
- Diğer
- kendi
- Oxford
- paket
- Bölüm
- belirli
- özellikle
- ortaklar
- Geçen
- tutkulu
- model
- yüzde
- performans
- icra
- perspektif
- parça
- platform
- Platformlar
- oynama
- şiir
- noktaları
- mümkün
- güç kelimesini seçerim
- güçlü
- Hazırlamak
- önceki
- birincil
- prensip
- öncelik
- süreç
- Süreçler
- işleme
- İşlemci
- üretmek
- üretim
- Ürünler
- profesyonel
- proje
- sağlamak
- sağlar
- amaç
- menzil
- Çiğ
- realtime
- tanımak
- kayıt
- kayıtlar
- ilişkin
- güvenilir
- isteklerinizi
- gerektirir
- gereklidir
- Yer Alan Kurallar
- gerektirir
- kaynak
- Kaynaklar
- yanıt
- Sonuçlar
- koşmak
- koşu
- Güvenlik
- San
- ölçeklenebilirlik
- ölçeklenebilir
- ölçek
- ölçekleme
- sdk
- güvenli
- segmentler
- Serverless
- hizmet
- Hizmetler
- set
- ayar
- Shape
- paylaşımı
- Kabuk
- gösterilen
- benzer
- benzer şekilde
- Basit
- beden
- So
- Yazılım
- hizmet olarak yazılım
- yazılım Mühendisliği
- çözüm
- Çözümler
- biraz
- Birisi
- özel
- özellikler
- hız
- Spor
- yığın
- Aşama
- standart
- standartlar
- başlama
- başladı
- başlar
- Eyalet
- state-of-the-art
- Durum
- hafızası
- mağaza
- dere
- akış
- gönderilen
- Daha sonra
- yaz
- destek
- Destekler
- sistem
- alma
- takım
- Teknoloji
- Test yapmak
- bu nedenle
- İçinden
- BAĞ
- zaman
- bugün
- birlikte
- Tokyo
- iz
- Takip
- türleri
- tipik
- UCLA
- üniversite
- Oxford Üniversitesi
- kilidini açmak
- Güncelleme
- kullanım
- kullanıcılar
- Kullanılması
- değer
- çeşitlilik
- çeşitli
- sektörler
- Video
- Videolar
- vizyonumuz
- ağ
- web hizmetleri
- DSÖ
- olmadan
- İş
- işlenmiş
- çalışma
- yıl