TensorFlow'un Mühendislik Projelerinde Uygulanması Açık sınıf video + metin transkripsiyonu (Bölüm 2) | AI Araştırma Enstitüsü

Bu Perşembe, Leifeng.com AI Araştırma Enstitüsü, çok uluslu BT devi ThoughtWorks'ün kıdemli veri mimarı Bai Fachuan'ı herkese açıklamak için çevrimiçi bir halka açık ders vermeye davet etti. TensorFlow'un mühendislik projelerinde uygulanması .

öğretim Görevlisi

Shirakawa: Kendimi tanıtın. Ben ThoughtWorks Shirakawa'yım. Daha önce büyük veriyle uğraştım. Daha sonra bazı deneyler yapmaya ve yapay zeka doğrultusunda çalışmaya başladık. Yapay zeka, makine öğrenimi ve büyük veriyi birleştirmeye kararlıyız. Birçok ilgili makine öğrenimi çerçevesini inceledikten sonra, kendi derin öğrenme çerçevemizi de oluşturduk-deeplearning.scala. Scala tarafından yazılmıştır ve şu anda açık kaynaktır, böylece herkes anlayabilir.

Bu, genel sınıfın kaydedilmiş bir videosudur:

Sınıf metin sürümünü aç

Videoyu izlemek için uygun olmayan çocuk ayakkabıları için, Leifeng.com tarafından hazırlanan bu açık sınıfın metin transkripsiyonunu okuyabilirsiniz.

Alanın uzunluğu nedeniyle, bu açık sınıfın metin transkripsiyonu iki bölüme ayrılmıştır, bu ikinci bölümdür. Önceki makale için, lütfen Leifeng.com Açık sınıf video + metin transkripsiyonu (bölüm 1) | AI Araştırma Enstitüsü'ndeki mühendislik projelerinde TensorFlow uygulamasına bakın.

Bai Fachuan: Yukarıda birkaç farklı büyük veri mimarisinden bahsetmiştik. Bunlar daha önce bahsedilen veri olgunluk değerlendirme modeliyle ilgilidir - şu anda hangisinin mevcut olduğunu bilmeden önce bir kuruluşun verilerinin düzeyini değerlendireceğiz. Çözüm en uygun olanıdır.

Yapay Zeka ve Büyük Veri

Şimdi yapay zeka hakkında konuşalım.

Aslında yapay zeka kavramı yeni değil, herkes uzun zaman önce ve onlarca yıl önce yapay zeka hakkında konuşuyor. Yapay zekanın temel amacı, makinelerin insanlar gibi düşünmesini istememizdir. Bir makine nasıl insan gibi düşünebilir?

Burada geliştirilen iki dal vardır: biri erken olasılık teorisi modeli, diğeri ise sinir ağı.

Ortak HMM ve Bayes'imizin tümü olasılık teorisine aittir. Olasılık teorisinde verilerin işlenmesi için, temelde olasılık şeklinde bir örnekleme veya hesaplamaya sahipsiniz. Dolayısıyla, veri miktarının çok fazla olmadığı ilk günlerde, olasılık teorisi özellikle iyi bir seçim olurdu.

Ek olarak, olasılık teorisi çok büyük veri setlerini işleyemez, bu nedenle nispeten daha yaygın olarak kullanılır. Örneğin, aynı zamanda çok iyi bir senaryo olan kelime segmentasyonu yapmak için HMM kullanıyoruz. Diğer bir dal ise sinir ağlarıdır. Sinir ağları çok erken bir zamanda önerildi, ancak son yıllarda çeşitli derin sinir ağı çerçevelerinin yavaş yavaş popüler hale geldiği bir dönem oldu. Çünkü son zamanlarda bilgisayarların bilgi işlem gücünün geliştirildiğini keşfettik - sinir ağı, veri miktarı arttığında daha etkilidir; sinir ağı daha derin olduğunda etkisi daha iyidir; ve bu Her şey bilgisayarın hesaplama gücüne bağlıdır. Derin sinir ağları, tekrarlayan sinir ağları ve evrişimler gibi birkaç tür sinir ağı da vardır. Bilgisayarların hesaplama gücü gelişmezse, bahsettiğimiz yapay zeka laboratuvarda kalmaya devam edecek. Bu nedenle, arkasında veri desteği yoksa, AI'nın temelde bir etkisi yoktur.

Üretim ortamına gitmek istiyorsak on adet veriyle eğitim yapmamız imkansız. Bu tür veriler aslında üretim gereksinimlerini karşılayamaz. İlk günlerde veri geliştirme sürecindeydi, aslında yapay zeka da geliştiriliyor ama gelişim aşaması farklı. İlk günlerde yapay zeka sadece teorik aşamada kalabilir, algoritmalar ve belgeler olduğunu biliyoruz ama aslında üretime, ticarileştirmeye ve pazarlamaya uygulanıyor, aslında geniş bir açıklık var. Bundan sonra yeni bir aşamaya geçeceğiz: birçok şirket daha iyi bir yol olup olmadığını görmek için yapay zeka laboratuvarları yapacak, mevcut verilere dayanarak denemek için bir laboratuvar açacak.

Bir sonraki aşama, büyük veri çağıdır. Şu anda, veri işleme performansı son derece yüksek hale geliyor. YZ'nin doğası gereği verilere bağlı olduğunu bulduk.Artık verinin işleme kapasitesi iyileştirildiğine göre, yapay zeka kesinlikle çok iyi bir geliştirme sürecini başlatacak. Şu anda karşı karşıya olduğumuz durum bu. Birçok şirket, verileri işlemek için büyük veri platformlarını kullanır. Büyük veri ile birçok şirket, işlerine daha iyi hizmet verebilmek için yapay zeka da kullanacak.

İşte üretimde kullanılan daha iyi bir yapay zeka mimari çözümü.

Bir önceki makalede bahsedildiği gibi veri ve yapay zeka tamamen ayrılabilir ancak ikisinin birleşimi nihai çözümdür. Yapay zeka olmadan verileri büyük veri platformu olarak kullanabiliriz. Yapay zeka ile büyük veri platformunu genişletebilir ve daha mükemmel bir mimari haline getirebiliriz, bu yüzden veri mimarisi çok önemlidir - yapay zekanız iyi bağlanabilir mi? Şekilde görebileceğiniz gibi, veri platformu temel olarak veri işleme, veri depolama, veri alma ve veri keşfi gibi bir dizi veri hazırlama ile ilgili görevlerden sorumludur.

Veriler hazır olduğunda, makine öğrenimi için, verilerinize dayalı olarak özellik çıkarma ve model eğitimi gerçekleştirir.İşin büyük bir kısmı veri platformunda olacaktır. Basitçe söylemek gerekirse, bazı şirketlerin veri gizliliği için daha yüksek gereksinimleri olabilir - veri şifreleme ve çeşitli şifrelemeler olacaktır. Daha sonra hesaplama işlemi sırasında veri şifre çözme olacaktır.Nöral ağın şifreleme işlemini ve şifre çözme işlemini yapmasının bir yolu yoktur, sadece veri platformuna yerleştirilebilir. Bu nedenle, veri platformu, sonraki etkiyi doğrudan belirleyen çok yüksek veri işleme yetenekleri gerektirir.

Veri platformumuz tamamlandığında, esasen veri dağıtılmış bir ortama sahibiz. Yapmamız gereken bu, ancak bir modeli eğitmek için dağıtılmış verilere iyi bir şekilde eklenebilecek bir sistem olduğunu söylemek. TensorFlow, çok iyi bir etki olan model dağıtımını zaten destekliyor.

İlk günlerde, model eğitimi dağıtılmış eğitimi desteklemiyordu, yani modeliniz bir makine üzerinde eğitildi ve bağımsız olarak eğitildi. Bir modeli eğitmek için iki makineyi birlikte eğitmenin bir yolu yoktur. Şu anda, TensorFlow çok iyi bir iş çıkardı ve modellerin dağıtılmış eğitimini destekliyor.Elbette, bunun hesaplamalı grafik konseptine dayanması gerekiyor.

Tensorflow hesaplama grafiklerinin bir dizi çok ayrıntılı teknik sorunu için, aşağıdaki "TensorFlow ve Sinir Ağı Algoritması Gelişmiş Uygulama Sınıfı" Tensorflow'un modellerin dağıtılmış eğitimini nasıl desteklediğinden bahsedecektir. Bu mimaride altta GPU ve CPU sistemlerinden oluşan bir yapay zeka kümesine sahibiz.Bunun üzerine oluşturduğumuz modelin dağıtılmış eğitimi modeli üretecek. Veri platformu aynı zamanda başka bir işlev, yani gerçek zamanlı akış sağlayacaktır.

Gördüğünüz gibi, bu mimaride gerçek zamanlı akış olan bir dal var. Yapay zeka ile birleştirmek gerçek zamanlı tahmindir.Gerçek zamanlı tahminden sonra veriler görüntülenir ve doğrudan kullanıcıya karar verme şeklinde geri verilir.Aslında, gerçek zamanlı akışın bir başka işlevi de modelin sürekli eğitimidir. Ve onu kullandığınız bu yerde hala bir ok görebilirsiniz, yani veriler yeniden büyük veri platformuna girdi. Bu, şu anda savunduğumuz, veriye dayalı mimari adı verilen bir mimaridir. Kullanıcılar veri ürettiği sürece, veriler kullanıcılara hizmet eder. Bu sürecin iyi huyluysa: Örneğin, bu sistemi kullanırsam ve sistem bana hizmet ederse, bu süreç iyi huylu ve gitgide daha iyi hale geliyor; ne kadar çok sistem kullanırsam, benim için o kadar iyi yaşayacak. Bu sistem kendi kendine gelişecek ve daha iyi ve daha iyi hale gelecektir, bu nedenle bu mimari aynı zamanda şu anda tüm uygulamalarda kullandığımız çözümdür.

TensorFlow mühendislik uygulaması

TensorFlow'un kendisi derin bir sinir ağı çerçevesidir. Hesaplama modülü olan çekirdek Çekirdek, C ++ ile yazılmıştır. Dış dünyaya birçok API sağlar.İlk günlerde sadece Python eklenmiş ve 1.0'dan sonra Java API'leri eklenmiştir, ancak hala test aşamasındadır ve özellikle kararlı veya mükemmel değildir. Bu yüzden TensorFlow için Python kullanmaya hala öncelik veriyoruz.

Python için, makine öğrenimini bir hizmete paketleyeceğiz veya başka şekillerde kullanmak üzere sağlayacağız. Bu alanda içeride C ++ olan Python'u dışarıdan sağlar ve ortada bir veri alışverişi vardır yani Python'un gerektirdiği hesaplama mantığı C ++ 'ya dönüştürülür ve sonuç alt katman hesaplamasından sonra döndürülür.

Eksiksiz bir yapay zeka sisteminde dağıtım iki yerde bulunur: veri dağıtımı ve model dağıtımı. Veri dağıtımı esas olarak veri gölü tarafından desteklenir ve verilerimiz dağıtılmış bir şekilde saklanır. Dağıtılmış veri depolamanın avantajı, farklı düğümlerden verileri hızla alabilmemdir. Şu anda sistem için genişletilmesi gereken tek şey bant genişliği.

Gerçek üretimde, kuruluşlar için, GB düzeyinde ağ bant genişliği oluşturmak için özel bir hat inşa etmek, bilgisayar donanımını iyileştirmekten çok daha ucuza mal olacaktır. Veri dağıtımının var olmasının ve daha iyi ve daha iyi durumda olmasının bir nedeni budur.

Ek olarak, TensorFlow model dağıtımını destekler. Verilerimiz dağıtıldığında, modelimiz dağıtılır ve tüm eğitimin hızı, ikisi birleştirildiğinde özellikle hızlı hale gelir. Tensorflow'da, model hesaplamaları, sizin yazdığınız eğitim modeli koduna göre hesaplama grafikleri oluşturabilir ve ardından her bağımsız hesaplama grafiğini hesaplama grafiğinize göre farklı düğümlere dağıtabilir ve ardından nihayet benzersiz bir model oluşturmak için eğitim gerçekleştirebilir. Aynı zamanda TensorFlow'un dağıtılmış eğitimde çok iyi yaptığı bir noktadır.

Ancak geriye dönüp baktığımızda, TensorFlow aslında kullanım sırasında bir python kitaplığıdır. Yani bir sinir ağı mühendisliği projesi yaparken, TensorFlow'un kütüphanelerimizden biri olduğunu ve onu kullandığımızı söyleyebiliriz. Nispeten konuşursak, sistemimizde küçük bir modül kaplar.

TensorFlow derin bir sinir ağı çerçevesidir, ancak Deeplearning4j'nin Caffe, MXnet, Theano ve Java sürümü gibi tek değildir. Bu tür çerçeveler uzun süredir mevcuttur. Öyleyse neden TensorFlow daha iyi bir seçim olarak kabul ediliyor?

Geliştirme açısından, herkes onu "mühendislik tarafından yapılmış en iyi derin sinir ağı çerçevesi" olarak tanımlar, bu nedenle TensorFlow'u seçme eğilimindedirler. Laboratuvarlar veya üniversiteler gibi birçok senaryoda diğer çerçeveler kullanılır; ancak mühendisler için, mühendislerin anlamasını kolaylaştırmak; eşiği düşürmek ve matematik ihtiyacını azaltmak için API kullanımını daha kolay bir şekilde dahil etmeyi umuyoruz. İddia.

Bir sinir ağı çerçevesi, ne kadar ilkel tasarlanmışsa, matematik için gereksinimler o kadar yüksek olur. Bu özellikle mühendisler için uygun değil. TensorFlow, ikisi arasında bir uzlaşmadır.

Python

TensorFlow açıkça bir Python kitaplığı olduğundan, yapay zeka projeleri geliştirdiğimizde, geliştirmemiz esasen python proje geliştirmede nasıl başarılı olacağımıza doğru evrilir.

Şu anda, ister makine öğrenimi ister veri analizi için olsun, Python'un çok iyi bir ivmesi var ve herkes bunu kullanıyor. Ve daha fazla platformun sağladığı şey, aslında Python'un bir api olarak kullanılma şeklidir ve Python çok büyük bir orana sahiptir. Bu nedenle yapay zeka projeleri için Python öğrenmek çok önemlidir. Diğer bir deyişle, TensorFlow'u incelemek istiyorsanız, önce iyi bir temel oluşturmalı ve önce Python öğrenmelisiniz.

Python için Python2 ve 3 vardır ve şu anda Python3'ü öneriyoruz. Python ile ilgili bir çok kütüphane var. Kütüphaneleri yönetmemiz gerekiyor. Yum ile aynı. Kütüphanelerimizi yönetmek için pip kullanabiliriz. Aşağıda bir virtualenv var. Python'un bu hafif dili için, sistemimizde bazen Python projelerinin farklı sürümleri söz konusudur.Bu, iki ortamımızı izole etmek ve birbirimizi etkilememek için iyi bir izolasyon ortamı gerektirir. Örneğin, projelerimden biri Python2 ve diğeri Python3. Bu iki projenin aynı anda sistemimde çalışacağını umuyorum. Virtualenv çok iyi bir işlev sağlıyor: Python ortamını kapsüllemek, farklı sürümlere sahip olmanıza izin vermek , Bir sistemde aynı anda farklı kütüphaneler bulunur. Virtualenv için sağladığı şey bir Python sanal ortamıdır.Üretim sürecinde, çok sayıda virtualenv'e sahip olduğunuzda, yönetmenin özellikle zor olduğunu göreceğiz. Bu yüzden virtualenvwrapper'ı seçeceğiz, rolü sistemdeki tüm virtualenv'i yönetmektir, yaratmanız dahil ve anahtarınız tamamen yönetilebilir.

Bir geliştirme ortamına sahip olduğumuzda - yukarıda bahsedilen birkaç araç, geliştirme süreci boyunca herhangi bir zamanda kullanılacaktır. Bu araçlarla bir sonraki adım kod geliştirmektir.

Python için birçok araç var. IPython Notebook hafif bir Python web IDE'sidir, Python kodunu web sayfalarına yazabiliriz. Farklı aşamalara ayrılmıştır, kodu yerel olarak çalıştırabilir ve WYSIWYG kodumuzu hızlı bir şekilde görebilir. Bu aynı zamanda veri keşfi veya bazı girişimlerde bulunurken ilk tercihimizdir. Tüm operasyonumuzun doğru olup olmadığını ve devam etmemiz gerekip gerekmediğini hızla analiz edebiliriz.

İşte bu yüzden virtualenv kullanıyoruz - projemizi yürütmek için bağımsız bir ortama ihtiyacımız var. Bu fikir, mevcut Docker'a benzer. Ek olarak, nispeten büyük bir proje üzerinde çalışırken, şu anda geliştirmede çok yaygın olarak kullanılan ve temelde% 100 kullanılan Pycharm tarzı IDE'ler gibi entegre geliştirme ortamlarında IDE'lere başvurabiliriz. Resmi bir ortamda, özellikle bir ekipte, herkesin gelişime yardımcı olması özellikle yararlıdır.

CI / CD

Mühendislik geliştirme için projelerimizden biri geliştirildikten sonra internete girmemiz, test etmemiz ve devreye almamız gerekiyor; yapay zeka dışı projeler için CI / CD'ye sahip olacağız. Kod yazıldıktan sonra devreye almamız, test etmemiz ve çalıştırmamız gerekiyor CI / CD olan bu seriyi otomatikleştirebiliriz.

Kodumuz sürüm denetleyicisine atıfta bulunur, CI / CD kod değişikliklerini otomatik olarak izler ve ardından kodu paketler ve test eder. Başarıdan sonra, size dağıtılacak ve sonuçlar görsel bir biçimde görüntülenecektir. Bu, genel proje geliştirmede ortak CI / CD aracımızdır, bu nedenle bir AI projesinde CI / CD yapacak mıyız?

Aslında işe yarayacak.

Öncelikle yapay zeka CI / CD süreci genel projelere benzer, ancak bazı farklılıklar olacaktır. Ön kısım hala aynıdır Kod mantığı değiştirildikten sonra, tüm CI / CD ardışık düzeni tetiklenecek ve başka bir dal daha var: veri hattı tetikleyicisi.

Veri hattı nedir?

Daha önce de belirtildiği gibi, yapay zeka verileri iki bölüme ayrılmıştır: biri veri bölümü, diğeri ise yapay zeka bölümüdür. Bu, yapay zeka projemizde mantığı olduğu ve veride olduğu anlamına gelir. Yeni verilerim geldiğinde veya model mantık kodum değiştiğinde, her ikisi de CI / CD'nizi tetikleyecektir.

CI / CD tetiklendikten sonra, normal bir proje olarak temel birim test değerlendirmesine ek olarak, bir işlevimiz daha var, model değerlendirme. Fonksiyonun bu kısmı için, CI / CD'de bir dönüşüm yapmak daha fazladır.

Model değerlendirme nedir? Genel sistemler için, hangi koşullar altında bu testin askıya alındığını düşünüyoruz. Gerçek çıktısı beklenen çıktımızla tutarsızsa, aşağı olduğunu düşünebiliriz.

Yapay zekaya gelince, bu gelişmenin hangi koşullar altında bir başarısızlık olduğunu düşünüyoruz? Yani model birbiri ardına kötüleşiyor. Örneğin ilk defa eğittiğim modelin doğruluğu% 90, ikinci sefer% 80 ve üçüncü sefer% 70'tir. Bu açıdan bakıldığında, kod çok doğru çalışsa da, etki azalmaktadır ve bu değerlendirme CI / CD tarafından kaydedilmelidir. Sonunda kodu gönderdikten ve modeli eğittikten sonra, etkisi önceki modelden daha kötüyse, bu sefer CI / CD'niz çalışmıyor ve tüm görev başarısız oluyor.

Bu şekilde, bir ekibin sıkıcı geliştirme kodundan ve sürekli değişen yöntemlerden kaçınarak tüm geliştirmenin performansının yükselmesini sağlayabilir ve nihayet modelin her zamankinden daha kötü olduğunu görebiliriz.

TensorFlow uygulama senaryoları

Esasen yapay zeka, insanların düşünmelerine ve karar vermelerinde yardımcı olmalarına daha iyi yardımcı olmaktır, böylece sahne nispeten geniş ve daha genel olacaktır. Ancak fark şudur: Bu genel senaryoda ne tür gereksinimleri elde etmek istiyorsunuz?

Görüntü Tanımlama

Örneğin, yapay zeka veya derin öğrenme söz konusu olduğunda veya evrişimli sinir ağları söz konusu olduğunda, herkes çok genel bir alan olan görüntü tanımayı düşünecektir. Ancak bu alanda arıtma seviyesine nasıl ulaşılacağını değerlendirmek ve gerçekleştirmek bizim için gereklidir. Örneğin, önceki projemizde, resimlerini analiz etmek için bir e-ticaret sistemi kuruyorduk - bir e-ticaret satıcısı, tüm e-ticaret platformu için çok sayıda resim yükleyebilir, Resmi analiz etmeyi ve yüklenen resimde hangi nesnelerin bulunduğunu öğrenmeyi umuyorum Örneğin, bu resimde bunun bir kanepe, diğerinin bir kişi vb. Olduğunu anlayabiliyoruz. Bu dizi nesne tanıma.

Depo robotu

Bu, görüntü tanıma alanını alt bölümlere ayırmak için TensorFlow kullanmanın bir uygulamasıdır. Ek olarak, görüntü alanı ve AI kavramına ek olarak, birçok kişi AI derken robotları düşünür. Aslında sektörde robotlar özellikle depolarda yaygın olarak kullanılmaktadır.Amazon'un öncülüğünü yaptığı sektöre ilk öncülük eden depo robotlarıdır. Şimdi çok yaygın hale geldi, en azından herkes bu alana, araştırma ve geliştirmeye yatırım yapıyor.

Depolama robotunun ana işlevi, malları taşımaktır. Yukarıdaki resimde görebileceğiniz gibi, bir depolama robotu bir raf taşıyor. İlk günlerde deponun operasyonu "insanlar mal geliyor" idi ve insanlar malların önüne istediklerini almak için geliyorlardı, bu etki çok zayıftı.

Yapay zeka ile koordine edilen yeni bir depolama robotu türü ile amacımız "insanlara mal" - Hareketsiz duruyorum ve ihtiyacım olan mallar robot tarafından getirilecek. Burada hangi problemle karşılaşacaksınız?

Yani depoda birden fazla robot hareket ederken güvenlik sağlanmalıdır - iki robot çarpışmaz. Ek olarak, depo robotunun yol planlaması olarak adlandırılan en kısa yolu bulmaları gerekir: nasıl gitmelisiniz. Bu aynı zamanda bir AI uygulama senaryosudur. Bu, TensorFlow ile de elde edilir.

Akıllı İşaretleme Sistemi

Geçmişte, puanlama kağıtları genellikle insanlar tarafından yapılıyordu, hatta birden fazla kişi tarafından puanlanıyordu. Ancak yapay zeka alanında, insanların deneyimleyerek yaptıkları bu tür şeylerin aslında bilgisayarlar tarafından yapılabileceğini gördük. TensorFlow çerçevesini kullandığımızda, çoğunlukla zaman serisi eğitimini işlemek için kullanılan, tekrarlayan sinir ağı adı verilen bir işlev vardır. Doğal dil alanında da özellikle iyi bir avantaja sahiptir ve bunu yapmak için kullanılabilir. Dolayısıyla, bu projenin temel amacı, kağıtları puanlamak için insanlar yerine makine puanlamasını kullanmaktır.

Akıllı işe alım

Akıllı işe alımın amacı, iş arayanların, başvuru sahiplerinin ve işe alım yapanların çok iyi bir eşleşme elde etmelerine izin vermektir, böylece en uygun kişi en çok ihtiyaç duyulan yere gidebilir. Bu durumda, her iki tarafta da çok fazla veri analizi yapmamız gerekiyor ve veriler sadece bireyin kendisinden değil, aynı zamanda sosyal veya başka yerlerden de geliyor ve ardından her iki tarafın tüm verilerine dayanarak bir maç yapmalıyız.

Online reklam sistemi

Öneri sistemine biraz benziyor, ancak bu sistem üzerinde çalışırken, aslında, çevrimiçi reklamcılık sistemi ile öneri sisteminin esasen farklı olduğunu göreceksiniz.

Öneri sisteminden yararlananın kullanıcı olduğu söylenirken, bir reklam sisteminde yararlanıcının platform veya reklam veren olduğu söylenir. Ek olarak, öneri sisteminin bireysel kullanıcıya uyan en iyi öneri planını bulması gerekir; ancak çevrimiçi reklamcılık sisteminin kârı en üst düzeye çıkarması gerekir.

İkincisi bir kuralı var, mesela bu reklamı ben tasarlasam mantıklı olsun ya da olmasın, sadece koymak istiyorum. Bu durumda, müdahale etmek, işbirliği yapmak ve bir çevrimiçi reklamcılık sistemini birlikte gerçekleştirmeyi öğrenmek için daha fazla kural vardır. Bu parça, tavsiye sisteminden nispeten daha karmaşıktır.

Önerilen sistem

Öneri sistemleri pek çok yerde kullanılır ve kullanıcılara hizmet vermek söz konusu olduğunda bile aslında öneriler içerir. Örneğin, kullandığımız birçok uygulama size pek çok haber gönderecek, özünde bu haberler filtreleniyor. Bu alanı tavsiye ederken. Var olan ve yaygın olarak kullanılan birçok yöntem vardır. Örneğin, insanlara veya nesnelere dayalı işbirliğine dayalı filtreleme yaygın olarak kullanılmaktadır. Şimdi daha çok denediğimiz şey, tavsiyeleri daha iyi hale getirmek için derin sinir ağlarını kullanmak. Burada modeller ve algoritmalar var, bu aslında TensorFlow uygulamasının bir senaryosu.

Alt veri hizmetinde bir noktayı vurgulamak istiyorum: Herhangi bir AI sistemi oluşturduğumuzda, odak noktası bir model oluşturmak değil, veri kümeleri ve veri mimarisi olmalıdır. Bu parça en önemlisidir.

Akıllı Soru-Cevap

Aslında, akıllı soru ve cevabı ortak bir sohbet robotu olarak anlayabiliriz. Bu durumda, pratikte, doğrudan anahtar kelimeler üzerinden arama yapabilir, statik olarak size geri döndürebilir ve size geri bildirim vermek için arama motorunu kullanabiliriz. Özünde, bu çağ akıllıca bir soru cevap değil, bir literatür araştırmasıdır. Daha sonra, akıllı soru cevap denen durum nedir?

Akıllı Soru-Cevap, yalnızca anahtar kelimelere dayalı değildir, bu cümleyle ne demek istediğimi anlayabilir.

Sonuçları bulmanın yanı sıra, çok önemli bir işlevi vardır, yani ne söylediğini anlamaktır. Bu bir teknoloji içerir: doğal dil işleme. Bu nedenle, akıllı soru ve cevapta, ilgili bir incelemeye ek olarak, doğal dil işleme de yapmamız gerekiyor.

Ek olarak, müşteri için metne ek olarak, girdimiz ses ve görüntü almayı da içerebilir; bu nedenle düşünceniz özellikle daha fazla olacaktır. Şu anda bu alan yapay zekanın çok geliştiği bir alandır. Yaptığımız sohbet botuna gelince, aslında modeli temelde TensorFlow ile yapılmış.

İşletmeler için akıllı bir soru ve yanıt oluşturmak için TensorFlow kullanmanın faydaları nelerdir?

Şu anda, aslında bulutla ilgili, ilgili ve genel birçok çözümümüz var. Ancak endüstri için dikey akıllı soru yanıtlama, genel zeki problemlerle çözülebilecek bir problem değildir. Örneğin, bir endüstride çok fazla jargona sahiptir ve bu jargona çok sık değinilmemektedir, bu nedenle işletmeler için, kendi dikey endüstrisinin kendisine hızlı bir şekilde hizmet sağlayabilen akıllı bir sorusunu ve cevabını oluşturacaktır. Satış sonrası servis gibi. Kullanıcı ürünü satın aldığında ve satış sonrası ihtiyaç duyduğunda robot şu anda kullanılabilir ve çok fazla müşteri hizmetleri personelinin soru sormasına gerek kalmaz.

Üretim sorunları

Bir yapay zeka projesinin geliştirme sürecinde, TensorFlow sizin için sadece bir çerçevedir. İlgili algoritmaları uygular ve size daha kullanıcı dostu bir API sağlar, böylece çeşitli sinir ağları oluşturabilir ve çeşitli eğitimleri çok iyi gerçekleştirebilirsiniz. Bu bakımdan, programlama diline veya temel bilgi anlayışına daha aşinadır. Örneğin, kayıp fonksiyonu nedir, gradyan inişi nedir. Bu tür detaylı programlama seviyesi bilgisi aşağıdaki eğitim kurslarında çok detaylı olarak anlatılacaktır. Burada bahsedilen sorunlar daha çok tüm proje bağlamında - çünkü projeye TensorFlow uyguladığımız ve bir yapay zeka projesi oluşturduğumuz için kesinlikle eğlenmek için değiliz, ancak onu üretim sorunlarını çözmek için kullanmayı umuyoruz. Gerçeklik.

Bu bölüm, daha önce bahsettiğim veri keşfi hakkında konuşacak. Çok erken bir zamanda, inşa ettiğimiz veri gölünün veri keşif yeteneklerinden yoksun olduğunu gördük. Bir veri gölünün orada birkaç petabaytlık verisi vardır, ancak hızlı bir arama işlevi için meta verileri bile yönetemiyorum. Daha sonra bu sorunu çözmek, çeşitli önizlemeler yapmak ve veri bilimcilerine çok iyi destek sağlamak için bir veri keşif hizmeti yapacağız.

Dosya işleme

Aşağıdaki sözcükler küçük dosyalar içindir. Öncelikle, TensorFlow'umuz tarafından işlenen veriler önceden düzenlenmelidir. Yani, TensorFlow'un üretim ortamına doğrudan bağlanma ve işlenmemiş verileri kendi başına işlemesi için bir yol yoktur. Bu işlev serisinin tümü büyük veri mimarisinde gerçekleşir, bu nedenle büyük veri mimarisi temelde yapay zeka ve TensorFlow için iyi veri işleme sağlar.

Bu süreçte küçük dosyalar sorunu ile karşılaşacağız. Örneğin, on milyarlarca dosyam var Bir keresinde veri gölünde on milyarlarca dosyayla karşılaştık. Şu anda çok sayıda küçük dosya var. Bu tür bir dosya işleme için genellikle birkaç senaryomuz vardır.

İlk tür, verilerim gibi statik dosyaysa, tek bir grupta içe aktarılan on milyonlarca dosya vardır ve sürekli bir giriş olmayabilir.En basit yol sıkıştırmaktır. Sıkıştırmanın birçok yolu vardır ve farklı uygulamalar için, örneğin Hadoop'un kendi sıra dosyası yöntemi vardır.

Bu yönteme ek olarak, veriler gerçek zamanlı olarak girdiğinde uygulanacak ikinci bir senaryo veri işleme de vardır. Örneğin, verilerim her zaman geliyor ve her geldiğinde küçük dosyalar. İçeri girmeye devam edin. Şu anda statik sıkıştırma uygun değildir çünkü veriler her zaman gelir. 101kb ile 110kb arasında sıkıştırabilirsiniz, ancak bu pek bir anlam ifade etmiyor. Bu durum için daha önce veri gölünde küçük dosya sistemi adı verilen bir sistem tasarladık. Tüm veri taleplerini yakalamak için kullanılır ve küçük dosyaları kaydettikten sonra, arka planda, arka planda sıkıştırmaya adanmış bağımsız bir arka plan iş parçacığı bulunur. Dosyalarınızın sayısı veya belirli bir özellik bu eşiği tetiklediğinde, küçük dosyaları sıkıştırmak için bir iş parçacığı tetikleyecektir.

Bu küçük dosya hizmetinde, sıkıştırıldıktan sonra dosyada hangi dosyaların bulunduğunu ve sırasıyla dizine göre nereye dizine ekleneceğini kaydetmesi gerekir. Böylelikle küçük bir dosyaya erişim talebimiz olduğunda, talep önce küçük dosya servisi tarafından yakalanır.Aradığı dosyaya göre yönetim sistemi nerede olduğunu görmek için yönetim sistemini kullanacak, sonra büyük dosyayı alıp çıkartacaktır. Ardından küçük dosyayı geri gönderin, böylece küçük bir dosyanın sorununu çözebilirsiniz. Bu tür sahneler dosyalar için gelmeye devam ediyor, ancak az sayıda dosya çok iyi bir çözüm olabilir.

Aslında küçük dosyalar için başka bir yol daha var, yani kafka'ya küçük dosyalar koyabiliriz ki bu küçük dosyalar için çok iyidir. Ancak Kafka ile ilgili bir sorun, büyük dosyaları işleyememesidir, özellikle küçük dosyalar için bir veya iki K ve büyük dosyalar için birkaç G gibi dosya farklılıkları çok büyük olduğunda, Kafka kör olacaktır.

Daha önce de belirtildiği gibi, az sayıda dosyayla ilgileniyoruz. Aşağıda, karşılaştığımız on milyarlarca dosya sayısı sorunu var.

Hadoop'u bir uygulama olarak entegre eden bir veri hizmeti sistemi için, tüm meta verilerinin NameNode'a yerleştirildiğini biliyoruz. NameNode'da, bu meta verinin hangi DataNode'da olduğunu kaydeden meta verileri depolamak için büyük bir hashtable vardır. Belirli bir dosyaya erişmek istediğimizde, önce NameNode'u bulun, hash tablosuna göre dosyanın hangi DataNode'da olduğunu bulun ve bu adresi istemciye iade edin.Müşteri bu şeyi alır ve daha sonra DataNode'u ister, böylece bu dosya ister İşlem tamamlandı.

Peki darboğaz nerede?

DataNode'unuz çok sayıda dosya kaydı depolarsa, tüm belleğinizin patlamasına neden olur. Her dosya geldiği için, orijinal bilgiler belirli miktarda bellek alanı kaplar. Hadoop'un ucuz mini bilgisayarlara dayandığı iddia edilmekle birlikte, tüm kümenizin iyi çalışabilmesi için NameNode yapılandırmasının en azından yüksek yapılandırmayla diğer düğümlerden daha yüksek olması gerektiğini vurgulamaktadır. İlk günlerde, NameNode yalnızca HA işlevini sağlıyordu. Tüm orijinal bilgileriniz tek bir NameNode'da bulunuyor. Çok fazla dosyanız olduğunda, temelde çok büyük sorunlara neden olacaktır.

Üretim ortamına göre, bir NameNode'un depolayabileceği maksimum dosya sayısı yaklaşık 7 milyon olabilir. Onun sorunu, karma tablonun üst limite ulaşması değil, girdiğiniz her kaynak dosya, verilerinizin deponun bir kısmını işgal edeceği ve hafızanız bu kadar genişletilemeyeceği için darboğazdır.

Bundan sonra, bir Hadoop 2.0 ittifakı başlatıldı. İttifak, NameNode'u farklı düğümlere tahsis etmektir ve her düğüm farklı bir dizine monte edilir, böylece dizin yatay olarak bölünür.Bir NameNode yalnızca bir dizinden sorumludur Bu yapının faydaları nelerdir? : Basit bir ayrım değil.

Tüm BT geliştirme sürecimizde, daha sonra bir mikro hizmet ürettik.Bu tür bir düşünce aslında temelde bunun içindir.İşinizi bağımsız olarak ayırmaktır Büyük sistemlerimizden birindeki sorun nedir? Sisteminiz arızalandığında, tüm ihtiyaçlarınız bozuktur ve ona erişemezsiniz. Ancak işletmeyi farklı alt sistemlere böldüğümüzde ve sistemlerimden biri çöktüğünde, kalan sistem kullanılmaya devam edebilirdi.

Hadoop Alliance çıktıktan sonra, belirli bir klasörde bir sorun olduğunda, kalan verilerimin hala kullanılabileceğini göreceğiz. Bu durumda verileri tasarlarken ne yapacağız? Farklı kataloglarla, farklı iş senaryoları veya farklı departmanlarla karşılaşabiliriz. Bu durumda işletmeye büyük bir veri platformu sağlandıktan sonra çok iyi bir hata toleransına sahibiz yani belirli bir işletme departmanının verisinde sorun olduğunda başka yerleri etkilemeyecektir. Güvenlik izolasyonu doğrudan bu katmanda yapılır. Bir işletme için, birkaç büyük veri platformu seti oluşturmak pek olası değildir.Genel olarak, tüm işletmeye birleşik bir hizmet sağlamak ve üstüne bir yapay zeka sistemi kurmak için bir dizi büyük veri platformu olacaktır. Veri tesisi gereksinimleri çok yüksektir. Bu Hadoop parçası, çok sayıda dosyayı işlemenin yanı sıra, bu sorunu iyi çözen bu tür bir güvenlik yalıtımı da sağlar.

Bir küme nasıl oluşturulur

Burada herkesin gördüğü şey bir kümenin nasıl oluşturulacağıdır.

Entegrasyon için TensorFlow ve büyük verileri uygularken, ayrı veri platformları ve AI kümeleri gibi birkaç farklı işleme yöntemimiz var. Hepimiz TensorFlow'un avantajının GPU kullanmak olduğunu biliyoruz. Elbette bu bir TensorFlow sorunu değil, ancak herhangi bir sayısal hesaplama çerçevesi için GPU en verimli olanıdır. GPU'lar sıkı çalışma ve saf sayısal hesaplamalarda çok iyi oldukları için; CPU'lar mantıksal hesaplamalarda daha iyidir.Bu durumda, insanlar sayısal hesaplamalar için GPU'ları kullanma eğiliminde olacaktır ve derin sinir ağları aslında farklı matrislerdir, çeşitli Saf matematiksel işlemler. Bu nedenle, kuruluşta, özellikle eğitim modelleri için birleşik bir GPU kümesi oluşturacağız.

Bu şekilde, bir soruyla karşı karşıyayız: Kurumsal düzeyde bir yapay zeka sistemi oluştururken, veri platformumuz yapay zeka sistemiyle nasıl entegre edilmelidir?

Tamamen bağımsız olabiliriz, bir veri platformu, bir AI sistemi. Ayrıca AI sistemini ve veri sistemini birlikte dağıtabiliriz. Aynı sunucuda konuşlandırılan CPU ve veri hizmetleriyle ilgili şeyler. Hesapladığımızda, modelimiz GPU üzerinde eğitilir ve veriler başka bir yerde işlenir ve bir sete entegre edilir. Yani, biri bağımsız, diğeri entegre olmak üzere iki dağıtım yöntemi vardır: Hangisi daha iyi? En iyisi olmalı. neden?

Çünkü bağımsızlık için, bağımsızsak, bu, verilerin dağıtılmasına ve hızlı bir şekilde elde edilebilmesine rağmen, kaçınılmaz olarak yeterli bir eylemde bulunacağınız anlamına gelir.Verileri farklı düğümlerden bir düğüme çekmeniz ve sonra Bu verileri çıkarın ve GPU'da eğitmek için AI sistemine aktarın. Görünüşe göre şu anda çok yüksek bant genişliğine ve hesaplama performansına sahipsek, bu bir sorun değil, ama onu kullandıkça, aslında onu entegre etmenin daha iyi bir yolu olduğunu göreceğiz.

Bunun avantajı, her şeyden önce, daha önce Tensorflow'un model dağıtımını desteklediğinden bahsetmiştik. Farklı düğümler üzerinde eğitim verebilirim. Ve veriler büyük veri platformundadır, veri dağıtımına sahiptir ve Tensorflow, verileri doğrudan hdfs gibi dağıtılmış dosya sisteminden yüklemeyi destekler. Bu durumda daha iyi bir düzen nedir?

Modelimiz dağıtık bir şekilde eğitilmiştir.O anki düğüm üzerinde eğitim verirken, mevcut düğümün verilerini doğrudan yükler.Bu şekilde tüm ağ bant genişliği doğrudan kaydedilir ve eğitim doğrudan mevcut düğüm üzerinde gerçekleştirilir.Bu bizim en ideal durumumuzdur. Bu nedenle, aynı zamanda tüm kümelerin dağıtımını bir arada deneyimlemenin en iyi yoludur.

Elbette uygulama sürecinde farklı üretimin objektif ortamına göre bir takım düzenlemeler olabileceği için bu tür bir problem ancak yerinde açıklanabilir. Ancak küme yapımı için bu iki yönteme sahibiz.

Spark On TensorFlow

Daha önce Tensorflow'un dağıtılmış bir modeli olduğundan bahsetmiştim. Aslında, daha sonra TensorFlow, TensorFlow On Spark olan Spark üzerinde çalışmayı da destekleyebilir. TensorFlow Spark

Spark TensorFlowSpark TensorFlow TensorFlow Spark executor

hata ayıklama

TensorFlow AI AI AITensorFlow

TensorFlow Tensorboard Tensorboard

1.0 TFDBGTensorFlow debug DBG TensorFlow

Ölçek

AC AC ACTB PB TP

AI AI

90% 90% 90%

TensorFlow and

ThoughtWorks TensorFlow mooc.ai

ThoughtWorks

ThoughtWorks IT 42 15

2012ThoughtWorks GoogleFacebook

2016 ThoughtWorks

Temelden ileri düzeye, teori + gerçek savaş, TensorFlow'un tek noktadan derinlemesine anlaşılması!

Bu kurs, derin öğrenme geliştiricilerine yöneliktir ve TensorFlow'un görüntü tanıma ve metin analizi gibi belirli sorunları çözmek için nasıl kullanılacağını öğretir. Kurs 10 haftayı kapsıyor.TensorFlow'un ilkeleri ve temel pratik becerileriyle başlayacak ve öğrencilere TensorFlow'da adım adım CNN, kendi kendine kodlama, RNN, GAN ve diğer modellerin nasıl oluşturulacağını öğretecek ve son olarak TensorFlow'a dayalı eksiksiz bir derin öğrenme geliştirme setinde ustalaşacak. beceri.

İki öğretim görevlisi Tong Da ve Bai Fachuan, ThoughtWorks'ün kıdemli teknik uzmanlarıdır ve büyük veri platformları ve derin öğrenme sistemi geliştirme projeleri oluşturma konusunda zengin deneyime sahiptir.

4 25 2000-2100

20 10 2 1

Samsung note10'un dört sürümü olacak mı? Tam olarak Xiaomi 9'a benzeyen Galaxy A70 piyasaya sürüldü
önceki
İlk defa! Sahibi, "Otoriter" Brocade bayrağını gönderdi Çocuk Hastanesi Çocuk Hastanesi Hastanesi'nin İkinci Özel Hastalık Klinikleri Açıldı
Sonraki
Mavi ince shiitake mantarları cehenneme gidiyor, bu şovu izledikten sonra ölmek istiyorum
Güney Korenin Çin'de kayıtlı ilk 5G cep telefonu olan Galaxy S105G, Hong Kong'da göründü: dahili ve harici yükseltmeler
ABD hisse senetleri düştü, Bitcoin düştü, petrol fiyatları düştü. Perde arkasında kim var?
OPPO, gelecek yıl geliştiriciler için 1 milyar yuan'lık bir "yerçekimi planı" oluşturmak için 5G'yi dağıtıyor ve akıllı bir asistan olan Breeno'yu piyasaya sürüyor.
Bugünden itibaren Nintendonun altın puanları, dijital içeriğin maliyetini telafi edebilir
Satrançtan Sonra Xie Jun: Çocukların Satrançla Akıllı Yaşamı Fark etmelerine Yardımcı Olun
GOG Haftalık İndirimi: "Fire Watcher" sadece 14 yuan
Long Xingliang ile röportaj: "In the Mood for Love" gibi bir film oynamak istiyorum
Filmleri bu kadar güzel yapan, bu huzursuz teknolojik yenilikçilerdir
Büyük ekran + A12 harika, ancak 5 W "hızlı şarj" iPhone XS Max deneyimine zarar veremez
Ma Li'yi anlık eriştelerle öpmek ve genç oyuncuları kilo vermeye zorlamak, Gu Tianle "Miyav Yıldızı" ekibinde ne yaptı?
OPPO Find X fotoğraf deneyimi: şarkılar gibi pitoresk gençlik, renkli dünya renkli hayatı oluşturur
To Top