Derin Öğrenme modellerini geniş ölçekte dağıtırken, performansı ve maliyet avantajlarını en üst düzeye çıkarmak için temeldeki donanımı etkin bir şekilde kullanmak çok önemlidir. Yüksek verim ve düşük gecikme gerektiren üretim iş yükleri için, Amazon Elastik Bilgi İşlem Bulutu (EC2) örneği, model hizmet yığını ve dağıtım mimarisi çok önemlidir. Verimsiz mimari, hızlandırıcıların yetersiz kullanımına ve gereksiz yüksek üretim maliyetine yol açabilir.
Bu gönderide, FastAPI model sunucularını AWS Inferentia cihazlarına (Amazon EC2'de bulunur) dağıtma sürecinde size yol göstereceğiz. bilgi1 ve Amazon AK bilgi2 örnekler). Ayrıca, maksimum donanım kullanımı için tüm NeuronCore'larda paralel olarak dağıtılan örnek bir model barındırmayı gösteriyoruz.
Çözüme genel bakış
FastAPI, Python uygulamalarına Flask ve Django gibi geleneksel çerçevelerden çok daha hızlı hizmet vermeye yönelik açık kaynaklı bir web çerçevesidir. bir kullanır Asenkron Sunucu Ağ Geçidi Arabirimi (ASGI) yaygın olarak kullanılan yerine Web Sunucusu Ağ Geçidi Arayüzü (WSGI). ASGI, istekleri sırayla işleyen WSGI'nin aksine, gelen istekleri eşzamansız olarak işler. Bu, FastAPI'yi gecikmeye duyarlı istekleri işlemek için ideal bir seçim haline getirir. Belirlenmiş bir bağlantı noktası aracılığıyla istemci isteklerini dinleyen bir Inferentia (Inf1/Inf2) örneklerinde bir uç nokta barındıran bir sunucuyu dağıtmak için FastAPI'yi kullanabilirsiniz.
Amacımız, donanımdan maksimum düzeyde yararlanarak en düşük maliyetle en yüksek performansı elde etmektir. Bu, daha az hızlandırıcı ile daha fazla çıkarım isteğini işlememizi sağlar. Her AWS Inferentia1 cihazı dört NeuronCores-v1 içerir ve her AWS Inferentia2 cihazı iki NeuronCores-v2 içerir. bu AWS Nöron SDK, NeuronCore'ların her birini paralel olarak kullanmamıza izin verir, bu da bize verimden ödün vermeden dört veya daha fazla modeli paralel olarak yükleme ve çıkarımda daha fazla kontrol sağlar.
FastAPI ile Python web sunucusu (gunicorn, Uvicorn, hiper mısır, defne). Bu web sunucuları, temeldeki Makine Öğrenimi (ML) modelinin üzerinde bir soyutlama katmanı sağlar. İstekte bulunan müşteri, barındırılan modelden habersiz olma avantajına sahiptir. Bir istemcinin, sunucu altında dağıtılan modelin adını veya sürümünü bilmesi gerekmez; uç nokta adı artık yalnızca modeli yükleyen ve çalıştıran bir işlevin proxy'sidir. Bunun aksine, TensorFlow Sunumu gibi çerçeveye özgü bir sunum aracında, modelin adı ve sürümü, uç nokta adının bir parçasıdır. Model sunucu tarafında değişirse, istemcinin yeni uç noktaya API çağrısını bilmesi ve buna göre değiştirmesi gerekir. Bu nedenle, A/B testinde olduğu gibi sürüm modellerini sürekli olarak geliştiriyorsanız, uç nokta adı statik olduğundan FastAPI ile genel bir Python web sunucusu kullanmak modelleri sunmanın uygun bir yoludur.
Bir ASGI sunucusunun rolü, istemci isteklerini dinleyen ve çıkarım kodunu çalıştıran belirli sayıda çalışan oluşturmaktır. Sunucunun önemli bir özelliği, istenen sayıda çalışanın kullanılabilir ve aktif olmasını sağlamaktır. Bir işçinin öldürülmesi durumunda, sunucunun yeni bir işçi başlatması gerekir. Bu bağlamda, sunucu ve çalışanlar, Unix işlem kimlikleri (PID) ile tanımlanabilir. Bu gönderi için bir hiper mısır Python web sunucuları için popüler bir seçim olan sunucu.
Bu gönderide, AWS Inferentia NeuronCores üzerinde FastAPI ile derin öğrenme modellerini dağıtmak için en iyi uygulamaları paylaşıyoruz. Eşzamanlı olarak çağrılabilen ayrı NeuronCore'larda birden fazla model dağıtabileceğinizi gösteriyoruz. Bu kurulum verimi artırır, çünkü aynı anda birden fazla model çıkarılabilir ve NeuronCore kullanımı tamamen optimize edilmiştir. Kod şu adreste bulunabilir: GitHub repo. Aşağıdaki şekilde, çözümün bir EC2 Inf2 bulut sunucusunda nasıl kurulacağına ilişkin mimari gösterilmektedir.
Aynı mimari, dört çekirdeğe sahip olması dışında EC2 Inf1 bulut sunucusu tipi için geçerlidir. Bu, mimari diyagramı biraz değiştirir.
AWS Inferentia Nöron Çekirdekleri
AWS Neuron tarafından NeuronCores ile etkileşim kurmak için sağlanan araçları biraz daha derinlemesine inceleyelim. Aşağıdaki tablolar, her bir Inf1 ve Inf2 örnek tipindeki NeuronCores sayısını gösterir. Ana bilgisayar vCPU'ları ve sistem belleği, mevcut tüm NeuronCore'lar arasında paylaşılır.
Örnek Boyutu | # Çıkarım Hızlandırıcıları | # Nöron Çekirdekleri-v1 | vCPU'lar | Bellek (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xlarge | 1 | 4 | 8 | 16 |
Inf1.6xlarge | 4 | 16 | 24 | 48 |
Inf1.24xlarge | 16 | 64 | 96 | 192 |
Örnek Boyutu | # Çıkarım Hızlandırıcıları | # Nöron Çekirdekleri-v2 | vCPU'lar | Bellek (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xlarge | 1 | 2 | 32 | 32 |
Inf2.24xlarge | 6 | 12 | 96 | 192 |
Inf2.48xlarge | 12 | 24 | 192 | 384 |
Inf2 bulut sunucuları, Inf2 örneklerindeki NeuronCore-v1'e kıyasla yeni NeuronCores-v1'yi içerir. Daha az çekirdeğe rağmen, Inf4 bulut sunucularından 10 kat daha yüksek aktarım hızı ve 1 kat daha düşük gecikme sunabilirler. Inf2 bulut sunucuları, Generative AI, OPT/GPT ailesindeki Büyük Dil Modelleri (LLM) gibi Derin Öğrenme iş yükleri ve Stable Diffusion gibi görüntü dönüştürücüler için idealdir.
Neuron Runtime, Neuron cihazlarında modellerin çalıştırılmasından sorumludur. Neuron Runtime, hangi NeuronCore'un hangi modeli çalıştıracağını ve nasıl çalıştırılacağını belirler. Neuron Runtime yapılandırması, Ortam Değişkenleri süreç düzeyinde. Varsayılan olarak, Neuron çerçeve uzantıları, kullanıcının adına Neuron Çalışma Zamanı yapılandırmasıyla ilgilenir; ancak, daha optimize edilmiş davranış elde etmek için açık yapılandırmalar da mümkündür.
İki popüler ortam değişkeni NEURON_RT_NUM_CORES
ve NEURON_RT_VISIBLE_CORES
. Bu ortam değişkenleriyle, Python işlemleri bir NeuronCore'a bağlanabilir. İle NEURON_RT_NUM_CORES
, bir işlem için belirli sayıda çekirdek ayrılabilir ve NEURON_RT_VISIBLE_CORES
, bir dizi NeuronCore rezerve edilebilir. Örneğin, NEURON_RT_NUM_CORES=2 myapp.py
iki çekirdek ayıracak ve NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
için sıfır, bir ve iki çekirdek ayırır. myapp.py
. Cihazlar (AWS Inferentia yongaları) arasında da NeuronCore'ları ayırabilirsiniz. Bu yüzden, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
üzerinde ilk dört çekirdeği ayıracak device1
ve bir çekirdek üzerinde device2
bir Ec2 Inf1 bulut sunucusu tipinde. Benzer şekilde, bir EC2 Inf2 bulut sunucusu tipinde bu yapılandırma, iki çekirdeği ayırır. device1
ve device2
ve bir çekirdek üzerinde device3
. Aşağıdaki tablo, bu değişkenlerin yapılandırmasını özetlemektedir.
Name | Açıklama | Tip | Beklenen değerler | Varsayılan değer | RT Sürümü |
NEURON_RT_VISIBLE_CORES |
Sürecin ihtiyaç duyduğu belirli NeuronCore aralığı | Tamsayı aralığı (1-3 gibi) | Sistemde 0 ile Max NeuronCore arasında herhangi bir değer veya aralık | Hayır | 2.0+ |
NEURON_RT_NUM_CORES |
Sürecin gerektirdiği NeuronCores sayısı | Tamsayı | Sistemde 1 ile Max NeuronCore arasında bir değer | 0, "hepsi" olarak yorumlanır | 2.0+ |
Tüm ortam değişkenlerinin listesi için bkz. Nöron Çalışma Zamanı Yapılandırması.
Varsayılan olarak, modeller yüklenirken önceki ortam değişkenleri tarafından açıkça belirtilmediği sürece modeller NeuronCore 0'a ve ardından NeuronCore 1'e yüklenir. Daha önce belirtildiği gibi NeuronCores, mevcut ana bilgisayar vCPU'larını ve sistem belleğini paylaşır. Bu nedenle, her NeuronCore'da dağıtılan modeller mevcut kaynaklar için rekabet edecektir. Model büyük ölçüde NeuronCores'u kullanıyorsa bu bir sorun olmayacaktır. Ancak bir model yalnızca kısmen NeuronCores'ta ve geri kalanı ana bilgisayar vCPU'larında çalışıyorsa, o zaman NeuronCore başına CPU kullanılabilirliğini dikkate almak önemli hale gelir. Bu da örnek seçimini etkiler.
Aşağıdaki tablo, her bir NeuronCore'a bir model dağıtıldıysa, model başına kullanılabilen ana bilgisayar vCPU'larının ve sistem belleğinin sayısını gösterir. Uygulamanızın NeuronCore kullanımına, vCPU'suna ve bellek kullanımına bağlı olarak, uygulamanız için hangi yapılandırmanın en yüksek performansı gösterdiğini bulmak için testler yapmanız önerilir. bu Nöron Üst aracı çekirdek kullanımı ile cihaz ve ana bilgisayar belleği kullanımının görselleştirilmesine yardımcı olabilir. Bu ölçümlere dayanarak bilinçli bir karar verilebilir. Bu blogun sonunda Neuron Top kullanımını gösteriyoruz.
Örnek Boyutu | # Çıkarım Hızlandırıcıları | # Modeller | vCPU'lar/Model | Bellek/Model (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xlarge | 1 | 4 | 2 | 4 |
Inf1.6xlarge | 4 | 16 | 1.5 | 3 |
Inf1.24xlarge | 16 | 64 | 1.5 | 3 |
Örnek Boyutu | # Çıkarım Hızlandırıcıları | # Modeller | vCPU'lar/Model | Bellek/Model (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xlarge | 1 | 2 | 16 | 64 |
Inf2.24xlarge | 6 | 12 | 8 | 32 |
Inf2.48xlarge | 12 | 24 | 8 | 32 |
Neuron SDK özelliklerini kendiniz test etmek için en son sürüme göz atın PyTorch için nöron yetenekleri.
Sistem kurulumu
Bu çözüm için kullanılan sistem kurulumu aşağıdadır:
Çözümü kurun
Çözümü kurmak için yapmamız gereken birkaç şey var. EC2 bulut sunucunuzun üstleneceği ve itip çekmesine izin verecek bir IAM rolü oluşturarak başlayın. Amazon Elastik Konteyner Kayıt Defteri.
1. Adım: IAM rolünü ayarlayın
- Konsolda oturum açıp IAM > Roller > Rol Oluştur'a erişerek başlayın
- Güvenilir varlık türü seçin
AWS Service
- Kullanım durumu altında hizmet olarak EC2'yi seçin
- Tıkla Sonraki ve mevcut tüm politikaları görebileceksiniz
- Bu çözümün amacı doğrultusunda, EC2 bulut sunucumuza ECR'ye tam erişim izni vereceğiz. Şunun için filtre uygula: AmazonEC2ContainerRegistryFullAccess ve onu seçin.
- İleri'ye basın ve rolü adlandırın
inf-ecr-access
Not: Eklediğimiz politika, EC2 bulut sunucusuna Amazon ECR'ye tam erişim sağlar. Aşağıdakileri şiddetle tavsiye ederiz en az ayrıcalıklı müdür üretim iş yükleri için.
2. Adım: AWS CLI'yi Kurun
Yukarıda belirtilen, belirtilen Derin Öğrenme AMI'sini kullanıyorsanız AWS CLI kurulu olarak gelir. Farklı bir AMI (Amazon Linux 2023, Base Ubuntu vb.) kullanıyorsanız, aşağıdakileri yaparak CLI araçlarını kurun. Bu kılavuzu.
CLI araçlarını yükledikten sonra, CLI'yi şu komutu kullanarak yapılandırın: aws configure
. Erişim anahtarlarınız varsa bunları buraya ekleyebilirsiniz ancak AWS hizmetleriyle etkileşime geçmek için bunlara ihtiyacınız olmayabilir. Bunu yapmak için IAM rollerine güveniyoruz.
not: Varsayılan profili oluşturmak için en az bir değer (varsayılan bölge veya varsayılan biçim) girmemiz gerekiyor. Bu örnek için, us-east-2
bölge olarak ve json
varsayılan çıktı olarak.
Github deposunu klonlayın
The GitHub repo AWS Inferentia bulut sunucularında NeuronCores üzerinde FastAPI kullanan modelleri dağıtmak için gerekli tüm betikleri sağlar. Bu örnek, yeniden kullanılabilir çözümler oluşturabilmemizi sağlamak için Docker kapsayıcılarını kullanır. Bu örnekte aşağıdakiler yer almaktadır yapılandırma.özellikleri kullanıcıların girdi sağlaması için dosya.
Yapılandırma dosyası, Docker görüntüsü ve Docker kapsayıcıları için kullanıcı tanımlı ad öneklerine ihtiyaç duyar. bu build.sh
komut dosyası fastapi
ve trace-model
klasörler bunu Docker görüntüleri oluşturmak için kullanır.
AWS Inferentia'da bir model derleyin
Modeli izlemeye ve bir PyTorch Torchscript .pt dosyası oluşturmaya başlayacağız. Erişerek başlayın trace-model
dizini ve .env dosyasını değiştirme. Seçtiğiniz örneğin türüne bağlı olarak, CHIP_TYPE
içinde .env
dosya. Örnek olarak, rehber olarak Inf2'yi seçeceğiz. Aynı adımlar, Inf1 için dağıtım işlemi için de geçerlidir.
Daha sonra aynı dosyada varsayılan bölgeyi ayarlayın. Bu bölge bir ECR deposu oluşturmak için kullanılacak ve Docker görüntüleri bu depoya gönderilecek. Ayrıca bu klasörde, bir veriyi izlemek için gerekli tüm komut dosyalarını sağlıyoruz. bert-base-uncased
AWS Inferentia'daki model. Bu komut dosyası, şu adreste bulunan çoğu model için kullanılabilir: Sarılma Yüz. Dockerfile Neuron ile modelleri çalıştırmak için tüm bağımlılıklara sahiptir ve iz-model.py giriş noktası olarak kodlayın.
Neuron derlemesi açıklandı
Neuron SDK'nın API'si, PyTorch Python API'sine çok benzer. bu torch.jit.trace()
PyTorch'tan model ve örnek giriş tensörünü bağımsız değişken olarak alır. Örnek girdiler modele beslenir ve bu girdi modelin katmanlarında ilerlerken çağrılan işlemler şu şekilde kaydedilir: TorchScript. PyTorch'ta JIT İzleme hakkında daha fazla bilgi edinmek için aşağıdakilere bakın belgeleme.
Tıpkı torch.jit.trace()
, inf1 örnekleri için modelinizin AWS Inferentia'da aşağıdaki kodla derlenip derlenemeyeceğini kontrol edebilirsiniz.
inf2 için kitaplığın adı torch_neuronx
. İşte model derlemenizi inf2 örneklerine karşı nasıl test edebileceğiniz.
Trace örneğini oluşturduktan sonra örnek tensör girdisini şu şekilde iletebiliriz:
Son olarak elde edilen TorchScript çıktısını yerel diske kaydedin
Önceki kodda gösterildiği gibi, kullanabilirsiniz compiler_args
ve optimizations
dağıtımını optimize etmek için. için argümanların ayrıntılı bir listesi için torch.neuron.trace
API, bkz. PyTorch-Neuron izleme piton API'si.
Aşağıdaki önemli noktaları aklınızda bulundurun:
- Neuron SDK, bu yazı itibariyle dinamik tensör şekillerini desteklemiyor. Bu nedenle, bir modelin farklı giriş şekilleri için ayrı ayrı derlenmesi gerekecektir. Kovalama ile değişken giriş şekillerinde çıkarım çalıştırma hakkında daha fazla bilgi için bkz. Kovalama ile değişken giriş şekillerinde çıkarım çalıştırma.
- Bir modeli derlerken yetersiz bellek sorunlarıyla karşılaşırsanız, modeli daha fazla vCPU veya belleğe sahip bir AWS Inferentia bulut sunucusunda veya hatta derleme yalnızca CPU kullandığından büyük bir c6i veya r6i bulut sunucusunda derlemeyi deneyin. İzlenen model derlendikten sonra muhtemelen daha küçük AWS Inferentia bulut sunucusu boyutlarında çalıştırılabilir.
Yapı süreci açıklaması
Şimdi bu container'ı çalıştırarak oluşturacağız. inşa.sh. Derleme komut dosyası dosyası, temel bir Derin Öğrenme Kapsayıcı Görüntüsü çekerek ve HuggingFace'i yükleyerek basitçe Docker görüntüsünü oluşturur. transformers
paket. Göre CHIP_TYPE
belirtilen .env
dosya, docker.properties
dosya uygun olana karar verir BASE_IMAGE
. Bu BASE_IMAGE
AWS tarafından sağlanan Neuron Runtime için Derin Öğrenme Kapsayıcı Görüntüsüne işaret eder.
Özel bir ECR deposu aracılığıyla kullanılabilir. Görüntüyü çekebilmemiz için oturum açmamız ve geçici AWS kimlik bilgilerini almamız gerekiyor.
not: bölge bayrağı ile belirtilen komutta ve depo URI'sinde listelenen bölgeyi, içine koyduğumuz bölge ile değiştirmemiz gerekiyor. .env dosyası.
Bu işlemi kolaylaştırmak amacıyla, kullanabiliriz fetch-credentials.sh
dosya. Bölge .env dosyasından otomatik olarak alınacaktır.
Ardından, betiği kullanarak görüntüyü aktaracağız itme.sh. Aktarma betiği, Amazon ECR'de sizin için bir havuz oluşturur ve kapsayıcı görüntüsünü aktarır.
Son olarak, görüntü oluşturulduğunda ve gönderildiğinde, onu çalıştırarak bir kapsayıcı olarak çalıştırabiliriz. run.sh ve kuyruk çalıştırma günlükleri ile günlükler.sh. Derleyici günlüklerinde (aşağıdaki ekran görüntüsüne bakın), Neuron'da derlenen aritmetik operatörlerin yüzdesini ve Neuron'da başarıyla derlenen model alt grafiklerin yüzdesini göreceksiniz. Ekran görüntüsü, için derleyici günlüklerini gösterir. bert-base-uncased-squad2
modeli. Günlükler, aritmetik işleçlerin %95.64'ünün derlendiğini gösteriyor ve ayrıca Neuron'da derlenen ve desteklenmeyen işleçlerin bir listesini veriyor.
Burada bir listesi en son PyTorch Neuron paketinde desteklenen tüm operatörlerin sayısı. Benzer şekilde, işte liste en son PyTorch Neuronx paketinde desteklenen tüm operatörlerin.
Modelleri FastAPI ile dağıtın
Modeller derlendikten sonra izlenen model, trace-model
dosya. Bu örnekte, izlenen modeli 1'lik bir parti boyutu için yerleştirdik. Burada, daha yüksek bir parti boyutunun mümkün olmadığı veya gerekli olmadığı kullanım durumlarını hesaba katmak için 1'lik bir parti boyutunu dikkate alıyoruz. Daha yüksek parti boyutlarının gerekli olduğu kullanım durumları için, meşale.neuron.DataParalel (Inf1 için) veya torch.neuronx.DataParallel (Inf2 için) API de faydalı olabilir.
The hızlı api klasörü, modelleri FastAPI ile dağıtmak için gerekli tüm komut dosyalarını sağlar. Modelleri herhangi bir değişiklik yapmadan dağıtmak için basitçe konuşlandırma.sh komut dosyası oluşturur ve bir FastAPI kapsayıcı görüntüsü oluşturur, belirtilen sayıda çekirdek üzerinde kapsayıcılar çalıştırır ve her FastAPI model sunucusunda sunucu başına belirtilen sayıda modeli dağıtır. Bu klasör ayrıca bir .env
dosyayı doğru yansıtacak şekilde değiştirin CHIP_TYPE
ve AWS_DEFAULT_REGION
.
not: FastAPI betikleri, görüntüleri kapsayıcı olarak oluşturmak, göndermek ve çalıştırmak için kullanılan aynı ortam değişkenlerine dayanır. FastAPI dağıtım betikleri, bu değişkenlerden bilinen son değerleri kullanır. Bu nedenle, en son Inf1 örnek türü için modeli izlediyseniz, bu model bu komut dosyaları aracılığıyla dağıtılacaktır.
The fastapi-server.py Sunucuyu barındırmaktan ve istekleri modele göndermekten sorumlu dosya aşağıdakileri yapar:
- Özellikler dosyasından sunucu başına model sayısını ve derlenen modelin konumunu okur
- Görünür NeuronCores'ları Docker kapsayıcısına ortam değişkenleri olarak ayarlar ve hangi NeuronCore'ların kullanılacağını belirlemek için ortam değişkenlerini okur
- için bir çıkarım API'si sağlar.
bert-base-uncased-squad2
model - İle
jit.load()
, yapılandırmada belirtilen sunucu başına model sayısını yükler ve modelleri ve gerekli belirteçleri global sözlüklerde depolar
Bu kurulumla, her bir NeuronCore'da hangi modellerin ve kaç modelin depolandığını listeleyen API'leri ayarlamak nispeten kolay olacaktır. Benzer şekilde, belirli NeuronCore'lardan modelleri silmek için API'ler yazılabilir.
The Dockerfile FastAPI kapsayıcıları oluşturmak için, modelleri izlemek için oluşturduğumuz Docker görüntüsü üzerine kuruludur. Bu yüzden docker.properties file, modelleri izlemek için Docker görüntüsüne giden ECR yolunu belirtir. Kurulumumuzda, tüm NeuronCore'lardaki Docker kapsayıcıları benzerdir, dolayısıyla tek bir görüntü oluşturabilir ve bir görüntüden birden çok kapsayıcı çalıştırabiliriz. Herhangi bir giriş noktası hatasından kaçınmak için, ENTRYPOINT ["/usr/bin/env"]
çalıştırmadan önce Dockerfile içinde startup.sh
gibi görünen komut dosyası hypercorn fastapi-server:app -b 0.0.0.0:8080
. Bu başlangıç komut dosyası, tüm kapsayıcılar için aynıdır. İzleme modelleri ile aynı temel görüntüyü kullanıyorsanız, bu kapsayıcıyı yalnızca build.sh betiğini çalıştırarak oluşturabilirsiniz. bu push.sh
komut dosyası, izleme modelleri için öncekiyle aynı kalır. Değiştirilen Docker görüntüsü ve kapsayıcı adı, docker.properties
dosyası.
The run.sh file
aşağıdakileri yapar:
- Docker görüntüsünü ve kapsayıcı adını okur. özellikleri sırayla okuyan dosya
config.properties
dosyası olan birnum_cores
Kullanıcı ayarları - 0'dan bir döngü başlatır
num_cores
ve her çekirdek için:- Bağlantı noktası numarasını ve cihaz numarasını ayarlar
- Ayarlar
NEURON_RT_VISIBLE_CORES
Çevre değişkeni - Birim bağlamayı belirtir
- Bir Docker konteyneri çalıştırır
Anlaşılır olması için Inf0 için NeuronCore 1'da konuşlandırmaya yönelik Docker çalıştırma komutu aşağıdaki kod gibi görünür:
NeuronCore 5'te dağıtmak için çalıştırma komutu aşağıdaki kod gibi görünür:
Kapsayıcılar konuşlandırıldıktan sonra, run_apis.py API'leri paralel iş parçacıklarında çağıran komut dosyası. Kod, her biri NeuronCore'da bir tane olmak üzere dağıtılan altı modeli çağıracak şekilde ayarlanmıştır, ancak kolayca farklı bir ayara değiştirilebilir. API'leri müşteri tarafından şu şekilde çağırıyoruz:
NeuronCore'u izleyin
Model sunucular devreye alındıktan sonra, NeuronCore kullanımını izlemek için şunları kullanabiliriz: neuron-top
her bir NeuronCore'un kullanım yüzdesini gerçek zamanlı olarak gözlemlemek için. nöron üstü NeuronCore, vCPU ve bellek kullanımı gibi bilgileri sağlamak için Neuron SDK'daki bir CLI aracıdır. Ayrı bir terminalde aşağıdaki komutu girin:
Çıktınız aşağıdaki şekle benzer olmalıdır. Bu senaryoda, bir Inf2.xlarge örneğinde sunucu başına iki NeuronCores ve iki model kullanmayı belirledik. Aşağıdaki ekran görüntüsü, her biri 287.8 MB boyutunda iki modelin iki NeuronCore'a yüklendiğini göstermektedir. Toplam 4 model yüklendiğinde, kullanılan cihaz hafızasının 1.3 GB olduğunu görebilirsiniz. Farklı cihazlarda NeuronCores arasında geçiş yapmak için ok tuşlarını kullanın
Benzer şekilde, bir Inf1.16xlarge bulut sunucusu tipinde toplam 12 modelin (2 çekirdek üzerinden çekirdek başına 6 model) yüklü olduğunu görüyoruz. Toplam 2.1 GB bellek tüketilir ve her model 177.2 MB boyutundadır.
Koştuktan sonra run_apis.py komut dosyasında, altı NeuronCore'un her birinin kullanım yüzdesini görebilirsiniz (aşağıdaki ekran görüntüsüne bakın). Ayrıca sistem vCPU kullanımını ve çalışma zamanı vCPU kullanımını da görebilirsiniz.
Aşağıdaki ekran görüntüsü, Inf2 bulut sunucusu çekirdek kullanım yüzdesini gösterir.
Benzer şekilde, bu ekran görüntüsü bir inf1.6xlarge bulut sunucusu tipindeki temel kullanımı gösterir.
Temizlemek
Oluşturduğunuz tüm Docker kapsayıcılarını temizlemek için bir temizlik.sh çalışan ve durdurulan tüm kapsayıcıları kaldıran komut dosyası. Bu komut dosyası tüm kapsayıcıları kaldıracaktır, bu nedenle bazı kapları çalışır durumda tutmak istiyorsanız onu kullanmayın.
Sonuç
Üretim iş yükleri genellikle yüksek aktarım hızına, düşük gecikme süresine ve maliyet gereksinimlerine sahiptir. Hızlandırıcıları yetersiz bir şekilde kullanan verimsiz mimariler, gereksiz yere yüksek üretim maliyetlerine yol açabilir. Bu gönderide, minimum gecikmeyle iş hacmini en üst düzeye çıkarmak için NeuronCores'u FastAPI ile en iyi şekilde nasıl kullanabileceğimizi gösterdik. Talimatları sayfamızda yayınladık. GitHub repo. Bu çözüm mimarisiyle, her bir NeuronCore'da birden çok model dağıtabilir ve performans kaybı yaşamadan birden çok modeli farklı NeuronCore'larda paralel olarak çalıştırabilirsiniz. Modellerin aşağıdaki gibi hizmetlerle geniş ölçekte nasıl dağıtılacağı hakkında daha fazla bilgi için Amazon Elastik Kubernetes Hizmeti (Amazon EKS), bkz. AWS Inferentia ile Amazon EKS'de saatte 3,000 ABD dolarının altında bir ücret karşılığında 50 derin öğrenme modeli sunun.
yazarlar hakkında
Ankur Srivastava ML Frameworks Ekibinde Kıdemli Çözümler Mimarıdır. AWS'de müşterilere kendi kendini yöneten dağıtılmış eğitim ve geniş ölçekte çıkarımla yardımcı olmaya odaklanıyor. Tecrübesi endüstriyel kestirimci bakım, dijital ikizler, olasılıksal tasarım optimizasyonunu içerir ve doktora çalışmalarını Rice Üniversitesi'nde Makine Mühendisliği'nde ve doktora sonrası araştırmalarını Massachusetts Teknoloji Enstitüsü'nde tamamlamıştır.
KC Tung AWS Annapurna Labs'ta Kıdemli Çözüm Mimarıdır. Büyük derin öğrenme modeli eğitimi ve bulutta geniş ölçekte devreye alma konusunda uzmandır. Doktorası var. Dallas'taki Texas Güneybatı Tıp Merkezi Üniversitesi'nden moleküler biyofizikte. AWS Zirvelerinde ve AWS Reinvent'te konuşma yaptı. Bugün, müşterilerin AWS bulutunda büyük PyTorch ve TensorFlow modellerini eğitmelerine ve dağıtmalarına yardımcı oluyor. O iki kitabın yazarıdır: TensorFlow Enterprise'ı Öğrenin ve TensorFlow 2 Cep Referansı.
Pronoy Chopra AWS'de Startups Generative AI ekibinde Kıdemli Çözüm Mimarıdır. Nesnelerin İnterneti ve Makine Öğrenimi çözümlerini tasarlama ve geliştirme konusunda uzmandır. Geçmişte iki girişimin kurucu ortağı oldu ve IoT, AI/ML ve Sunucusuz alandaki projelerde uygulamalı olmaktan keyif alıyor.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. Otomotiv / EV'ler, karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- Blok Ofsetleri. Çevre Dengeleme Sahipliğini Modernleştirme. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :vardır
- :dır-dir
- :olumsuzluk
- :Neresi
- $UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- İNDİRİM
- 2023
- 7
- 8
- 91
- a
- Yapabilmek
- Hakkımızda
- yukarıdaki
- soyutlama
- hızlandırıcılar
- erişim
- erişme
- göre
- Hesap
- Başarmak
- karşısında
- aktif
- eklemek
- karşı
- AI
- AI / ML
- Türkiye
- izin vermek
- veriyor
- Ayrıca
- Amazon
- Amazon EC2
- Amazon Web Servisleri
- an
- ve
- herhangi
- api
- API'ler
- uygulamayı yükleyeceğiz
- Uygulama
- uygulamaları
- Tamam
- uygun
- mimari
- ARE
- argümanlar
- AS
- üstlenmek
- At
- yazar
- otomatik olarak
- kullanılabilirliği
- mevcut
- önlemek
- AWS
- AWS Çıkarımları
- baz
- merkezli
- BE
- Çünkü
- müşterimiz
- olmuştur
- önce
- adına
- davranış
- olmak
- yarar
- faydaları
- İYİ
- en iyi uygulamalar
- arasında
- Biyofizik
- Bit
- Blog
- Kitaplar
- inşa etmek
- bina
- yapılı
- fakat
- by
- çağrı
- denilen
- aramalar
- CAN
- yetenekleri
- kabiliyet
- hangi
- dava
- durumlarda
- Merkez
- değişiklik
- değişmiş
- değişiklikler
- Kontrol
- cips
- seçim
- Klinik
- seçti
- berraklık
- müşteri
- yakından
- bulut
- kod
- geliyor
- karşılaştırma
- yarışmak
- Tamamlandı
- hesaplamak
- yapılandırma
- Düşünmek
- düşünen
- konsolos
- tüketilen
- içermek
- Konteyner
- Konteynerler
- içeren
- bağlam
- devamlı olarak
- kontrast
- kontrol
- kontrollü
- Uygun
- çekirdek
- doğru
- Ücret
- maliyetler
- olabilir
- Çift
- yaratmak
- çevrimiçi kurslar düzenliyorlar.
- oluşturur
- Oluşturma
- Tanıtım
- çok önemli
- Müşteriler
- Dallas
- karar
- derin
- derin öğrenme
- derin
- Varsayılan
- göstermek
- bağlı
- dağıtmak
- konuşlandırılmış
- dağıtma
- açılma
- Dizayn
- belirlenen
- Rağmen
- detaylı
- belirleyen
- gelişen
- cihaz
- Cihaz
- farklı
- Yayılma
- KAZ
- dijital
- Dijital ikizler
- dağıtıldı
- dağıtılmış eğitim
- Django
- do
- liman işçisi
- yok
- Değil
- domain
- Dont
- dinamik
- her
- Daha erken
- kolay
- kolayca
- kolay
- EC
- etkili bir şekilde
- son
- Son nokta
- meşgul
- Mühendislik
- sağlamak
- Keşfet
- varlık
- giriş
- çevre
- Hatalar
- vb
- Hatta
- Her
- gelişen
- örnek
- Dışında
- deneyim
- uzantıları
- Yüz
- aile
- Daha hızlı
- mümkün
- Özellikler
- Fed
- daha az
- şekil
- fileto
- filtre
- Nihayet
- bulmak
- Ad
- odaklanır
- takip etme
- şu
- İçin
- biçim
- bulundu
- dört
- iskelet
- çerçeveler
- itibaren
- tam
- tamamen
- işlev
- geçit
- üretken
- üretken yapay zeka
- almak
- GitHub
- Vermek
- verir
- Küresel
- gidiş
- rehberlik
- sap
- hands-on
- donanım
- Var
- he
- yardım et
- yardım
- yardımcı olur
- okuyun
- Yüksek
- daha yüksek
- en yüksek
- onun
- ev sahibi
- ev sahipliği yaptı
- hosting
- ana
- Ne kadar
- Nasıl Yapılır
- Ancak
- HTML
- http
- HTTPS
- SarılmaYüz
- ID
- ideal
- tespit
- if
- görüntü
- görüntüleri
- ithalat
- önemli
- in
- dahil
- içerir
- Gelen
- Artışlar
- Sanayi
- verimsiz
- bilgi
- bilgi
- giriş
- girişler
- kurmak
- yüklü
- yükleme
- örnek
- yerine
- Enstitü
- talimatlar
- etkileşim
- içine
- çağrılan
- IOT
- konu
- sorunlar
- IT
- ONUN
- JIT
- jpg
- sadece
- tutmak
- anahtarlar
- Bilmek
- bilinen
- Labs
- dil
- büyük
- Soyad
- Gecikme
- son
- başlatmak
- tabaka
- katmanları
- öncülük etmek
- ÖĞRENİN
- öğrenme
- seviye
- Kütüphane
- sevmek
- linux
- Liste
- Listelenmiş
- küçük
- biraz daha derin
- Yüksek Lisans
- yükleme
- yükler
- yerel
- yer
- günlüğü
- giriş
- Bakın
- gibi görünmek
- GÖRÜNÜYOR
- kaybetme
- Düşük
- alt
- en düşük
- makine
- makine öğrenme
- yapılmış
- bakım
- yapmak
- YAPAR
- Yapımı
- çok
- massachusetts
- Massachusetts Teknoloji Enstitüsü
- maksimum
- Maksimuma çıkarmak
- maksimum
- Mayıs..
- mekanik
- tıbbi
- Bellek
- Metrikleri
- akla
- asgari
- ML
- model
- modelleri
- değiştirilmiş
- değiştirmek
- moleküler
- izlemek
- Daha
- çoğu
- hareket
- çok
- çoklu
- şart
- isim
- zorunlu olarak
- gerekli
- gerek
- gerekli
- ihtiyaçlar
- yeni
- sonraki
- şimdi
- numara
- nesnel
- gözlemek
- of
- teklif
- sık sık
- on
- bir Zamanlar
- ONE
- bir tek
- üstüne
- açık kaynak
- işletmek
- Operasyon
- operatörler
- karşı
- optimizasyon
- optimize
- optimize
- or
- bizim
- dışarı
- çıktı
- tekrar
- paket
- Paralel
- Bölüm
- geçmek
- geçmiş
- yol
- başına
- yüzde
- performans
- Platon
- Plato Veri Zekası
- PlatoVeri
- Nokta
- noktaları
- politikaları
- politika
- Popüler
- mümkün
- Çivi
- uygulamalar
- mevcut
- özel
- muhtemelen
- süreç
- Süreçler
- üreten
- üretim
- Profil
- Projeler
- özellikleri
- sağlamak
- sağlanan
- sağlar
- vekil
- yayınlanan
- çeken
- amaç
- Itmek
- itti
- iter
- koymak
- Python
- pytorch
- menzil
- gerçek
- gerçek zaman
- tavsiye etmek
- Tavsiye edilen
- kaydedilmiş
- yansıtmak
- bölge
- Nispeten
- güvenmek
- güvenerek
- kalıntılar
- Kaldır
- değiştirmek
- Depo
- isteklerinizi
- gereklidir
- Yer Alan Kurallar
- araştırma
- benzer,
- Rezerv
- ayrılmış
- Kaynaklar
- yanıt
- sorumlu
- DİNLENME
- Ortaya çıkan
- yeniden kullanılabilir
- Pirinç
- Rol
- rolleri
- koşmak
- koşu
- ishal
- feda
- aynı
- İndirim
- ölçek
- senaryo
- scriptler
- sdk
- görmek
- seçim
- gönderme
- kıdemli
- hassas
- ayrı
- Serverless
- Sunucular
- hizmet
- Hizmetler
- servis
- set
- ayar
- kurulum
- şekiller
- paylaş
- Paylaşılan
- meli
- şov
- gösterdi
- gösterilen
- Gösteriler
- yan
- benzer
- benzer şekilde
- sadece
- ALTINCI
- beden
- boyutları
- daha küçük
- So
- çözüm
- Çözümler
- biraz
- uzmanlaşmış
- özel
- Belirtilen
- konuşulan
- kararlı
- yığın
- başlama
- başlangıç
- Startups
- belirtilen
- Basamaklar
- durdu
- saklı
- mağaza
- şiddetle
- çalışmalar
- Başarılı olarak
- böyle
- zirveler
- destek
- destekli
- elbette
- sistem
- tablo
- Bizi daha iyi tanımak için
- alınan
- alır
- takım
- Teknoloji
- geçici
- tensorflow
- terminal
- test
- Test yapmak
- testleri
- Teksas
- göre
- o
- The
- ve bazı Asya
- Onları
- sonra
- bu nedenle
- Bunlar
- onlar
- işler
- Re-Tweet
- Bu
- İçinden
- verim
- bağlı
- zaman
- için
- bugün
- araç
- araçlar
- üst
- meşale
- Toplam
- Iz
- İzleme
- geleneksel
- Tren
- Eğitim
- transformatörler
- Güvenilir
- denemek
- DÖNÜŞ
- ikizler
- iki
- tip
- Ubuntu
- altında
- altında yatan
- üniversite
- unix
- boşu boşuna
- üzerine
- us
- kullanım
- kullanım
- Kullanılmış
- kullanıcı
- kullanıcılar
- kullanım
- kullanma
- kullanmak
- kullanır
- Kullanılması
- değer
- Değerler
- versiyon
- çok
- gözle görülür
- vizyonumuz
- hacim
- istemek
- oldu
- Yol..
- we
- ağ
- web sunucusu
- web hizmetleri
- İYİ
- vardı
- ne zaman
- hangi
- neden
- geniş ölçüde
- irade
- ile
- içinde
- olmadan
- işçi
- işçiler
- olur
- yazı yazıyor
- yazılı
- Sen
- kendiniz
- zefirnet
- sıfır