Modüler'in ayrıntılı açıklaması: LLVM'nin babası geleceğin yapay zeka motor dilini nasıl yaratıyor?

Bu makalenin yapısı

**1.Derleyici nedir? **

2. LLVM'nin babası Chris Lattner hakkında

  • XLA ve MLIR nedir? *LLVM nedir?
  • Çınlama nedir *Clang ve LLVM arasındaki ilişki

3.Modüler Hakkında

  • Modüler——yapay zeka motoru
  • Google'ın TPU'su hakkında
  • Derin öğrenme ve programlanabilirlik hakkında
  • Motoru gerçekte üretmenin teknik zorlukları nelerdir?

4. Girişimcilik, mühendislik ekibi oluşturma ve yapay zekanın geleceği hakkında

**1. Derleyici nedir? **

Derleyici, üst düzey programlama dillerini bilgisayarda çalıştırılabilir kodlara çeviren bir yazılım aracıdır. Derleyici, programcı tarafından yazılan kaynak kodunu bilgisayarın anlayabileceği ve yürütebileceği ikili talimatlara dönüştürür. Bu talimatlar yürütülebilir Dosya veya kitaplıkta paketlenir. Bilgisayarınızdaki programları çalıştırmak için.

Derleyicinin ana iş akışı kaynak kodu → ön işlemci → derleyici → nesne kodu → bağlayıcı → çalıştırılabilir programlar (utable'lar) şeklindedir.

Başka bir canlı örnek:

*Öğretmen: Çocuklar, bugün toplama işlemini öğreniyoruz. *

nokta nokta nokta ……

*Çocuklar: Hocam öğrendik. *

Öğretmen: Şimdi 1+1='i anlayabiliyor musun? Derleyici

2. Chris Lattner, LLVM'nin babası

Modular'dan bahsetmeden önce Chris Lattner'in deneyiminden bahsedelim. 1978 yılında Kaliforniya'da doğdu ve San Francisco Körfez Bölgesi'nde büyüdü. Programlamaya çok küçük yaşlarda başladı. Daha sonra lisans diplomasını aldı. UC Berkeley'den bilgisayar bilimi ve Stanford Üniversitesi'nde derleyici optimizasyonu ve otomatik paralelleştirme üzerine doktora eğitimi aldı.

Chris Lattner doktorası sırasında LLVM'nin geliştirilmesine öncülük etti. LLVM sayesinde 2012 ACM Yazılım Ödülü** (ACM Yazılım Ödülü)****'nü kazandı. Bundan sonra Lattne, Apple tarafından işe alındı ve Clang derleyici ön ucunun, Swift (Objective-C'nin yerini alan dil) programlama dilinin tasarımı ve geliştirilmesi dahil olmak üzere Apple'daki birçok önemli projeden sorumlu oldu. Xcode geliştirme ortamının iyileştirilmesi. Swift dili, basitliği ve performansı nedeniyle oldukça popülerdir ve geliştiriciler tarafından iOS, macOS ve diğer Apple platformlarında uygulama geliştirmek için kullanılır.

Apple'dan ayrıldıktan sonra Tesla ve Google gibi şirketlerde çalışan Chris Lattner, programlama dilleri ve derleyici teknolojileri alanında araştırma makaleleri yayınlamaya ve açık kaynaklı projelere katılmaya devam etti.Tensorflow altyapı ekibine liderlik etmekten sorumluydu. Google'da. , XLA ve MLIR'ı oluşturdu.

Burada XLA ve MLIR'ın ne olduğunu açıklıyoruz:

XLA (Hızlandırılmış Doğrusal Cebir), potansiyel olarak kaynak kodunda herhangi bir değişiklik gerektirmeden TensorFlow modellerini hızlandırabilen, alana özgü bir doğrusal cebir derleyicisidir. **** Çalışma hızını artırabilir ve bellek kullanımını iyileştirebilir. ***

***MLIR (Çok Düzeyli Ara Gösterim:Çok Düzeyli Ara Gösterim) bir derleyici çerçevesidir. Tasarımı, derleyiciyi optimize eder ve temel olarak derleyici tasarımının tüm ortak parçalarını kapsar. derleyici geliştiricilerine kolaylık sağlar. *

**Daha da önemlisi LLVM nedir? **(Aşağıdakiler kısa kitaptan alıntıdır, orijinal metin için referans linkine bakınız)

**LLVM, modüler, yeniden kullanılabilir derleyiciler ve takım zinciri teknolojilerinden oluşan bir koleksiyon olarak anlaşılabilir. LLVM (aslında Low Level Virtue Machine'in tam adıdır ancak hiçbir zaman sanal makine olarak kullanılmamıştır) Yani aşağıdaki LLVM bir kısaltma değil, projenin tam adıdır.

Sonra devam ediyoruz, Geleneksel derleyici mimarisi şuna benzer:

Ayrıldığında şunları içerir:

  • Ön uç: ön uç (sözcüksel analiz, sözdizimi analizi, anlamsal analiz, ara kod oluşturma)
  • Optimizer: optimizer (ara kod optimizasyonu)
  • Arka uç: arka uç (makine kodunu üretir)

LLVM mimarisi şuna benzer

**Doğru bir şekilde açıklamak gerekirse LLVM, derleyicide aşağıdakiler gibi birçok yenilik yapmıştır: **

  • Farklı ön uç ve arka uç, birleştirilmiş ara kod LLVM Ara Gösterimi (LLVM IR) kullanır
  • Yeni bir programlama dilini desteklemeniz gerekiyorsa yalnızca yeni bir kullanıcı arayüzü uygulamanız yeterlidir
  • Yeni bir donanım cihazını desteklemeniz gerekiyorsa yalnızca yeni bir arka uç uygulamanız gerekir
  • Optimizasyon aşaması evrensel bir aşamadır. Birleşik LLVM IR'yi hedefler. İster yeni programlama dillerini ister yeni donanım cihazlarını desteklesin, optimizasyon aşamasını değiştirmeye gerek yoktur.
  • Buna karşılık, GCC'nin ön ucu ve arka ucu çok fazla ayrı değildir ve ön uç ile arka uç birbirine bağlıdır. Bu nedenle GCC'nin yeni bir dili veya yeni bir hedef platformu desteklemesi özellikle zorlaşıyor.
  • LLVM artık çeşitli statik ve çalışma zamanında derlenmiş dillerin (GCC ailesi, Java, .NET, Python, Ruby, Scheme, Haskell, D vb.) uygulanması için ortak bir altyapı olarak kullanılıyor.

**Clang nedir? **

LLVM projesinin bir alt projesi, LLVM mimarisini temel alan bir C/C++/Objective-C derleyici ön ucu. GCC ile karşılaştırıldığında Clang aşağıdaki avantajlara sahiptir:

  • Yüksek derleme hızı: Bazı platformlarda Clang'ın derleme hızı GCC'den önemli ölçüde daha hızlıdır (OC'nin Hata Ayıklama modundaki derleme hızı GGC'den 3 kat daha hızlıdır)
  • Küçük bellek alanı: Clang tarafından oluşturulan AST'nin kapladığı bellek, GCC'nin yaklaşık beşte biri kadardır
  • Modüler tasarım: Clang, IDE ile entegrasyonu ve başka amaçlar için yeniden kullanılması kolay, kütüphane tabanlı modüler bir tasarımı benimser.
  • Teşhis bilgileri son derece okunabilirdir: Derleme işlemi sırasında Clang, hata ayıklama ve hata raporlama için faydalı olan büyük miktarda ayrıntılı meta veri (meta veriler) oluşturur ve saklar.
  • Tasarım açık ve basit, anlaşılması kolay, genişletilmesi ve geliştirilmesi kolay

Clang ve LLVM arasındaki ilişki

LLVM'nin genel mimarisi için, clang ön uç olarak kullanılır. LLVM geniş anlamda tüm LLVM mimarisini ifade eder ve LLVM genel anlamda dar anlamda LLVM arka ucunu (kod optimizasyonu ve hedef kod oluşturma dahil) ifade eder.

Kaynak kodu (c/c++) clang--> ara koddan geçer (bir dizi optimizasyondan sonra, optimizasyon için Pass kullanılır) --> makine kodu

Referans: Jianshu-12 Ağustos 2018-LLVM'nin ne olduğunu anlamanıza yardımcı olacak basit bir açıklama

3. Modüler Hakkında

Modüler——Yapay Zeka Motoru

  • **C****hris Lattner'ın Modüler olarak derleyiciler ve girişimcilik hakkındaki düşünceleri? **

C****hris Lattner:"Modular'ı çivi arayan bir çekiçle ya da yenilik uğruna yenilikle yaratmadım. Şu anda OpenAI gibi şirketler için az sayıda çalışanın çok fazla harcama yapması gerekiyor CUDA çekirdeklerini manuel olarak yazmak için çok fazla zaman var. Ancak yapay zeka derleyicilerine yönelik optimizasyonlar, yazılım işbirliğini geliştirmek ve farklı beceri ve bilgilere sahip kişilerin yeteneklerini genişletmek için kullanılabilir"

**"Derleyicinin son şekli, kullanıcıların herhangi bir görevi tamamlamak ve donanım hakkında fazla bilgi sahibi olmak zorunda kalmadan sorunları çözmek için çok basit montaj kodu kullanmasına olanak sağlamaktır. Derleyicinin gerçek rolü, ifade etmek için daha yüksek soyutlama düzeyi kullanmaktır. **"

**"*NVIDIA tarafından piyasaya sürülen FasterTransformer, çok büyük performans iyileştirmeleri getirebilir. Bu nedenle birçok büyük model şirketi ve geliştirici FasterTransformer'ı kullanıyor. Ancak Transformer alanında yenilik yapmak istiyorsanız FasterTransformer ile sınırlı kalacaksınız."

  • **Yani derleyicinin rolü genellemesinde yatıyor, buradaki genelleme nasıl anlaşılacak? **

C****hris Lattner: FasterTransformer ile aynı veya daha iyi sonuçları elde etmek istiyorsanız, ancak diğer genel mimarileri (burada Transformer olmayan mimariler) kullanarak derleyici aracılığıyla her ikisinin de en iyisini elde edebilirsiniz. Sonuç olarak, araştırma yaparken aynı mükemmel performans elde edilebilir.Başka bir deyişle, derleyici seviyesindeki optimizasyon, bir "AI motoruna" eşdeğer olabilir ve gelecekte LLM mimarisinin dönüşümüne yardımcı olabilir.

  • **Mojo şu anda çok popüler ve Python ekosistemiyle uyumlu ancak Modular'ın amacı birleşik bir yapay zeka motoru oluşturmak. Peki sizin açınızdan yapay zeka araştırma ve geliştirme alanında çözülmesi gereken güncel sorunlar nelerdir? **

Chris Lattner: Yapay zekanın hızla geliştiği 2015, 2016 ve 2017 dönemine dönersek, o dönemin teknolojisine ağırlıklı olarak TensorFlow ve PyTorch öncülük ediyordu. PyTorch, TensorFlow'dan biraz sonra ortaya çıktı. , ancak her ikisi de bazı yönlerden benzer tasarımlardır. **Ancak, TensorFlow ve PyTorch sistemlerini oluşturan ve tasarlayan kişiler çoğunlukla yapay zeka, diferansiyel denklemler ve otomatik türev konularında deneyim sahibidirler ve yazılım ve donanımın sınır problemini çözememişlerdir. **

Dolayısıyla Keras* gereklidir (Not: Keras, Python'da yazılmış açık kaynaklı bir yapay sinir ağı kütüphanesidir. Tensorflow, Microsoft-CNTK ve Theano için üst düzey bir uygulama programlama arayüzü olarak kullanılabilir. derin öğrenme modellerini gerçekleştirin.Tasarım, hata ayıklama, değerlendirme, uygulama ve görselleştirme ) veya nn.Module (Not: nn.Module , PyTorch'a özgü bir kavramdır ve aynı zamanda sıklıkla kullanılacak bir sınıftır. kullanılmış)*.

Bunların en alt katmanı aslında operatörlerdir.Evrişim, matris çarpımı, indirgeme algoritması ve eleman-eleman işlemi nasıl uygulanır? CUDA ve Intel MKL'yi (Intel Math Kernel Library) kullanmanız ve ardından bu temelleri geliştirmeye devam etmeniz gerekir.

Bu model başlangıçta iyi ama sorun da var. İlk başta çok az operatör var. Ancak yeni bir donanım tanıtıldığı sürece, Intel tarafından tanıtılan yeni bir CPU çeşidi olsa bile, hesaplama karmaşıklığı artacaktır. Günümüzde TensorFlow ve PyTorch'ta her biri çekirdek olarak adlandırılan binlerce operatör bulunmaktadır ve tüm çekirdeklerin insanlar tarafından manuel olarak yazılması gerekmektedir.

(Not: Çip endüstrisinde IP'ye genel olarak IP çekirdeği de denir. IP çekirdeği, çipte bağımsız işlevlere sahip devre modüllerinin olgun tasarımını ifade eder. Bu devre modülü tasarımı, bu devre modülünü içeren diğer çip tasarımlarına da uygulanabilir. proje, böylece tasarım iş yükünü azaltır, tasarım döngüsünü kısaltır ve çip tasarımının başarı oranını artırır.Bu devre modülünün olgun tasarımı, tasarımcının bilgeliğini somutlaştırır ve tasarımcının fikri mülkiyet haklarını yansıtır.Bu nedenle çip endüstrisi, IP çekirdeklerini Bu devre modülünün olgun tasarımını gösterir. IP çekirdeği aynı zamanda çip tasarımının ara bileşeni olarak da anlaşılabilir)

Yani yeni bir donanım piyasaya sürüldüğünde binlerce Kernel'i yeniden yazmanız gerekecek, böylece donanıma girme eşiği giderek yükselecektir.Üstelik bu durum bilimsel araştırmalar için de birçok zorluk yaratmaktadır.Mesela bir araştırmacı, çok çok az kişi bu çekirdeklerin nasıl çalıştığını biliyor.

(Not: Çekirdek geliştirme genellikle donanım platformlarına özel olduğundan, bırakın FPGA veya DPU'yu, nvidia bile evrensel değildir. Özel operatörler, donanım platformu yazılımının bilgi işlem yeteneklerini genişletmek için ana kanaldır)

Şunu da bilmelisiniz ki artık birçok kişi CUDA Çekirdeği* yazıyor (Not: Çekirdek: CUDA tarafından GPU üzerinde çalıştırılan işlevin adı)*, ancak buradaki mühendislerin beceri profili, sisteme yenilik getirebilecek becerilerden tamamen farklıdır. modeli mimarisi. **Sonuç olarak pek çok yapay zeka sistemi öyle bir zorlukla karşı karşıya kalıyor ki, Kernel yazabilecek teknik uzman bulamıyor. **

*(Not: *Hesaplama için GPU kullanıldığında, tüm hesaplama işlemleri bir GPU Çekirdeğinde kapsüllenebilir ve GPU üzerinde sıralı bir şekilde yürütülebilir. Çok yönlülük adına, geleneksel operatör kitaplıkları tasarımı çok basittir, bu nedenle onlardan çok var)

Google'ın TPU'su hakkında

Google'dayken Google'ın TPU projesine katıldım ve o dönemde TPU ekibinin karşılaştığı zorluklar şunlardı: Piyasada binlerce farklı Kernel var, yeni bir donanım nasıl piyasaya sürülür? O zamanlar birçok meslektaşımız bunu başarmak için bir derleyicinin kullanılıp kullanılamayacağını da belirtmişti. **Böylece binlerce çekirdeği elle yazmak, tüm bu operatörleri yeniden yazmak ve Intel veya NVIDIA gibi tamamen kendi ekosistemini oluşturmak yerine, derleyici manuelden daha esnek olabilir çünkü derleyici bunu farklı şekillerde yapmamıza izin verebilir. ve Çekirdek'in eşleştirilmesi de performansın çoğunu optimize edebilir. **

**Derleyiciler bunu genelleştirilmiş bir şekilde başarabilirler, ancak geleneksel elle yazılmış Çekirdeği kullanırsak, ortaya çıkan şey, araştırmacıların istediği yeni bir şeyden ziyade, insanların ilginç olduğunu düşündüğü sabit bir Çekirdek düzenlemesi olmalıdır. **Böylece Google'ın XLA'sı (Yukarıda açıklandı: Hızlandırılmış Doğrusal Cebir: Hızlandırılmış Doğrusal Cebir) doğdu. XLA, büyük ölçekli exaflop düzeyindeki bilgisayarları destekleyebilir ancak sorun yeniden ortaya çıkıyor: XLA, Google'ın TPU'sunu desteklemek için ortaya çıktı.

**Bir derleyici oluşturmak gerçekten zordur ve hala ölçeklenebilirlik sorunları vardır. Şu anda, birçok makine öğrenimi mühendisliği projesini tamamlamak için derleyici mühendislerinin işe alınması gerekmektedir ve makine öğrenimini ve ilgili çeşitli bilgileri anlayan derleyici mühendisleri daha da önemlidir. değil yeterli. Ayrıca XLA ölçeklenebilir değildir ve yalnızca TPU'larla çalışır. **

Derin Öğrenme ve Programlanabilirlik Hakkında

NVIDIA'nın CUDA'sının ve AlexNet'in doğuşu ve derin öğrenmenin gelişimi gibi derin öğrenmenin gelişim geçmişine baktığımızda, birçok kişi AlexNet'in doğuşunun veri, ImageNet + bilgi işlem ve veri kombinasyonunun sonucu olduğuna inanıyor. GPU'nun gücü. **

(Not: 2012 yılında, derin öğrenmenin üç devinden biri olan ve Turing Ödülü sahibi Geoffrey Hinton'un öğrencileri Alex Krizhevsky ve ilya, AlexNet'i önerdiler ve o yıl ILSVRC'de önemli bir avantajla şampiyonluğu kazandılar. üçüncü İki. Bu sonuç akademi ve endüstrinin büyük ilgisini çekti ve bilgisayarlı görme yavaş yavaş derin öğrenmenin hakim olduğu bir döneme girdi.)

**Fakat birçok kişi "programlanabilirliğin" önemini unutuyor. **

Çünkü araştırmacıların daha önce var olmayan evrişimli çekirdekleri icat etmelerine olanak tanıyan şey CUDA'ydı ve o zamanlar TensorFlow da yoktu. **Aslında, yeni araştırmaların tüm derin öğrenme sistemleri dalgasını başlatmasını sağlayan şey veri, hesaplama ve programlanabilirliğin birleşimidir. **

**Dolayısıyla geçmiş olaylardan ve tarihten ders almak çok önemlidir. Peki bir sonraki adımı nasıl atacaksınız? Herkesin insanlığın muhteşem algoritmik yeniliklerinden ve fikirlerinden yararlanabileceği bu teknolojinin bir sonraki çağına nasıl geçeceğiz? **Derleyiciden nasıl yararlanılır? Yeni sorunları çözmek için derleyicilerin ölçeğinden ve çok yönlülüğünden nasıl yararlanabilirsiniz? **En önemlisi programlanabilirlikten nasıl yararlanırsınız? Bu üzerinde çalıştığımız Modüler, yapay zeka motoru. **

Yapay zekanın geleceği hakkında

  • **Yapay zeka gelişiminin geleceğini nasıl görüyorsunuz? Farklı profillere veya yönlere sahip ekipler arasında daha fazla işbirliği olacağını düşünüyor musunuz? Derleyici olmayan uzmanların derleyiciyi kullanmasını kolaylaştırmak hedeflerinizden biri mi? **

**Chris Lattner: **İnsanlar harikadır, ancak hiç kimse her şeyi kendi kafasına koyamaz. **Farklı tür ve uzmanlıklara sahip insanlar birlikte çalışarak herkesten daha büyük bir şey yaratabilirler. Örneğin, benim bazı yeteneklerim var. ama temelde herhangi bir diferansiyel denklemi hatırlayamıyorum, değil mi? Yani LLM mimarisinin bir sonraki mucidi kesinlikle ben olmayacağım (gülüyor).

**Fakat eğer bunu sistem perspektifinden düşünürsem, eğer bu insanların katkıda bulunmasını, işbirliği yapmasını ve bu işlerin nasıl yürüdüğünü anlamasını sağlayabilirsem, bir atılım olacaktır. **Buluş nasıl teşvik edilir? Sorunun farklı kısımlarını anlayan daha fazla insanın gerçekten işbirliği yapmasını nasıl sağlarsınız? **Dolayısıyla Mojo'nun ve motorun araştırılması, sorunun karmaşıklığını ortadan kaldırmaya yönelik bir çabadır. Çünkü zaten bir araya getirilmiş birçok yerleşik sistem var. **

Buradaki çözümler genellikle yukarıdan aşağıya tasarlanmaktan ziyade sadece sorunu çözmeye dayanmaktadır. Ve Modular'ın tüm yığının karmaşıklığını azaltmaya yardımcı olabilecek daha basit bir yığın sağladığını düşünüyorum. Yeniden düzenlenmezse parçalanmış ve kaotik geçmişi* (yapay zeka alanında parçalanma)* izlemeye devam edecektir. biraz değiştirirseniz çökersiniz, performansı kötü olur veya çalışmaz.Bu durum alttaki katmanın parçalanmasından kaynaklanmaktadır.

  • **Derleyiciler nasıl anlaşılır: Derleyiciler ve diller, insanlar arasında işbirliği veya geçiş için bir araç mıdır? **

Chris Lattner: Modular'ı çekiçle çivi aramamak veya yenilik uğruna yenilik yapmamak için yarattım. Şu anda OpenAI gibi şirketlerde az sayıda çalışanın CUDA'yı manuel olarak yazmak için çok fazla zaman harcaması gerekiyor. çekirdekler. **Ancak yapay zeka derleyicilerine yönelik optimizasyonlar, yazılım iş birliğini geliştirmek ve farklı beceri ve bilgilere sahip kişilerin yeteneklerini genişletmek için kullanılabilir. **

Derleyicinin son şekli, kullanıcıların herhangi bir görevi tamamlamasına ve donanım hakkında fazla bir şey bilmesine gerek kalmadan çok basit montaj kodu kullanarak sorunları çözmesine olanak sağlamaktır.Derleyicinin gerçek rolü, görevleri daha yüksek bir soyutlama düzeyinde gerçekleştirebilmektir. Ekspres. Derleyiciler aynı zamanda manuel programlama gerektirebilecek ortak optimizasyonları uygun şekilde otomatikleştirmenin bir yoludur.

İlk hedef, süreci mümkün olduğunca akıcı hale getirmektir;

İkinci hedef ise, eğer çok fazla karmaşıklığı aklınızdan çıkarırsanız, yeni karmaşıklığa yer açabilirsiniz. Ayrıca, soyutlama yoluyla derleyicinin avantajlarından yararlanabilirsiniz; çünkü derleyici ayrıntılara sonsuz dikkat gösterirken insanlar böyle değildir;

**Daha yüksek düzeyde soyutlama bize başka birçok yetenek de kazandırabilir. **Derin öğrenme sistemleri ve Modüler hesaplamaları grafik seviyeye çıkarmıştır, nasıl açıklayalım? Burada for döngüleri gibi karmaşık programlama ifadelerinden kurtulup daha bildirimsel hale geldikten sonra hesaplama modelini değiştirmek anlamına gelir. Pek çok insan henüz bunun farkında değil ama bunun mümkün olduğunu düşünüyorum. Mevcut sistemin baş ağrısına neden olması kolay olduğundan, soyutlamayla sağlanan birçok işlev Pmap ve Vmap'i uygulamaktır (Not: Bu iki işlev, otomatik türetme ve paralelleştirmeyi içerir)

Teknolojinin gelişmesinde çok sayıda iyi yapılandırılmış ve iyi yapılandırılmış sistemlerden, çok sayıda yeni yüksek performanslı bilgi işlem donanımından ve gerçekleştirilen çok sayıda atılımdan yararlanılmıştır.** Bu nedenle, çok umutluyum. Modüler'in daha geniş uygulama alanı ve popülerliğe sahip olması serinin karmaşıklığını ortadan kaldırıyor, bu harika. **

(Not: Bildirimsel programlama ile sıradan programlama arasındaki en büyük fark, ek bir zaman kavramının olmasıdır. Tüm yürütme bağlantısının tek yönlü zamanını korumak yerine geçmişi, bugünü ve geleceği tanımlayabilirsiniz. Konsept ile Zamanın artmasıyla tanım içeriği basitleştirilebilir ve daha sonra buraya bir operatör buraya bir operatör yazıp statik bir grafik oluşturmak yerine "kesinti" yoluyla hesaplama grafiği elde edilebilir)

  • **Modular’ın yapay zeka motorunu, yapay zeka çerçevesini ve yapay zeka derleyicisini tanımlayabilir misiniz? **

Chris Lattner: Çoğu kişi, büyük modelleri eğitirken PyTorch gibi araçları kullanacak. Böyle bir senaryoda, CUDA veya Intel MKL yakında tanıtılacak. Bu tür motorları toplu olarak adlandırıyorum ve esas olarak motordan bahsediyorum donanım arayüzünü ifade eder ve Modular, TensorFlow, PyTorch ve diğerlerini tanıtabilen yeni bir motor sağlar. Ardından, kullanıcılar doğru soyutlamaya dayalı olarak işlemleri yönlendirebilir ve donanım programlamayı yeni bir şekilde gerçekleştirebilir. Harika uygulamalar üretebilirsiniz.

  • **Tanımınıza göre Modular, framework katmanı ile donanım katmanı arasında tabanlıdır.Daha sonra Modular'ın petaflop'unu (saniyede gerçekleştirilebilecek kayan nokta işlemi sayısı) bilmek istiyoruz. A100'de, Ancak web sitesinin tamamen CPU olduğunu ve GPU'yu göremiyorum. Sorum şu; herkes GPU'yu daha hızlı hale getirmek için çok çalışıyor, öyleyse neden önce CPU'yu çalıştırmak istiyorsunuz? **

Chris Lattner: İlk prensiplerden yola çıkarak en alttan başlamalıyız. Günümüzün yapay zeka sistemlerini nasıl tanımlıyorsunuz? Her gün birçok kişi GPU'dan bahsediyor, GPU hakkında tartışıyor, her şeyin GPU ile ilgili olduğu görülüyor. Ancak yapay zeka aslında büyük ölçekli, heterojen, paralel bir hesaplama problemidir. Bu nedenle, geleneksel yapay zeka veri yüklemeyle başlar ve GPU veri yüklemez, dolayısıyla çok sayıda matris hesaplamasının yanı sıra veri yükleme, ön işleme ve ağ oluşturma gibi bir dizi görevi de gerçekleştirmeniz gerekir.

GPU'yu çalıştırmak için kesinlikle bir CPU'ya ihtiyaç vardır. Accelerator için yazılım geliştirdiğimizde çeşitli sorunların var olduğunu ve geliştiricilerin önemli olduğunu düşündükleri şeyin çözmek istedikleri sorunun önemli bir parçası olduğunu göreceğiz. Yani herkes soruna göre bir sistem kurdu ve bunun tamamen çipin gereksinimlerine göre tasarlanması gerekiyordu. **

**Teknik açıdan bakıldığında, Modular evrensel bir derleyici oluşturmak istiyor çünkü evrenselden dikeye gitmek kolaydır, ancak XLA ile olan deneyimim, özelleştirilmiş bir şeyle başlayıp daha sonra onu genelleştirmenin mümkün olmadığı yönünde. of . **

Yapay zeka sektörü için eğitim ölçeği araştırma ekibinin büyüklüğüyle doğru orantılıyken çıkarım ölçeği ürün ölçeği, kullanıcı tabanı vb. ile doğru orantılıdır. **Bu nedenle, hâlâ CPU üzerinde pek çok çıkarım yapılıyor. Bu nedenle öncelikle CPU ile başlayıp mimariyi geliştirmeye karar verdik.CPU'nun kullanımı daha kolay ve kullanılamayacak durumda.Genel mimari tamamlandıktan sonra genişletmeye devam edebiliriz. Ayrıca şu anda yakında piyasaya sürülecek olan GPU'lar üzerinde de çalışıyoruz ve zaman içinde bu farklı Hızlandırıcı türlerini de kapsayacak şekilde genişletilecek. **

  • **Motorun yapımında karşılaşılan teknik zorluklar nelerdir? **

Chris Lattner: Ekibimizin üyeleri temel olarak sektördeki tüm derleyiciler ve ilgili kuruluşlarla tanıştı. Örneğin, XLA ve TensorFlow araştırmalarına katıldım ve ayrıca PyTorch, TVM, Intel OpenVINO'dan üyeler de var ve Onyx Runtime.Herkes için zorluk, birçok sistemin beş ila sekiz yıl önce tasarlanmış olmasıdır. O dönemde yapay zeka şimdikinden farklıydı, geniş bir dil modeli yoktu.

**Sorun şu ki, bir sistem oluşturduğunuzda, bir grup kod olarak başlar ve daha sonra büyür, büyür, büyür. Bir sistem ne kadar hızlı gelişirse temel değişiklikler yapmak da o kadar zorlaşır. Bu yüzden her şeyi sıfırdan yapmayı seçtik. **

Çekirdeği hala elle yazabilmek istiyorsanız, önce C++'da prototip yapacağız ve ardından yavaş yavaş mojo'yu tanıtacağız; bu, en gelişmiş teknolojilerin tümünü uygulayan ve aynı zamanda daha üstün olan çok karmaşık bir otomatik füzyon derleyicisi oluşturabileceğiniz anlamına gelir. en ileri teknoloji.

Kullanıcıların Statik Şekil Sınırlamalarından ve programlanabilirlik eksikliğinden nefret ettiğini biliyoruz. Örneğin, yalnızca Tensöre bağlı kalmak istemezler* (Not: Tensör aslında çok boyutlu bir dizidir ve amacı daha yüksek boyutlu matrisler ve vektörler oluşturmaktır. Birçok büyük modelde düzensiz Tensörler bulunur)*

  • **Modüler için herhangi bir tasarım hedefi var mı? Yoksa prensip mi? **

Chris Lattner: Sistematik bir ilkeler dizisine sahip olup olmadığımı bilmiyorum. Sanki bir dizi ilkeye sahip olmak, çekiç tutup her şeyin çivi olduğunu görmeye benziyor. **Ancak yapmamız gerekenlerin çoğu, donanımın potansiyelini ortaya çıkarmak ve bunu kullanımı son derece kolay bir şekilde yapmaktır. Dolayısıyla başlangıç koşullarının çoğu, yeni şeyleri mümkün kılmaktan ziyade işleri halletmedeki karmaşık sorunları çözmeye yöneliktir; dolayısıyla daha çok tasarım ve mühendislikle ilgilidir. **

Bir Yüksek Lisans şirketiyle sohbet ettiğinizde, GPU'ya ve belirli bir bellek boyutuna sahip A100 GPU'ya 200 milyon ABD dolarından fazla harcadıklarını görmek kolaydır.**Herkes GPU (bilgi işlem gücü) aracılığıyla tüm olanaklara sahip olmak ister. Bir tarafta çipin içine girip potansiyeli ortaya çıkarmak isteyen birçok insan var, ancak daha fazla taşınabilirlik, genellik ve soyutluk isteyen birçok kişi var. **

Bu nedenle buradaki zorluk, tüm işlevsellikten vazgeçmeden varsayılan olarak soyutlamaya ulaşmak için sistemin nasıl etkinleştirileceği ve tasarlanacağıdır. Benzer şekilde birçok derleyici, özellikle de makine öğrenimi derleyicileri, temelde yalnızca uzayda belirli bir noktayı kapsamaya çalışır ve işlevleri evrensel değildir.

Bir diğer husus da kullanıcıları önemsiyoruz, çünkü birçok insan teknolojiye takıntılı ama teknolojiyi uygulayan insanlar ile teknolojiyi yaratanların portrelerinin tamamen farklı olduğunu unutuyoruz.Araçları kullanan geliştiricilerin fikirlerini anlamamız gerekiyor.

  • **Modular, geçtiğimiz birkaç gün içinde Linux Mojo'yu temel alarak indirilip kullanılmak üzere piyasaya sürüldü. MacOS ve Windows sürümleri yakında yayınlanacak. Peki bundan sonraki altı ila dokuz ay içinde başka hangi araç setleri ve bileşenler mevcut olacak? **

**Chris Lattner:**Mojo hâlâ genç bir dil ve onu daha da olgun hale getirmek için yavaş yavaş ekosistemle birlikte çalışacağız. Birlikte harika şeyler inşa etmek için Mojo'nun etrafında büyük bir topluluğa sahip olmak istiyoruz. Bu hedefe ulaşmak için yavaş yavaş kaynak Mojo'yu açacağız ve sadece karmaşa değil, iyi işleyen bir ekosistem inşa etmek için herkesin birçok ayrıntıyı çözmek için birlikte çalışması gerekiyor.

Tıpkı herkesin yaşadığı Python 2-3 felaketi gibi, kimse bunu hatırlamak istemiyor* (Not: İki sözdiziminin %80'inden fazlası uyumsuzdur ve tarihsel sorunlardan dolayı çoğu Linux dağıtımı alttaki py2'ye güvenmektedir. ancak Kullanıcı yanlışlıkla py3'ü kullandı ve pip install xxx sistemi çökertti). *

**S: Guido (*****Not: Hollandalı mühendis Guido Python dilini icat eden van Rossum) ve Python Vakfı ile ilişkiniz nedir? Birbirleriyle ilişkileri nasıldır? **

Chris Lattner: Guido, Mojo'nun geleceğini biliyordu ve Guido ekibimizle çok zaman geçirdi ve kendimizi çok şanslı hissediyoruz. Ara sıra Discord mojo topluluğuna geliyor ve bana zor sorular soruyor ki bu harika.

Mojo'nun Python ailesinin bir üyesi olduğuna inanıyoruz.Elbette Python ailesinin PyPy ve Cython gibi birçok üyesi var.Python'un gelişmeye ve yeni içerik eklemeye devam etmesini umuyoruz. Mojo ayrıca büyümeye ve yeni içerik eklemeye devam ediyor.

30 ya da 40 yıl öncesine, C dilinin var olduğu zamanlara gidin ve ardından 1983'te C++ adı verilen yeni bir şeyin ortaya çıktığı zamana gidin. C++ aslında sınıfları olan C dilidir (Not: 1979'da Bjame Sgoustrup Bell'e gitmiştir) Laboratuvarlarda C'yi sınıflarla bir dile dönüştürmeye başladı.1983 yılında bu dil resmi olarak C++) adını aldı.

O zamanlar olan şey şuydu: C ve C++ iki farklı topluluk olarak yola çıktılar, ancak aralarında pek çok yakınlaşma, fikir paylaşımı ve fikir alışverişi vardı.

Elbette tüm C dili özellikleri sonunda C++'a entegre edildi. Umarım aynı şey Mojo ve Python'da da olur.

Girişimcilik ve Mühendislik Ekibi Oluşturma Hakkında

  • **Mühendis olarak uzun ve muhteşem kariyerlere sahip olan sizin gibi birçok kurucu var. Bir anda CEO ortaya çıkıyor. Peki ekip oluşturma ve başkalarına koçluk yapma konusunda neler öğrendiniz? Hele ki mühendis olduktan sonra artık ürün lideri ve finansman sorumlusu da olmanız gerekiyor, ne düşünüyorsunuz? **

Chris Lattner: Modular'da kurucu ortağım Tim ve benim çok yakın bir ilişkimiz var ve birbirini tamamlıyoruz. Bir iş kurma sürecinde konuşacak birinin olması gerçekten çok önemlidir. Şu anda deneyimlediğim şey, Google ve Apple'da bir mühendislik lideri olarak daha önce hiç deneyimlemediğim bir şey.

**Bu şirketi kurduğumuzda inancımız şuydu: acıyı anlamak. Büyük bir şirketi temsil etmek, yeni kurulmuş bir şirketi temsil etmekten farklıdır. Yeni kurulan şirket gerçekten kurulduğunda, ben mühendislik lideri olacağım ve bir mühendislik ekibi oluşturmaya başlayacağım, Tim ise ürün ve iş çalışmalarından sorumlu olacak ve Büyük bir firmanın yokluğunda işlerden sorumlu olacak.Fabrika aurasında farklı firmalarla (müşterilerle) iletişim kuracak. Örneğin, şu anki sıkıntılı noktalarınız neler? **

Şu anda ne üzerinde çalışıyorsunuz? Zorluklar nelerdir? Nasıl yardımcı olabiliriz? Yaptığımız şey hakkında ne düşünüyorsun? Modular olarak karşılaştığımız zorluk, inşa etmek istediğimiz şeyin gerçekten çok zor ve çok soyut bir teknik sorun olması.

**Bu zor sorunları çözmek, tüm büyük teknoloji şirketlerinden çok pahalı teknik uzmanların işe alınmasını gerektirir.Bu nedenle, çok fazla fon toplamalı, çalışanları iyi motive etmeli, maaşlarını ödemeli ve çalışanların kendilerini rahat hissetmelerini sağlamalıyım. **

Müşterilerle doğrudan yüzleşiyoruz ve müşterilerin yapay zeka zekası alanındaki acılarını görüyoruz.Birçok şeyi oluşturmak ve dağıtmak gerçekten bir karmaşa ve herkes çok fazla etkisiz şeyin tuzağına düşmüş durumda. Dolayısıyla vizyonumuz tüm bunları Modüler ile birleştirmektir.

Ama sorun yine çıkıyor, ürün geliştirirken ürünler de sürekli değişiyor ve ihtiyaçlar da zamanla değişmeye devam edecek. Yani birlikte çalıştığımız ekipler, farklı özel durumlar için geliştirilmiş pek çok farklı karmaşık sistemden oluşan, çok yüksek düzeyde bir karmaşıklıkla sonuçlandı.

  • **Mühendislik Lideri Deneyimi: Ekip oluşturma ve mühendisleri işe alma konusunda kapsamlı deneyim. Proje yönetimi konusunda herhangi bir deneyiminiz veya öneriniz var mı? **

Chris Lattner: Benim işim takımın kazanmasına yardımcı olmak. Kazanmanın ne olduğunu tanımlamalı, insanlara net bir vizyon, net bir hedef vermeli ve herkesi aynı hizada tutmalısınız. **Çok iyi insanlardan oluşan büyük bir grubunuz olduğunda etrafınızdaki insanlar Herkes kahraman olmak istediğinde net bir hedef çok önemlidir. Potansiyel enerji üst üste bindirildiğinde, hızlı bir şekilde büyük ilerleme kaydedilecek, ancak tersine çevrildiğinde momentum dengelenecektir. **

Şirket içinde genellikle başlangıç altyapısını oluşturmaya kişisel olarak yardım ediyorum ve ekibe bunun nasıl çalışacağını göstermek önemli ve bu kültürümüzün bir parçası. Mühendislik ekibinde benim için en önemli şey uygulama hızıdır; CI'yı çalıştırmak için 24 saat veya üç hafta beklerseniz her şey yavaşlar.

Çalışanlarınızı işe alırken ve geliştirmeye devam ederken aynı zamanda çalışanların hangi konularda iyi olduğunu da belirlemek istersiniz, değil mi? Gerçekten inanıyorum ki, eğer gerçekten iyi, gerçekten tutkulu insanlardan oluşan bir ekibiniz varsa ve onları gerçekten yapmak istedikleri bir şeyle birleştirirseniz, süper güçlere sahip olurlar.

Çoğu zaman insanların doğru sorunları çözdüklerinden emin olmak isteriz. Bu şekilde bağımsız olarak büyüyebilir, bir şeyler yapabilir, zorlayabilir ve kararlar alabilirler. Ancak çoğu zaman insanlar ürüne çok odaklanırlar ya da bazıları müşterilere ve müşterilerin karşılaştığı sorunlara odaklanarak iş yapmada özellikle iyidirler. Ancak ekip olmadan bir ürünü çözemez ve oluşturamazsınız.

**Tim'i çok seviyorum çünkü o benim pek iyi olmadığım alanlarda gerçekten iyi ve herkes birbirinden öğreniyor. **

ChatGPT ve Yapay Zeka Hakkında

ChatGPT'nin ortaya çıkışı son derece ilginç, bizim gibi yapay zekaya uzun süredir ilgi duyan insanlar için ChatGPT, bir nevi kullanıcı arayüzü yeniliği anlamına geliyor ve insanların yapay zekanın gücünü fark etmesini sağlıyor. Geriye dönüp baktığımda, bunun birkaç yıldır kamuoyunun bilincinde yapay zekanın profilini yükselttiğini düşünüyorum.

**Yapay zeka alanındaki çözülmemiş en ilginç gizem nedir? **

Chris Lattner: Yapay zekanın şu anda ergenlik döneminde olduğunu düşünüyorum. Yapay zekanın ne olduğu konusunda farklı fikirleri olan pek çok akıllı insan var, değil mi? Bazı insanlar her şeyin uçtan uca sinir ağları olması gerektiğini ve yazılımların ortadan kalkması gerektiğini düşünüyor.Sanırım cevaplanması gereken soru şu: Eğitim algoritmaları ile akıllı tasarım algoritmaları arasındaki denge nedir? Ben kişisel olarak bunların hepsinin ya da hepsi olduğunu düşünmüyorum, eğer bir kedi dedektörü oluşturmak istiyorsanız o zaman CNN bunu yapmanın gerçekten iyi bir yoludur. Bir önyükleyici veya işletim sistemi yazmak istiyorsanız, bunu for döngüsüyle uygulamak gayet iyi sonuç verir. **Fakat bu şeyler zamanla nerede aşamalı olarak ortadan kaldırılacak? Uygulama geliştiricilerin bu sunumlar hakkında daha tutarlı düşünmesini nasıl sağlayabiliriz? **

**Geleceğe dair iddiamız, bir yazılım geliştirme metodolojisi olarak yapay zekanın eninde sonunda insanların uygulama geliştirme konusundaki düşüncelerinin araç setinin bir parçası haline geleceğidir. Yalnızca iPhone uygulamaları veya benzer formlar değil, aynı zamanda tüm bulut hizmeti, veri hattı ve sonuçta tüm kullanıcı ürününün yinelenen yapısı.Elbette hala keşfetme yolundayız. **

*Yıllar boyunca yazara verdikleri sürekli destek için tüm arkadaşlarımaTeknoloji Yaşamının Evrimi**'ne ve ChaosAI'ye teşekkür ederim**

*Profesyonel yardımları için Dakai, AsyncGreed, Zhang Bo, Mao Li, Ethan ve Mew'e teşekkürler

Referanslar:

1.

2. Referans: Çip endüstrisinde IP'ye ne denir? -Xin Analects-Gökyüzü yüksek ve bulutlar karanlık Andi863

3.Chris Lattner'ın Ana Sayfası (nondot.org)

4.nn.işlevsel ve nn.Modül- Liang Yun 1991 Algorithm Food House 2020-07-10 21:47

5. Referans: Jianshu-12 Ağustos 2018-LLVM'nin ne olduğunu anlamanıza yardımcı olacak basit bir açıklama

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • Comment
  • Repost
  • Share
Comment
0/400
No comments
  • Pin
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate App
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)