DL modelinin performansını iyileştirmek için Ali mühendisleri bir akış programlama çerçevesi oluşturdu

Alimei's Guide: Derin öğrenmenin küresel popülaritesiyle birlikte, algoritma modelleri birbiri ardına ortaya çıkıyor ve algoritmaların üretim ortamlarında nasıl uygulanacağı sıcak bir araştırma alanı haline geldi. Şu anda, algoritmanın verimliliğini artırmanın ana odak noktası model yapısını optimize etmek, ağırlık verilerini ölçmek ve grafiği optimize etmektir, ancak bunlar model doğruluğuna az çok belirli bir kayıp getirecek ve tam kayıpsız optimizasyona ulaşamayacaklardır.

Mühendislik geliştiricileri olarak, modelin yürütme modundan uygun dönüşümü ve optimizasyonu yapabilir miyiz? Boru hattı operasyonunun mükemmel performansı endüstriyel alana yansıtılmıştır. Algoritma geliştirmenin karmaşıklığını artırmadan AI görev planlama sistemine uygulanabilir mi? Bu sorunlara dayanarak, akış programlama çerçevemiz ortaya çıktı.

1. Arkaplan

İnternetin ikinci yarısına girerken, demografik temettü giderek zayıfladı ve yeni perakende, çevrimdışı trafik elde etmek için önemli portallardan biri haline geldi. Alibaba arama ekibi ayrıca yeni perakende alanını aktif olarak araştırdı ve çevrimdışı süpermarketleri dijital olarak yükseltmek için bir yolcu akışı projesi oluşturdu.Tüccarlar, alışveriş deneyimini geliştirmek için tüketicilerin niyetlerine göre ilgili iyileştirmeleri ve yükseltmeleri belirledi. Aşağıdaki şekil çevrimdışı mağazanın gerçek sahnesinin örnek verilerini göstermektedir.Şekilden, gerçek süpermarket ortamının daha karmaşık olduğunu ve personel dağılımının ortama bağlı olarak büyük ölçüde değiştiğini görebilirsiniz.Karmaşık bir ortamda iyi veriler elde etmek gerekir. Çıkarma etkisi, derin öğrenme modelinin nispeten yüksek doğruluğunu, büyük miktarda model hesaplamasını ve donanım kaynakları için yüksek gereksinimleri gerektirir.

Yolcu akışı projesinin genel yazılım mühendisliği modülünün ana bileşenleri aşağıdaki gibidir:

Üretim ortamında, kamera çözünürlüğü temelde 1080 * 1920'nin üzerindedir ve kamera sayısı nispeten fazladır (bazı mağazalarda 30'a kadar). Konuşlandırılanların tümü, büyük miktarda hesaplama ve yüksek hassasiyete sahip derin AI modelleridir (yaya algılama, Yaya yeniden tanıma ve eylem tanıma ve diğer ağ modelleri), çevrimdışı sahnede kullanılan makine GPU'su GTX1060'tır. Bu yapılandırmaya sahip makine, saniyede çok fazla veri işlemeyi gerektiriyor ki bu açıkçası çok zor. Mühendislik ekibimiz, yapay zeka hesaplamalarının nasıl verimli bir şekilde gerçekleştirileceği konusunda derinlemesine araştırma yaptı. Araştırma ve keşfe dayalı olarak, modelin boru hattı operasyon optimizasyon planı önerilmiştir. Boru hattı görev planlamasının avantajları aşağıdaki şekil ile açık bir şekilde açıklanabilir:

Yukarıdaki şekilde kullanılan beş aşamalı boru hattı açıklamak için kullanılmıştır Boru hattı modunun aynı anda bir komutun yürütülmesini beşe çıkardığı, bu da işlem hızının 5 kat arttığı anlamına gelir. Ardışık düzenin performans iyileştirmedeki şaşırtıcı etkisi nedeniyle, donanım kaynaklarından daha fazla yararlanmak, CPU / GPU'nun hesaplama potansiyelini tam olarak kullanmak ve mükemmel sonuçlar elde etmek için derin öğrenmenin mühendislik optimizasyonuna boru hattı teknolojisini ekledik. . Bazı insanlar bunu başarmak için neden geleneksel eşzamanlı yöntemi kullanmadığını merak edebilir. Örneğin, her biri üç işlemle işlenen toplam üç video vardır ve her işlem tüm görevleri bitirir, böylece eşzamanlı efektler de elde edilebilir. Bu basit eşzamanlılığın kullanılmamasının nedeni aşağıdaki gibidir:

1. Model görevleri birbirine bağlıdır Basit çok işlemli eşzamanlılık kullanıyorsanız, yürütmenin ortasında diğer işlemlerin verilerini beklemeniz gerekir, bu da kaynak israfına neden olur.Örneğin, kameralar arasında izleme yaparken, tüm kamera verilerini gerçekleştirmeniz gerekir. Analiz, bu, bir işlemin görevinin diğer işlemlerin diğer kamera verilerini işlemesini beklemesine ve ardından birleşik zamanlama analizi gerçekleştirmesine neden olacaktır.Bu süreçler arası bağımlılık ve karşılıklı bekleme, işletim verimliliğini ciddi şekilde azaltacaktır.

2. Bir makinedeki kaynaklar sınırlıdır. Birden çok işlem, depolama kaynaklarını ve bilgi işlem kaynaklarını tekeline alır. Ayrı işlemler gerçekleştirmek için birden çok işlem, çok sayıda kaynağı kullanacak şekilde birden çok Tensorflow örneğinin açılması gerektiği anlamına gelir. Bellek kaynakları yetersiz olduğunda, tetiklenecektir. Sanal bellek değişimi çok sıkıştı, bu da işletim verimliliğinde keskin bir düşüşe ve hatta sık sık çökmelere neden olur.

3. Bilgi işlem kaynaklarını birden çok işlem arasında değiştirmek, bilgi işlem verimliliğini büyük ölçüde azaltacaktır.

4. Boru hattı teknolojisi, sınırlı kaynakların maksimum etkiyle kullanılabilmesi için yürütme görevlerini keser ve yeniden düzenler.

Basit paralelliğin birçok sınırlaması nedeniyle, mühendislik kodunu bir ardışık düzen moduna dönüştürdük ve yapay zeka görevlerinin ardışık düzen işletim modunun gerçek zamanlı yayınlanması, projenin performansını büyük ölçüde artırdı. Bir öncekinden, yalnızca 8 kanallı kamera verilerinin gerçek zamanlı işlenmesini destekliyor. 16 kamera ile bilgi işlem verimliliği iki katına çıktı, kaynak kullanımı da büyük ölçüde iyileştirildi, donanım kaynakları en üst düzeye çıkarıldı ve aynı donanım kaynakları altında işlenebilecek veri miktarı iki katına çıktı.

Tabii ki, bu dönüşüm süreci aynı zamanda maliyetlidir ve boru hattı teknolojisinin getirdiği bilgi işlem verimliliğindeki artışın tadını çıkarırken, aynı zamanda kod karmaşıklığında da katlanarak artış sağlar. Gerçek üretim sürecinde, manuel montaj hattının ana dezavantajları şunlardır:

  • Model yineleme verimliliği düşüktür: yeni model işlevlerinin eklenmesi çok fazla dönüşüm maliyeti gerektirir ve temelde algoritmadan önce yazılan kodu yeniden yapılandırmak ve bunu boru hattı koduna entegre etmek gereklidir;
  • Görev planlaması ve algoritma mantığı birbiriyle bağlantılıdır: yüksek seviyeli dilden montaj diline geçme hissi verir, kodun belirsizlik derecesi hayal edilebilir;
  • Yetersiz esneklik: Görevleri tanımlama yeteneği güçlü değildir, görev zamanlaması yeterince esnek değildir ve soyutlama derecesi düşüktür Bazı yeni optimizasyon önlemlerini uygulamak zordur.

Bu eksiklikler, optimizasyon şemasının uygulanmasını ciddi şekilde kısıtlamaktadır Modelin yinelemeli verimliliğini etkilemeden hesaplama verimliliğini nasıl artırabiliriz? Algoritma öğrencilerinin başlamasını kolaylaştırmak daha iyidir.Bu durumda, otomatik görev boru hattı çerçevesi ortaya çıkar.

2. Yapay olarak inşa edilmiş montaj hattı ile otomatik montaj hattı arasındaki ana karşılaştırma

Yapay montaj hattı: Bu, algoritma işleminin manuel olarak bölünmesi gerektiği ve görevin insan eti tarafından bağımsız bir süreçte çalıştırıldığı ve veri kanalının oldukça özelleştirilmesi gerektiği anlamına gelir.

Otomatik montaj hattı: Tüm görev planlama süreçlerine atıfta bulunur ve veri kanalı yapımı tamamen otomatiktir.Yalnızca modeli eğitirken kodu aktarması gerekir ve boru hattı görev planlaması için gereken ara süreci önemsemeye gerek yoktur.

Algoritma mantığını ve boru hattı planlama mantığını, veri hattı oluşturma, geliştirme esnekliği, kararlılık ve diğer yönleri karşılaştırdık.Aşağıdaki tablodan, önceki sürümde boru hatlarını manuel olarak oluşturmanın geliştirme deneyiminin oldukça kötü olduğunu görebiliriz. Tüm yönler, tam otomatik montaj hattı çerçevesinin performansıdır.

Üç, sistem çerçevesine giriş

1. Tasarım konsepti

Bu tür bir görev otomatik boru hattı çerçevesinin geliştirilmesinin başlangıcında, hangi programlama dilinin kullanılacağı ve algoritmanın algoritma görevini basit ve verimli bir şekilde tanımlamada nasıl yetkin hale getirileceği konusunda çeşitli tartışmalar ve gösteriler yaptık.Bu çerçeveye dayalı hedef müşteri, derin modelin algoritma sınıf arkadaşıdır. Tüm girişimler ve optimizasyon noktaları aşağıdaki iki konsepte dayanacaktır:

  • İlk önemli nokta, model eğitildikten hemen sonra kodu yeniden kullanmaktır: Kod, model eğitildikten sonra çalıştırılmak üzere doğrudan üretim ortamına aktarılabilir.
  • Hizmet algoritması sınıf arkadaşlarını ilk kriter olarak alın: model görev tanımı basit, verimli ve kullanımı kolaydır.
  • Derin öğrenme algoritması öğrencilerinin çoğunun modeli eğitirken Python diline dayalı kodlama yaptıkları gerçeği göz önüne alındığında, kullandıkları eğitim çerçevesi popüler Tensorflow'dur.Algoritma öğrencileriyle tartıştıktan sonra, geliştirme için kararlı bir şekilde Python dilini seçiyoruz, bu daha büyük ölçüde geliştirilebilir Algoritma modelinin yinelemeli verimliliği ve AI görevlerinin açıklaması, aynı zamanda, algoritma öğrencilerinin geliştirme zorluğunu ve öğrenme maliyetini büyük ölçüde basitleştirebilen ve öğrenmesi kolay olan Tensorflow tarafından model oluşturma sürecini ifade eder.

    2. Sistem başlatma süreci

    Tensorflow'un modele ilişkin güçlü açıklamasından ödünç alınmıştır. Tensorflow çerçevesinin yapım ve işletim sürecine bakın. Otomatik boru hattı çerçevesinin başlatma ve çalıştırma süreci aşağıdaki gibidir:

    Temel olarak şu üç aşamaya bölünmüş olan çerçevenin çalışan akış şemasından sezgisel olarak görülebilir: görev tanımı, görev ilişkisi grafiği oluşturma ve grafik işlemi. Bu süreçler Tensorflow'un başlangıç süreciyle karşılaştırılabilir. Çerçeve işleminden, kullanacaktır. Tensorflow algoritması öğrencileri, otomatik boru hattı görev planlama çerçevesini kullanmak için kesinlikle çok uygun olacaktır.

    3. Ana modüller

    Fabrika görev planlamasının ve izlemesinin eksiksizliğine göre, boru hattı işletim döneminin her aşaması için yüksek derecede soyutlama gerçekleştirdik. Bunların arasında, her bir süreç modülü, çerçevenin anlaşılmasını ve soyutlanmasını kolaylaştıran gerçek fabrika atölye çalışma mekanizması ile son derece bütünleştirilmiştir. Tam bir görev otomasyonu seti geliştirdik. Programlama ve izleme için veri fabrikası sistemi, boru hatları arasındaki veri aktarımını ve iletişim gereksinimlerini tamamlamak için IPC çapraz işlem iletişim mekanizmasını ve SHA paylaşılan bellek teknolojisini kullanır.Fabrikanın tüm yaşam döngüsü boyunca, üst katman tarafından büyük miktarda görüntü verisi girişini otomatik olarak işlemekten sorumlu olmak gerekir. Verimli işleme, veri özellikleri üretme ve bunları iş kullanımı için sunucuya geri gönderme.

    Tüm fabrika çerçevesine dahil olan ana modüller şunlardır:

    Görev ayrıştırıcı: Algoritma tarafından açıklanan görev akış grafiğini ayrıştırmaktan, veri akışı ardışık düzeninin sıralanmasını tamamlamaktan ve görevlerin ve ardışık düzenlerin bağlanmasından sorumludur.

    Görev planlama yöneticisi: Temel olarak, ardışık düzen üzerindeki görevlerin planlanmasından ve yönetilmesinden sorumludur (örneğin: daha kalabalık ardışık düzenlere sahip görevlere daha fazla kaynak planlama, veri olmadığında uyumak).

    Olağanüstü durum kurtarma: Veri işleme sırasında boru hattı anormal bir çıkışla karşılaştığında, boru hattı verilerinin normal akışını sağlamak için çalışmaya devam etmek için yeni bir işlem oluşturulur.

    Görev monitörü: Boru hattı görevlerinin yürütülmesini izlemekten sorumludur, sonsuz bir döngü veya anormallik varsa, zamanında bulunabilir.

    Çapraz işlem veri hattı: Verilerin ardışık düzenten başka bir boru hattına geçirilmesinden sorumludur.

    Yukarıdaki ana modüller aracılığıyla, fabrikanın çalışma ortamını başarıyla kurabilir ve temel anormal kurtarma ve izleme işlemlerini gerçekleştirebilir, böylece fabrikada istikrarlı ve iyi bir çalışma ortamı sağlayabiliriz.

    Dördüncü olarak, akış programlama

    Algoritmaların yapay zeka görevlerini (ön işleme, çıkarım, sonradan işleme gibi) bölümlere ayırması, bunları bağımsız hesaplama modüllerine paketlemesi ve ardından görevin giriş ve çıkış arabirimlerinin veri yapısını, görevler arasındaki bağımlılıkları ve süreçler arası kanalları tanımlamak için otomatik işlem hattı çerçevesi API'sini kullanması gerekir. Referans fabrikanın veri yapısı aşağıdaki şekilde gösterilmektedir:

    Fabrika inşa sürecini açıklayan ana modüller aşağıdaki şekilde gösterilmektedir: Geliştirme tanımlama süreci esas olarak AI görevinin giriş ve çıkış veri yapısının tanımını ve yürütme fonksiyon adını (fonksiyon gövdesine işaret eden) içerir. Veri yapısı, ağaç veri yapısı tanımını destekler. Fabrikadaki ayrıştırıcı, girdi ve çıktı veri yapısının tanımına göre her bir görev ilişkisinin ayrıştırılmasından ve çapraz işlem bellek yöneticisi aracılığıyla veri akışı boru hattının oluşturulmasından sorumludur. Görev veri akışı ilişkisi, görevler arası bağımlılıklar aracılığıyla kurulur.Bellek kullanımının verimliliğini artırmak için, resimler için özel olarak çok kanallı bir paylaşım boru hattı tasarladık ve bir resim dizini kuyruğu oluşturduk.Görev yalnızca paylaşılan boru hattından resim dizinine göre işlenmesi gereken resimleri elde etmek, kaydetmek Görüntü verilerinin akışını ortadan kaldırarak, görüntülerin zaman alıcı depolanmasını büyük ölçüde artırır ve ayrıca bellek tasarrufu sağlar. Yürütme görevi varlığını oluşturmak ve bunu yürütme işleminin görev listesine yerleştirmek için yürütme işlevi adını kullanın.

    Beş, görev planlama sistemi

    CPU çok çekirdekli olduğunda, birden çok iş parçacığının aynı anda yürütülmesini destekler. Ancak Python ortamında, CPU kaç çekirdek olursa olsun, Python yorumlayıcısı bir seferde yalnızca bir iş parçacığı tarafından elde edilebilir. Temel neden GIL'in varlığıdır. GIL büyük bir kilittir. Bir iş parçacığı yürütüldüğünde, yorumlayıcıyı elde etmek için bu kilidi edinmesi gerekir. Aynı işlemin yalnızca bir GIL kilidi vardır. Bu kilidi alamayan iş parçacıkları, çalıştırmadan önce yalnızca diğer iş parçacıklarının GIL kilidini serbest bırakmasını bekleyebilir. Bu nedenle, Python'da çok iş parçacıklı eşzamanlılık mantıksal olarak eşzamanlıdır ve fiziksel olarak seri olarak yürütülür.İlgili öğrenciler GIL'in geleceğini kendi başlarına öğrenebilirler.

    GIL kilidinin varlığından dolayı, AI Çıkarım alt görev eşzamanlılığı elde etme ve çoklu iş parçacığı ile verimliliği artırma arzusu başarısız olduktan sonra, yüksek eşzamanlılık elde etmek ve veri verimini artırmak için CPU'nun çok çekirdeğini kullanmak için yalnızca çoklu süreçleri seçebiliriz. Zamanın% 90'ından fazlasını karşılaması ve yalnızca aynı tür kaynakları kullanması gerekir (örneğin, yalnızca CPU veya GPU) Bu koşul karşılanmazsa, donanım kaynaklarının kullanımını en üst düzeye çıkarmanın bir yolu yoktur.

    1. Görev ardışık düzeni yürütme süreci

    Örnek olarak on görev ve dört işlem hattı olduğunu varsayalım Görevler ve veri aktarım kanalları aşağıdaki şekilde gösterilmektedir.Her görevin zaman tüketimi ve gerekli CPU / GPU kaynakları farklıdır. Görev dağıtma sürecinde kaynaklar ve kaynaklar dikkate alınacaktır. Göreceli bir denge sağlamak ve ardından her görevi farklı ardışık düzenlerde dağıtmak için zaman alıcı ihtiyaçlar Görev dağıtıldıktan sonra, veri akışı düzensiz görünecek, ancak gerçekte, genellikle veri akışına engel yoktur. Teorik mantık perspektifinden bakıldığında, her görev seri olarak çalışır, ancak her görevin fiili yürütülmesinden ve zamanlama mekanizmasından her görev bağımsız ve eşzamanlı olarak yürütülür.

    Her boru hattı görevinin yürütülmesi, bağımsız bir görev planlama yöneticisi tarafından kontrol edilir.Döngüsel veri işleme sürecinde, sıkışık bazı giriş boru hatları veya çıkış boru hatları olacaktır, bazı görevlerin verileri toplu olarak çalıştırması gerekir, ancak görevin boru hattı kapasitesi veya verileri uyum sağlamak için yeterli değildir Elbette çok fazla toplu veri var, tek tek listelenmeyen başka koşullar da var. Şu anda, diğer görevler önce planlanacak.Görevler, veri görevlerinin zamanlamasını kolayca optimize edebilen ve verileri daha da iyileştirebilen veri işleme tesisi tarafından oldukça soyutlanır. İşleme verimliliği.

    2. Boru hattı iletişim mekanizması

    Yukarıdaki boru hattı yürütme mantık diyagramından görülebileceği gibi, her bir boru hattının giriş verileri ve çıkış verileri belirsizdir ve bu da bir soruna yol açar: donanım kaynaklarından tasarruf etmek için, boru hattının tüm giriş boru hatlarında veri olmadığında, boru hattı Otomatik uyku durumuna girin, ancak boru hattını uyandırmaktan kim sorumludur?

    Kuşkusuz, akla gelen ilk şey semafor kullanmaktır Örnek olarak Boru Hattı 1'i alın. Boru Hattı 1, üst katman tarafından meta veri girişi olan üç giriş hattına sahiptir, Boru Hattı 2'de Görev7'nin çıkış hattı ve Boru Hattı 3'teki Görev9'un çıkış hattıdır. Başka bir deyişle, boru hattının üç bağımsız semafor beklemesi gerekir.Semaforla ilgili sorun, bir semaforun mevcut ardışık düzeni alamadığı sürece, hareketsiz kalması ve bu da kaçınılmaz olarak mevcut ardışık düzen işini engellemesidir. Boru hattı, olduğu sürece çalışma mekanizmasına ihtiyaç duyar. Bir ardışık düzen, veriye sahipse çalışır. Yalnızca tüm ardışık düzenlerde veri olmadığında uyur. Bu yalnızca üç ardışık düzenin durumunu dikkate alır. Çıkış ardışık düzenleri dolu olduğunda, Boru hattı çalışmasının karmaşıklığını ve verimliliğini büyük ölçüde artıran düzinelerce semafor kesinlikle kabul edilemez.

    İşlem hattının çalışma durumunu kontrol etmek için semafor kullanımını bırakıyoruz, veri paylaşım hattını ortam olarak kullanıyoruz ve boru hattının uyku hattını aktif olarak uyandırmasına izin veriyoruz. Proje başlatıldığında, veri ve görev ilişkisi diyagramı ve veri akış diyagramı analiz edilecektir.Bu iki diyagram aracılığıyla, ilişkili boru hattı ilgili boru hattına bağlanır. Boru hattının veri girişi olduğu sürece, aşağı akış boru hattı uyandırılacaktır. Bu yol semafor patlaması problemini çözer.

    Altı, yüksek performanslı çapraz işlem paylaşım hattı

    Çok süreçli boru hattı şemasında, her bir sürecin verileri birbirinden bağımsız olduğundan, bir süreç tarafından oluşturulan veya değiştirilen veriler diğer süreçlerden habersizdir. Süreçler arasında veri aktarımının nasıl iyileştirileceği, eşzamanlılığı verimli bir şekilde elde etmenin anahtarıdır.

    Python'da çok işlemli paylaşımlı belleği gerçekleştirmek için mevcut çözümler temel olarak şunları içerir: ardışık düzen, çoklu işlem, Sıra, çoklu işlem, Değer ve çoklu işlem. Dizi İlk ikisi, çekirdek içinde bir arabellek ayırmak ve Boru tarafından uygulanan ardışık düzeni kullanarak onu yönetmektir. Son ikisi, ctype veri yapılarını depolamak için çoğunlukla mmap kullanır. Son ikisinin veri depolama performansı, ilk ikisininkinden çok daha yüksektir. Dezavantajlar da açıktır.Değer / Dizi yalnızca temel Ctypes veri türlerinin depolanmasını destekler. Veri nesnesi türü desteklenmiyor Otomatik ardışık düzen şemamızın, yüksek performans ve esneklik gibi iki yüksek gereksinimi karşılayamayan özel bir sınıf yapısını depolaması gerekiyor. Mevcut çözümler ihtiyaçlarımızı karşılayamadığından, karmaşık nesneleri destekleyen kendi yüksek performanslı çapraz süreç kanallarımızı geliştirmemiz gerekiyor.

    1. Boru hattının ana modülleri

    Özel nesneden depolama alt katmanına kadar, aşağıdaki şekilde gösterildiği gibi birkaç işlevsel modül temel olarak tasarlanmıştır. İşlemler arası paylaşılan bellek, alt depolama mantığı olarak SHA teknolojisini kullanır. SHA'nın mmap'e göre kendi avantajları ve ikisi ile bunların avantajları ve dezavantajları arasındaki fark vardır Ayrıntılı olarak açıklanacak birçok makale var SHA'yı seçmemizin ana nedenlerinden biri, depolama düğümlerinin dinamik olarak genişlemesini desteklemenin daha kolay olması ve List veri yapısını daha rahat desteklemesidir.

    Özel bir nesne verilerinden SHA paylaşımlı bellekte depolamaya kadar ana deneyim, nesne yapısının ayrılması, veri serileştirme, veri boyutu ve tür işleme, bellek bloğu kopyalama, okuma işlemi ve bu işlemin tersine işlem, okuma ve yazma Temel fark, veri yazılırken bir veri kopyalama işlemi olacağıdır.Veri okumak, bu işlemi optimize eder, paylaşılan hafızanın veri formatını doğrudan hedef veriye dönüştürür ve veri okuma performansı büyük ölçüde geliştirilir.

    Veri bölme işlemi temel olarak sınıf veri yapısını özyinelemeli olarak analiz etmek, veri yapısının özniteliklerini en temel veri türlerine ayırmak ve veri işlemeyi kolaylaştırmak için her özniteliğe bir öznitelik kuyruğu atamaktır. Verileri verimli bir şekilde seri hale getirmek ve seri durumdan çıkarmak için yansıtma mekanizmasını kullanın.

    2. Veri serileştirme ve seriyi kaldırma

    Özel bir veri yapısının serileştirme ve seriden çıkarma işlemleri aşağıdaki şekilde gösterilmektedir.İki ana süreç vardır:

  • Sınıf nesnesi Sayı dizisi, sınıf yapısı bir ağaç yapısı halinde organize edilebilir, yaprak olmayan düğümler özel bir veri yapısını temsil eder ve yaprak düğümler temel veri türlerinden (float / int / ...) oluşan bir sayı dizisini temsil eder.
  • Sayı dizisi Ctypes verileri, esas olarak numpy veri yapısını ctypes tipine dönüştürür ve veri boyutunu normalleştirir / normalize eder.
  • Python'un yansıtma özelliğini kullanarak, ağaç düğümü, gelen veri yapısı türü bilgisi aracılığıyla ayrıştırılır ve ctypes veri türüne dönüştürülür ve böyle bir dizi, iletişim hattını oluşturmak için veri hattının depolama öğesi olarak kullanılır.

    Yedi, ardışık düzen felaket kurtarma

    Uzun süredir devam eden bir fabrika sistemi olarak, meta verileri ürünlere sürekli, istikrarlı ve verimli bir şekilde işleyebilme, takip hedeflerimizden biridir. Sistem kalitesini iyileştirmek, kod sağlamlığını güçlendirmek, hataları veya istisnaları azaltmak temel iştir, ancak bir istisna ile karşılaşıldığında Kurtarma da önemli bir parçadır, yine de temel anormal kurtarma işlevi modüllerini tanıtmamız gerekiyor.

    Python dili GIL kilidi nedeniyle, çoklu ardışık düzenimiz çoklu işleme karşılık gelir. Yalnızca çoklu işlemde yüksek eşzamanlılığın keyfini çıkarabiliriz. Çoklu süreçler yüksek eşzamanlılık ve aynı zamanda yüksek karmaşıklık getirir. Ardışık düzenler arasındaki çalışma görece bağımsızdır. Bir süreçteki bir istisna diğer süreçler tarafından bilinmeyecektir. Diğer süreçler yine de çalışacak, ancak ara boru hattı çalışmayı kesintiye uğrattıktan sonra Tüm veri boru hattı kesintiye uğradı ve fabrika çalışmayacak.Bu nedenle, aşağıdaki şekilde gösterildiği gibi özel bir çoklu boru hattı izleme mekanizması yaptık: çocuk iş parçacığı düzenli aralıklarla boru hattının durumunu kontrol edecek ve belirli bir boru hattında bir anormallik bulunursa başlayacaktır. Bu boru hattının yeniden dirilmesini sağlamak için boru hattı işleminin yerini alan anormal kurtarma mekanizması.

    Boru hattının kurtarılması için bir ön koşul, işlem anormal olduğunda yerinde verilerin depolanması gerektiğidir. Boru hattı anormal kurtarma ve değiştirme işlemine başladıktan sonra, sonraki işlem önceki yerinde verileri okuyacak ve işlemeye devam edecektir. Bu kontrol akışı aşağıdaki şekilde gösterilmektedir:

    8. Performans verileri

    1. İşlemler arası paylaşım ardışık düzeni performans testi

    Bir CPU (Intel Core I5-45903.3GHz * 4) makinesinde, test (1080 * 1920 * 3) resimleri bin kez okur ve Sırayı Boruya, mmap'e dayalı Dizi ve SHA'ya dayalı kendini test eder. Ardışık düzende tanımlanan üç depolama şeması vardır ve test performansı aşağıdaki gibidir:

    Test yoluyla, karmaşık veri yapılarını destekleyen SHA tabanlı ardışık düzene dayalı veri okuma ve yazma performansının Python'un kendi Dizi çözümüne çok yakın olduğunu, ancak Array çözümünün dezavantajı, karmaşık nesnelerin serileştirilmesini desteklememesi ve yalnızca temel veri türlerini desteklemesidir. Serileştirmeyi de destekleyen Kuyruk kuyruğu ile karşılaştırıldığında, kendi uyguladığımız ardışık düzen, okuma süresi açısından Kuyruktan 400 kat daha hızlıdır.Veri yazmada, Queue eşzamansız yazma kullandığından, test edilen veriler tam olarak yansıtılamaz. Paylaşılan hafıza kilidine gerçekten depolamak için gereken sürenin, test edilen verilerden çok daha uzun olduğuna inanılmaktadır.

    2. Otomatik montaj hattının genel çerçeve performansı

    Seri sürümün, çevrimiçi manuel boru hattı paralel sürümünün ve mevcut boru hattı görevi otomatik zamanlama sürümünün performansını karşılaştırdık. Test ortamı aşağıdaki gibidir:

    Test sonuçları şu şekilde karşılaştırılır:

    Gerçek ölçüm verilerinden, manuel boru hattı sürümünün getirdiği performans iyileştirmesi beklentilerle tamamen uyumludur: videoyu destekleyen kanal sayısı iki katına çıkar, ancak boru hattının manuel olarak yapılandırılması karmaşıktır ve bu da algoritmanın yinelemeli verimliliğini etkiler.

    Otomatik ardışık düzen çerçevesinin yüksek soyutlamasından yararlanarak, birçok görev çizelgeleme optimizasyonu boru hattına kolayca uygulanabilir.Bu avantaj, veri testinden de görülebilir. Otomatik ardışık düzen çerçevesinin performansı, 16 kanaldan manuel boru hattı sürümüne göre daha da iyileştirilmiştir. Kamera 18 kameraya yükseltildi, tek kare yapay zeka süresi 13,7 milisaniyeden 11,9 milisaniyeye düşürüldü, performans% 13 artırıldı ve donanım kaynaklarının kullanım oranı tasarım beklentileri doğrultusunda gerçekleşti.

    Manuel ardışık düzen sürümü ile karşılaştırıldığında, otomatik ardışık düzen sürümü aşağıdaki gibi verileri iyileştirdi:

    • CPU kullanımı% 20 arttı
    • GPU kullanımı% 10 arttı
    • Kamera sayısı% 12,5 arttı
    • Tek kare AI zaman tüketimi% 13 azaltıldı

    Yapay zeka görevlerinin işleyen sürecini tanımlayan otomatik boru hattı çerçevesi sayesinde, geliştirme karmaşıklığı büyük ölçüde azaltıldı, programlama modu algoritma öğrencileri tarafından kabul edildi, modelin işletim verimliliği büyük ölçüde iyileştirildi ve model yinelemesinin verimliliği niteliksel olarak iyileştirildi.

    9. Proje iş sonuçları

    Şu anda yolcu akışını dijitalleştirme projemiz uzun süredir yayında.Çoğu işyeri yolcu akış sistemimize bağlanmış ve toplanan karakteristik veriler ilgili ürünlere uygulanmıştır.Bazı tüccarlar analiz ettiğimiz verilere dayanmaktadır. Süpermarketin yerleşimi, ürün siparişi ve ürün türleri buna göre ayarlandı ve buna bağlı olarak alışveriş deneyimi ve işlem hacmi iyileştirildi.

    İşletme ekran efektlerimizi göstermek için bölgesel ısı haritaları ve bölgesel dinamik çizgiler kullanıyoruz. Bölgesel ısı haritaları ve bölgesel dinamik çizgiler aşağıdaki gibi gösterilmektedir:

    Bölgesel ısı haritasının hesaplama yöntemi, mağazanın tüm kamera verilerini entegre etmek ve analiz etmek ve son olarak insanların akışını yansıtan verileri mağazanın düz CAD haritasına eşleyerek, esas olarak mağazanın her bölgesindeki ve saatindeki tüccarlara bir gün içinde gösterilen bölgesel ısıyı oluşturmaktır. İnsan akışının yoğunluğu, işletmelerin her alandaki insanların popülaritesini net ve sezgisel olarak görmelerini sağlar. Bölgesel dinamik çizgi diyagramı, her alandaki insanların akışını ve insanların akışını gösterir.Bu iki veri haritasına dayanarak, işletmeler mağazanın her bir alanındaki insan akışının yoğunluğunu ve mağazadaki tüketicilerin dolaşım durumunu net bir şekilde anlayabilir ve bu akış hattı diyagramı aracılığıyla analiz edilebilir. Ürünlerin yerleştirilmesinin makul olup olmadığı ve tüketicilerin beğendikleri ürünleri seçmelerinin daha uygun olup olmadığı Bu verilerle işletmelerin satış stratejilerini ayarlarken veri tabanı ve yönlendirmeleri olacaktır.

    Özet ve görünüm

    Bu makale esas olarak yolcu akışı projelerinde otomatik montaj hattı görev çizelgeleme sisteminin uygulamasını tanıtmaktadır.Mühendislik uygulamasında performansı optimize etmede montaj hattının programlama fikrinin büyük bir değeri olduğuna inanıyorum.Sektördeki birçok olgun ve mükemmel işletim modunun yazılıma uygulanabileceğine inanıyorum. Projede, operasyonel verimliliği artırmada gelecekteki keşif ve araştırmalarımız için güçlü bir yol gösterici öneme sahiptir.

    Otomatik görev planlama sistemi daha fazla başka projeye de uygulanabilir.Ayrıca, eğitim verimliliğini artırmak ve eğitim süresini azaltmak için eğitim algoritması modeli aşamasında erişmeyi deneyebilirsiniz. Otomatik boru hattı çerçevesinin hedef kullanıcıları, algoritma öğrencileridir.Algoritma modelinin yinelemeli verimliliğini artırmak ilk kriterimizdir.Performansı sağlama öncülüğünde mümkün olduğunca rahat ve basittir.

    Yukarıdaki test verilerinden, donanım kaynakları büyük ölçüde kullanılmış olsa da, hala keşfedilebilecek ve geliştirilebilecek birçok alan olduğuna ve modelin performansının ve kararlılığının daha da iyileştirilebileceğine inanıyorum. Daha fazla tüccar ve işletme erişiyor. Teknolojiyi sürekli olarak optimize ederken, ürün deneyimini ve ayrıntılarını sürekli iyileştirmek için sektördeki satıcılarla birlikte çalışıyoruz ve müşteri akışı projelerinin tüccarları yeni perakendeciliği güçlendirmeleri için daha iyi hale getirmeye çalışıyoruz.

    Xi Jinping, Pekin-Tianjin-Hebei Koordineli Kalkınma Sempozyumunu denetledi ve ev sahipliği yaptı
    önceki
    Wu Lei olmadan sorun yok! SIPG'nin dövüş sanatçısı arka arkaya iki muhteşem karşı saldırı kazandı ve ellerinde yeni bir hanedan doğabilir.
    Sonraki
    Manchester United'ın iki gelişimi, Juventus'u tersine çevirmekten daha değerlidir! 1999'a geri dönen Mourinho, Manchester United'ın ruhunu yeniden kazandı.
    Arka tekerlek yönlendirmesi de ne? Porsche iyi bir kontrole sahip ve Cadillac'ın direksiyon esnekliği bununla yakından ilgili ...
    12 şut, 7 şut ve 5 gol! Heng'in uyluğu sadece yarı zamanlı bir orta saha oyuncusu, Süper Lig'deki tek oyuncu
    Che Amca bir doktor olur: Gelin ve yol öfkenizi teşhis edin!
    Süper Lig'de tarihi bir sahne! Oynayacak ilk vatandaşlık oyuncusu, Çin futbolu yenilemesi!
    Rokete kötü mü görünüyorsun? Şöhret Cole'u destekliyor: Playofflarda Big Four Warriors'ı yenmeyi düşünme bile!
    Cheetah CS9 EV saf elektrikli SUV 195.800 RMB'den 215.800 RMB'ye satıldı! 12 inç geniş ekran, 255 km pil ömrü ile donatılmıştır ...
    Evergrande bir şampiyonluk rakibinden daha fazlası! SIPG gitgide yükseliyor. Ya gelecek yıl hala şampiyonluk yoksa?
    Chery Xiandao TX, yerli markaların "üst düzey" yolunu ayrıntılı olarak tanıttı
    Youku IPv6 dönüşüm belgeseli: yeni nesil ağ teknolojisini benimseyen ilk video endüstrisi
    Super Bowl 2 kalecisi ilgi odağı! Yan Junling üst üste iki kez gökyüzünü dövüyor, Guo Quanbo Heya nilüferde oturuyor ve tek bir hareketi engelliyor
    Trajik batı! Cole kaşlarını çattı! Paul: Gerçekten tatil yapmak istemiyorum, bu durumumu çok fazla etkiliyor!
    To Top