Penjelasan mendetail tentang Modular: Bagaimana bapak LLVM menciptakan bahasa mesin AI masa depan?

Struktur artikel ini

**1.Apa itu kompiler? **

2. Tentang Chris Lattner, ayah LLVM

  • Apa itu XLA dan MLIR *Apa itu LLVM?
  • Apa itu dentang *Hubungan antara Dentang dan LLVM

3.Tentang Modular

  • Modular—mesin kecerdasan buatan
  • Tentang TPU Google
  • Tentang pembelajaran mendalam dan kemampuan program
  • Apa saja tantangan teknis dalam membangun mesin?

4. Tentang kewirausahaan, pembangunan tim teknik, dan masa depan AI

**1. Apa itu kompiler? **

Kompiler adalah alat perangkat lunak yang menerjemahkan bahasa pemrograman tingkat tinggi ke dalam kode yang dapat dieksekusi komputer. Kompiler mengubah kode sumber yang ditulis oleh pemrogram menjadi instruksi biner yang dapat dipahami dan dijalankan oleh komputer. Instruksi ini dikemas ke dalam File atau pustaka yang dapat dieksekusi untuk menjalankan program di komputer Anda.

Alur kerja utama kompiler adalah kode sumber → praprosesor → kompiler → kode objek → linker → program yang dapat dieksekusi (utables)

Contoh nyata lainnya:

*Guru : Anak-anak, hari ini kita belajar penjumlahan. *

bla bla bla......

*Anak-anak: Guru, kami belajar. *

Guru: Sekarang kamu baru mengerti 1+1=? Kompiler

2. Chris Lattner, ayah dari LLVM

Sebelum berbicara tentang Modular, mari kita bahas terlebih dahulu pengalaman Chris Lattner. Ia lahir di California pada tahun 1978 dan besar di San Francisco Bay Area. Ia memulai pemrograman ketika ia masih sangat muda. Kemudian, ia menerima gelar sarjana di bidang Modular. ilmu komputer dari UC Berkeley dan Belajar untuk gelar PhD di Universitas Stanford, dengan fokus pada optimasi kompiler dan paralelisasi otomatis.

Chris Lattner memimpin pengembangan LLVM selama gelar PhD. Karena LLVM, ia memenangkan ACM Software Award 2012** (ACM Software Award)***. *Setelah itu, Lattne dipekerjakan oleh Apple dan bertanggung jawab atas banyak proyek penting di Apple, termasuk desain dan pengembangan front-end kompiler Clang, bahasa pemrograman Swift (bahasa yang menggantikan Objective-C), dan peningkatan lingkungan pengembangan Xcode. Bahasa Swift sangat populer karena kesederhanaan dan kinerjanya dan digunakan oleh pengembang untuk pengembangan aplikasi di iOS, macOS, dan platform Apple lainnya.

Setelah meninggalkan Apple, Chris Lattner bekerja di perusahaan seperti Tesla dan Google, dan terus menerbitkan makalah penelitian dan berpartisipasi dalam proyek sumber terbuka di bidang bahasa pemrograman dan teknologi kompiler. Dia bertanggung jawab memimpin tim infrastruktur Tensorflow di Google. , membuat XLA dan MLIR.

Berikut kami jelaskan apa itu XLA dan MLIR:

XLA (Accelerated Linear Algebra) adalah kompiler aljabar linier khusus domain yang dapat mempercepat model TensorFlow, tanpa memerlukan perubahan apa pun pada kode sumber. Ini dapat meningkatkan kecepatan lari dan meningkatkan penggunaan memori. ***

***MLIR (Representasi Menengah Multi-Level:Representasi Menengah Multi-Level) adalah kerangka kompiler. Desainnya mengoptimalkan kompiler dan pada dasarnya mencakup semua bagian umum dari desain kompiler. , yang sangat memfasilitasi pengembang kompiler. *

**Lebih penting lagi, apa itu LLVM? **(Berikut kutipan dari buku singkatnya, lihat link referensi teks aslinya)

**LLVM dapat dipahami sebagai kumpulan kompiler modular dan dapat digunakan kembali serta teknologi rantai alat. LLVM (sebenarnya nama lengkap Low Level Virtue Machine, namun belum pernah digunakan sebagai mesin virtual) Jadi LLVM berikut ini bukan akronim; melainkan nama lengkap proyeknya.

Kemudian kita lanjutkan, Arsitektur kompiler tradisional terlihat seperti ini:

Secara terpisah, itu termasuk:

  • Frontend: front-end (analisis leksikal, analisis sintaksis, analisis semantik, pembuatan kode perantara)
  • Pengoptimal: pengoptimal (optimasi kode perantara)
  • Backend: backend (menghasilkan kode mesin)

Arsitektur LLVM terlihat seperti ini

**Untuk mendeskripsikannya secara akurat, LLVM telah melakukan banyak inovasi pada compilernya, seperti: **

  • Front-end dan back-end yang berbeda menggunakan kode perantara terpadu LLVM Intermediate Representation (LLVM IR)
  • Jika Anda perlu mendukung bahasa pemrograman baru, Anda hanya perlu mengimplementasikan front end baru
  • Jika Anda perlu mendukung perangkat keras baru, Anda hanya perlu mengimplementasikan backend baru
  • Fase optimasi adalah fase universal yang menargetkan LLVM IR terpadu. Baik itu mendukung bahasa pemrograman baru atau perangkat keras baru, tidak perlu mengubah fase optimasi.
  • Sebaliknya, front-end dan back-end GCC tidak terlalu terpisah, dan front-end dan back-end digabungkan menjadi satu. Oleh karena itu, menjadi sangat sulit bagi GCC untuk mendukung bahasa baru atau platform target baru.
  • LLVM sekarang digunakan sebagai infrastruktur umum untuk mengimplementasikan berbagai bahasa kompilasi statis dan runtime (keluarga GCC, Java, .NET, Python, Ruby, Scheme, Haskell, D, dll.)

**Apa itu Dentang? **

Sub-proyek dari proyek LLVM, front-end kompiler C/C++/Objective-C berdasarkan arsitektur LLVM. Dibandingkan dengan GCC, Clang memiliki keunggulan sebagai berikut

  • Kecepatan kompilasi cepat: Pada beberapa platform, kecepatan kompilasi Clang jauh lebih cepat dibandingkan GCC (kecepatan kompilasi OC dalam mode Debug 3 kali lebih cepat dibandingkan GGC)
  • Jejak memori kecil: Memori yang ditempati oleh AST yang dihasilkan oleh Clang adalah sekitar seperlima dari memori GCC
  • Desain modular: Dentang mengadopsi desain modular berbasis perpustakaan, yang mudah diintegrasikan dengan IDE dan digunakan kembali untuk tujuan lain.
  • Informasi diagnostik sangat mudah dibaca: Selama proses kompilasi, Clang membuat dan menyimpan sejumlah besar metadata terperinci (metadata), yang bermanfaat untuk debugging dan pelaporan kesalahan.
  • Desainnya jelas dan sederhana, mudah dimengerti, mudah diperluas dan ditingkatkan

Hubungan antara Dentang dan LLVM

Untuk keseluruhan arsitektur LLVM, clang digunakan sebagai front end. LLVM dalam arti luas mengacu pada keseluruhan arsitektur LLVM, dan LLVM dalam arti sempit umum mengacu pada backend LLVM (termasuk optimasi kode dan pembuatan kode target).

Kode sumber (c/c++) melewati dentang--> kode perantara (setelah serangkaian pengoptimalan, Pass digunakan untuk pengoptimalan) --> kode mesin

Referensi: Jianshu-12 Agustus 2018-Penjelasan sederhana untuk membantu Anda memahami apa itu LLVM

3. Tentang Modular

Modular——Mesin Kecerdasan Buatan

  • **Pemikiran C****hris Lattner tentang kompiler dan kewirausahaan sebagai Modular? **

C****hris Lattner:"Saya membuat Modular bukan dengan palu mencari paku, juga tidak dengan inovasi demi inovasi. Saat ini, untuk perusahaan seperti OpenAI, sejumlah kecil karyawan perlu mengeluarkan banyak uang membutuhkan waktu untuk menulis kernel CUDA secara manual. . Namun, optimasi untuk kompiler AI dapat digunakan untuk meningkatkan kolaborasi perangkat lunak dan memperluas kemampuan orang-orang dengan keterampilan dan pengetahuan berbeda"

**"Bentuk terakhir dari kompiler adalah memungkinkan pengguna menggunakan kode rakitan yang sangat sederhana untuk menyelesaikan tugas apa pun dan memecahkan masalah tanpa harus mengetahui banyak tentang perangkat keras. Peran sebenarnya dari kompiler adalah menggunakan tingkat abstraksi yang lebih tinggi untuk mengekspresikan. **"

*"*FasterTransformer yang diluncurkan oleh NVIDIA dapat membawa peningkatan kinerja yang sangat besar. Oleh karena itu, banyak perusahaan model dan pengembang besar yang menggunakan FasterTransformer. Namun, jika Anda ingin berinovasi di bidang Transformer, Anda akan dibatasi oleh FasterTransformer."

  • **Dengan kata lain peran compiler terletak pada generalisasinya, bagaimana memahami generalisasi di sini? **

C****hris Lattner: Jika Anda ingin mendapatkan hasil yang sama atau lebih baik seperti FasterTransformer, tetapi menggunakan arsitektur umum lainnya (di sini arsitektur non-Transformer), maka melalui compiler, Anda bisa mendapatkan yang terbaik dari keduanya Hasilnya, performa luar biasa yang sama dapat diperoleh saat melakukan penelitian.Dengan kata lain, pengoptimalan di tingkat kompiler dapat setara dengan "mesin AI" dan membantu transformasi arsitektur LLM di masa depan.

  • **Mojo saat ini sangat populer, dan kompatibel dengan ekosistem Python, tetapi tujuan Modular adalah membangun mesin kecerdasan buatan terpadu. Jadi, dari sudut pandang Anda, apa saja permasalahan saat ini yang perlu diselesaikan di bidang penelitian dan pengembangan kecerdasan buatan? **

Chris Lattner: Jika Anda melihat kembali periode tahun 2015, 2016, dan 2017, dimana kecerdasan buatan berkembang pesat, teknologi pada masa itu sebagian besar dipimpin oleh TensorFlow dan PyTorch. PyTorch muncul sedikit lebih lambat dari TensorFlow. , tetapi keduanya memiliki desain yang serupa dalam beberapa aspek. **Namun, orang-orang yang membangun dan mendesain sistem TensorFlow dan PyTorch sebagian besar terdiri dari latar belakang kecerdasan buatan, persamaan diferensial, dan diferensiasi otomatis. Mereka belum memecahkan masalah batasan perangkat lunak dan perangkat keras. **

Jadi Keras* diperlukan (Catatan: Keras adalah pustaka jaringan syaraf tiruan open source yang ditulis dengan Python. Ini dapat digunakan sebagai antarmuka pemrograman aplikasi tingkat tinggi untuk Tensorflow, Microsoft-CNTK dan Theano untuk melakukan model pembelajaran mendalam. Desain, debugging, evaluasi, aplikasi dan visualisasi ) atau nn.Module (Catatan: nn.Module * adalah konsep unik untuk PyTorch dan juga merupakan kelas yang akan sering digunakan digunakan*)*.

Lapisan terbawah dari hal-hal ini sebenarnya adalah operator. Bagaimana cara mengimplementasikan konvolusi, perkalian matriks, algoritma reduksi dan operasi elemen demi elemen? Anda perlu menggunakan CUDA dan Intel MKL (Intel Math Kernel Library), lalu terus membangun fondasi ini.

Model ini baik-baik saja pada awalnya, tetapi masalahnya juga ada. Operator pada awalnya sangat sedikit. Namun, selama perangkat keras baru diperkenalkan, meskipun itu hanya varian CPU baru yang diperkenalkan oleh Intel, kompleksitas komputasi akan meningkat. terus meningkat. , Saat ini, TensorFlow dan PyTorch memiliki ribuan operator, masing-masing disebut kernel, dan semua kernel harus ditulis secara manual oleh manusia.

(Catatan: IP dalam industri chip umumnya juga disebut inti IP. Inti IP mengacu pada desain modul sirkuit yang matang dengan fungsi independen dalam chip. Desain modul sirkuit ini dapat diterapkan pada desain chip lain yang berisi modul sirkuit ini. proyek, sehingga mengurangi beban kerja desain, memperpendek siklus desain, dan meningkatkan tingkat keberhasilan desain chip. Desain modul sirkuit yang matang ini mewujudkan kebijaksanaan perancang dan mencerminkan hak kekayaan intelektual perancang. Oleh karena itu, industri chip menggunakan inti IP untuk Menunjukkan desain yang matang dari modul sirkuit ini. Inti IP juga dapat dipahami sebagai komponen perantara dari desain chip)

Dengan kata lain, begitu perangkat keras baru diluncurkan, Anda harus menulis ulang ribuan Kernel, sehingga ambang batas untuk memasuki perangkat keras tersebut akan semakin tinggi.Selain itu, situasi ini juga menimbulkan banyak kesulitan bagi penelitian ilmiah.Contohnya, seorang peneliti, sangat hanya sedikit yang tahu cara kerja kernel ini.

(Catatan: Karena pengembangan kernel seringkali spesifik untuk platform perangkat keras, bahkan nvidia pun tidak universal, apalagi FPGA atau DPU. Operator khusus adalah saluran utama untuk memperluas kemampuan komputasi perangkat lunak platform perangkat keras)

Anda juga harus tahu bahwa sekarang banyak orang yang menulis CUDA Kernel* (Catatan: Kernel: nama fungsi yang dijalankan oleh CUDA di GPU)*, tetapi profil keahlian para insinyur di sini sama sekali berbeda dengan keterampilan yang dapat berinovasi. arsitektur model. **Akibatnya, banyak sistem kecerdasan buatan menghadapi tantangan seperti ini: mereka tidak dapat menemukan pakar teknis yang dapat menulis Kernel. **

*(Catatan: *Saat menggunakan GPU untuk penghitungan, semua proses penghitungan dapat dienkapsulasi ke dalam Kernel GPU dan dijalankan pada GPU secara berurutan. Demi keserbagunaan, pustaka operator tradisional akan Desainnya sangat mendasar, jadi begitulah jumlahnya banyak)

Tentang TPU Google

Saya berpartisipasi dalam proyek TPU Google ketika saya masih di Google. Saat itu, tantangan yang dihadapi tim TPU antara lain: Ada ribuan Kernel berbeda di pasaran, bagaimana cara meluncurkan perangkat keras baru? Saat itu, banyak rekan yang juga menyebutkan apakah compiler dapat digunakan untuk mencapai hal ini. **Jadi, alih-alih menulis ulang ribuan Kernel, menulis ulang semua operator ini, dan sepenuhnya membuat ekosistemnya sendiri seperti Intel atau NVIDIA, kompiler bisa lebih fleksibel daripada manual karena kompiler memungkinkan kita melakukannya dengan cara yang berbeda. dan pencocokan Kernel juga dapat mengoptimalkan banyak kinerja. **

**Kompilator dapat mencapai hal ini dengan cara yang umum, tetapi jika kita menggunakan Kernel tulisan tangan tradisional, yang dihasilkan harus berupa susunan Kernel tetap yang menurut orang menarik, bukan sesuatu yang baru yang diinginkan para peneliti. **Jadi, XLA Google (Dijelaskan di atas: Aljabar Linier Dipercepat: Aljabar Linier Dipercepat) lahir. XLA dapat mendukung komputer tingkat exaflop skala besar, tetapi masalah muncul lagi XLA muncul untuk mendukung TPU Google.

**Sangat sulit untuk membuat kompiler, dan masih ada masalah skalabilitas. Saat ini, insinyur kompiler harus dipekerjakan untuk menyelesaikan banyak proyek teknik pembelajaran mesin, dan insinyur kompiler yang memahami pembelajaran mesin dan berbagai pengetahuan terkait bahkan lebih penting lagi. cukup. Selain itu, XLA tidak dapat diskalakan dan hanya berfungsi dengan TPU. **

Tentang Pembelajaran Mendalam dan Kemampuan Pemrograman

Jika kita melihat kembali sejarah perkembangan CUDA dan deep learning NVIDIA, seperti lahirnya AlexNet dan berkembangnya deep learning, banyak orang yang percaya bahwa lahirnya AlexNet adalah hasil kombinasi data, komputasi ImageNet +, dan kekuatan GPU. **

(Catatan: Pada tahun 2012, Alex Krizhevsky dan ilya, siswa Geoffrey Hinton, salah satu dari tiga raksasa pembelajaran mendalam dan pemenang Turing Award, mengusulkan AlexNet, dan memenangkan kejuaraan dengan keunggulan signifikan di ILSVRC tahun itu, jauh melebihi ketiga Dua. Hasil ini telah menarik perhatian besar dari akademisi dan industri, dan visi komputer secara bertahap memasuki era yang didominasi oleh pembelajaran mendalam)

**Tetapi banyak orang melupakan pentingnya "kemampuan program". **

Karena CUDA-lah yang memungkinkan peneliti menemukan kernel konvolusional yang sebelumnya tidak ada, dan TensorFlow belum ada pada saat itu. **Faktanya, kombinasi data, komputasi, dan kemampuan programlah yang memungkinkan penelitian baru meluncurkan seluruh gelombang sistem pembelajaran mendalam. **

**Oleh karena itu, sangat penting untuk belajar dari peristiwa dan sejarah masa lalu. Jadi, bagaimana Anda mengambil langkah selanjutnya? Bagaimana kita memasuki era teknologi berikutnya di mana setiap orang dapat memperoleh manfaat dari inovasi dan ide algoritmik manusia yang luar biasa? **Bagaimana cara mendapatkan manfaat dari kompiler? Bagaimana Anda dapat memanfaatkan skala dan keserbagunaan kompiler untuk memecahkan masalah baru? **Yang paling penting, apa manfaat dari kemampuan program? Ini adalah Modular yang sedang kami kerjakan - mesin kecerdasan buatan. **

Tentang masa depan kecerdasan buatan

  • **Bagaimana Anda memandang masa depan perkembangan kecerdasan buatan? Apakah menurut Anda akan ada lebih banyak kolaborasi antar tim dengan profil atau arah berbeda? Apakah salah satu tujuan Anda adalah untuk memudahkan pakar non-kompiler menggunakan kompiler? **

**Chris Lattner: **Manusia itu luar biasa, tapi tidak ada seorang pun yang bisa memikirkan segalanya sendiri. **Orang-orang dengan tipe dan spesialisasi berbeda yang bekerja sama dapat menciptakan sesuatu yang lebih hebat dari orang lain. Misalnya saja, saya punya beberapa kemampuan , tapi pada dasarnya saya tidak dapat mengingat persamaan diferensial apa pun, bukan? Jadi penemu arsitektur LLM selanjutnya pasti bukan saya (tertawa).

**Tetapi jika saya memikirkannya dari sudut pandang sistem, jika saya dapat membuat orang-orang ini berkontribusi, berkolaborasi, dan memahami cara kerjanya, maka akan ada terobosan. **Bagaimana cara mempromosikan penemuan? Bagaimana Anda bisa mengajak lebih banyak orang yang memahami berbagai bagian permasalahan untuk benar-benar berkolaborasi? **Oleh karena itu, eksplorasi Mojo dan mesinnya merupakan upaya menghilangkan kompleksitas masalah. Karena ada banyak sistem yang sudah dibangun yang digabungkan secara sederhana. **

Solusi di sini biasanya hanya didasarkan pada penyelesaian masalah, bukan dirancang dari atas ke bawah. Dan menurut saya Modular menyediakan tumpukan yang lebih sederhana yang dapat membantu mengurangi kompleksitas keseluruhan tumpukan. Jika tidak difaktorkan ulang, ia akan tetap mengikuti sejarah yang terfragmentasi dan kacau* (fragmentasi di bidang kecerdasan buatan)* Sekali Anda mau ubah sedikit, Anda akan Crash, kinerja akan buruk, atau tidak akan berfungsi Situasi ini berasal dari fragmentasi lapisan yang mendasarinya.

  • **Cara memahami kompiler: Apakah kompiler dan bahasa merupakan media untuk kolaborasi atau persilangan manusia? **

Chris Lattner: Saya membuat Modular bukan untuk mencari paku dengan palu, atau untuk berinovasi demi inovasi. Saat ini, untuk perusahaan seperti OpenAI, sejumlah kecil karyawan perlu menghabiskan banyak waktu untuk menulis CUDA secara manual kernel. **Namun, pengoptimalan untuk kompiler AI dapat digunakan untuk meningkatkan kolaborasi perangkat lunak dan memperluas kemampuan orang-orang dengan keterampilan dan pengetahuan berbeda. **

Bentuk terakhir dari kompiler adalah memungkinkan pengguna menyelesaikan tugas apa pun dan menyelesaikan masalah menggunakan kode rakitan yang sangat sederhana tanpa harus mengetahui banyak tentang perangkat keras.Peran sebenarnya dari kompiler adalah untuk dapat melakukan tugas pada tingkat abstraksi yang lebih tinggi .Ekspres. Kompiler juga merupakan cara untuk mengotomatisasi optimasi umum yang mungkin memerlukan pemrograman manual.

Tujuan pertama adalah membuat proses menjadi sesederhana mungkin;

Tujuan kedua adalah jika Anda menyingkirkan banyak kerumitan dari pikiran Anda, Anda dapat memberikan ruang bagi kerumitan baru. Selain itu, melalui abstraksi, Anda dapat memanfaatkan kompiler - karena kompiler memiliki perhatian tak terbatas terhadap detail, sedangkan manusia tidak;

**Tingkat abstraksi yang lebih tinggi juga dapat memberi kita banyak kemampuan lainnya. **Sistem pembelajaran mendalam dan Modular telah meningkatkan penghitungan ke tingkat grafis. Bagaimana menjelaskannya? Di sini, artinya setelah Anda terbebas dari pernyataan pemrograman yang rumit seperti perulangan for dan menjadi lebih deklaratif, itu berarti mengubah model penghitungan. Banyak orang belum menyadarinya, tapi menurut saya itu mungkin. Karena sistem yang ada mudah menimbulkan sakit kepala, banyak fungsi yang disediakan oleh abstraksi adalah untuk mengimplementasikan Pmap dan Vmap (Catatan: Kedua fungsi ini mencakup derivasi dan paralelisasi otomatis)

Kemajuan teknologi telah memperoleh manfaat dari sejumlah besar sistem yang terstruktur dengan baik dan terstruktur dengan baik, sejumlah besar perangkat keras komputasi berkinerja tinggi yang baru, dan sejumlah besar terobosan yang telah dilakukan.** Oleh karena itu, saya sangat berharap bahwa Modular dapat aplikasi dan popularitas yang lebih luas, memecahkan kompleksitas seri, ini luar biasa. **

(Catatan: Perbedaan terbesar antara pemrograman deklaratif dan pemrograman biasa adalah adanya konsep waktu tambahan. Anda dapat menentukan masa lalu, sekarang, dan masa depan, alih-alih mempertahankan waktu satu arah dari seluruh tautan eksekusi. Dengan konsep waktu , isi definisi dapat disederhanakan, dan kemudian grafik perhitungan dapat diperoleh melalui "pengurangan", daripada menulis operator di sini dan operator di sana, dan menyusun grafik statis)

  • **Dapatkah Anda mendefinisikan mesin kecerdasan buatan, kerangka kecerdasan buatan, dan kompiler kecerdasan buatan Modular? **

Chris Lattner: Kebanyakan orang akan menggunakan alat seperti PyTorch saat melatih model besar. Dalam skenario seperti itu, CUDA atau Intel MKL akan segera diperkenalkan. Saya menyebut jenis mesin ini secara kolektif, dan menyebutkan Ke mesin, ini terutama mengacu pada antarmuka perangkat keras, dan Modular menyediakan mesin baru yang dapat memperkenalkan TensorFlow, PyTorch, dan lainnya. Kemudian, pengguna dapat menjalankan operasi dan melakukan pemrograman perangkat keras dengan cara baru, berdasarkan abstraksi yang benar. , Anda dapat menghasilkan implementasi yang keren.

  • **Menurut definisi Anda, Modular didasarkan antara lapisan kerangka kerja dan lapisan perangkat keras. Kemudian kita ingin mengetahui petaflops (jumlah operasi floating point yang dapat dilakukan per detik) dari Modular pada A100, Tapi saya menemukan bahwa situs webnya semuanya CPU, dan saya tidak melihat GPU-nya. Jadi pertanyaan saya, semua orang bekerja keras untuk membuat GPU lebih cepat, lalu mengapa Anda ingin CPU berjalan terlebih dahulu? **

Chris Lattner: Berpikir dari prinsip pertama, kita harus memulai dari bawah. Bagaimana Anda mendefinisikan sistem kecerdasan buatan saat ini? Banyak orang yang berbicara tentang GPU setiap hari dan berdebat tentang GPU, sepertinya semuanya berhubungan dengan GPU. Namun, kecerdasan buatan sebenarnya adalah masalah komputasi paralel berskala besar, heterogen. Oleh karena itu, kecerdasan buatan tradisional dimulai dengan pemuatan data, dan GPU tidak memuat data, sehingga Anda harus melakukan serangkaian tugas seperti memuat data, prapemrosesan, dan jaringan, serta sejumlah besar penghitungan matriks.

Untuk menggerakkan GPU pasti dibutuhkan CPU. Saat kami mengembangkan perangkat lunak untuk Accelerator, kami akan menemukan berbagai masalah yang ada, dan apa yang dianggap penting oleh pengembang adalah bagian penting dari masalah yang ingin mereka selesaikan. Jadi, setiap orang membangun sistem berdasarkan masalahnya, dan sistem itu harus dirancang sepenuhnya sesuai dengan kebutuhan chip. **

**Dari sudut pandang teknis, Modular ingin membangun kompiler universal, karena mudah untuk beralih dari universal ke vertikal, namun pengalaman saya dengan XLA adalah tidak mungkin memulai dengan sesuatu yang terspesialisasi dan kemudian menggeneralisasikannya. . **

Untuk industri kecerdasan buatan, skala pelatihan berbanding lurus dengan ukuran tim peneliti, sedangkan skala inferensi berbanding lurus dengan skala produk, basis pengguna, dll. **Oleh karena itu, banyak inferensi yang masih dilakukan pada CPU. Oleh karena itu, kami memutuskan untuk memulai dengan CPU dan meningkatkan arsitekturnya terlebih dahulu. CPU lebih mudah digunakan dan tidak akan tersedia. Setelah arsitektur umum selesai, kami dapat terus mengembangkannya. Kemudian kami juga sedang mengerjakan GPU, yang akan segera diluncurkan, dan akan diperluas ke berbagai jenis Akselerator ini seiring berjalannya waktu. **

  • **Apa saja tantangan teknis dalam membangun mesin? **

Chris Lattner: Anggota tim kami pada dasarnya telah mengenal semua compiler dan entitas terkait di industri. Misalnya, saya telah berpartisipasi dalam penelitian tentang XLA dan TensorFlow, dan ada juga anggota dari PyTorch, TVM, Intel OpenVINO , dan Onyx Runtime. Tantangan bagi semua orang adalah bahwa sebagian besar sistem dirancang lima hingga delapan tahun yang lalu. Kecerdasan buatan pada masa itu berbeda dengan sekarang, belum ada model bahasa yang besar.

**Masalahnya adalah ketika Anda membangun sebuah sistem, ia dimulai sebagai sekumpulan kode dan kemudian menjadi semakin besar, semakin besar, semakin besar. Dan semakin cepat suatu sistem berkembang, semakin sulit melakukan perubahan mendasar. Jadi kami memilih untuk mengulanginya lagi dari awal. **

Jika Anda masih ingin dapat menulis Kernel dengan tangan, pertama-tama kami akan membuat prototipe di C++, dan kemudian secara bertahap memperkenalkan mojo, yang berarti Anda dapat membangun kompiler fusi otomatis yang sangat kompleks yang menerapkan semua teknologi tercanggih dan juga melampaui yang paling maju.Teknologi.

Kami tahu bahwa pengguna membenci Keterbatasan Bentuk Statis dan kurangnya kemampuan program. Misalnya, mereka tidak ingin terikat hanya pada Tensor* (Catatan: Tensor sebenarnya adalah array multidimensi, dengan tujuan membuat matriks dan vektor berdimensi lebih tinggi. Banyak model besar memiliki Tensor tidak beraturan)*

  • **Apakah ada tujuan desain untuk Modular? Atau prinsip? **

Chris Lattner: Saya tidak tahu apakah saya memiliki seperangkat prinsip yang sistematis. Sepertinya memiliki seperangkat prinsip itu seperti memegang palu dan melihat bahwa segala sesuatunya adalah paku. **Tetapi banyak hal yang harus kita lakukan adalah membuka potensi perangkat keras dan melakukannya dengan cara yang sangat mudah digunakan. Jadi sebagian besar kondisi awalnya bukan tentang memungkinkan terjadinya hal-hal baru, melainkan tentang penyelesaian masalah kompleks dalam menyelesaikan sesuatu, jadi ini lebih seperti desain dan rekayasa. **

Jika Anda mengobrol dengan perusahaan LLM, mudah untuk mengetahui bahwa mereka telah menghabiskan lebih dari 200 juta dolar AS untuk GPU dan GPU A100 dengan ukuran memori tertentu.**Semua orang ingin mendapatkan semua kemungkinan melalui GPU (daya komputasi). Di satu sisi, ada banyak orang yang ingin masuk ke dalam chip dan membuka potensinya, namun ada banyak orang lain yang menginginkan lebih banyak portabilitas, umum, dan abstraksi. **

Oleh karena itu, tantangannya di sini adalah bagaimana mengaktifkan dan merancang sistem untuk mencapai abstraksi secara default tanpa melepaskan semua fungsionalitas. Demikian pula, banyak kompiler, terutama kompiler pembelajaran mesin, pada dasarnya hanya mencoba mencakup titik tertentu dalam ruang, dan fungsinya tidak universal.

Hal lainnya adalah kita peduli terhadap pengguna, karena banyak orang yang terobsesi dengan teknologi, namun lupa bahwa potret orang yang menerapkan teknologi dan yang menciptakan teknologi sangatlah berbeda, kita perlu memahami ide pengembang yang menggunakan alat.

  • **Modular baru saja dirilis untuk diunduh dan digunakan berdasarkan Linux Mojo dalam beberapa hari terakhir. Versi MacOS dan Windows akan segera dirilis. Jadi, toolkit dan komponen apa lagi yang akan tersedia dalam enam hingga sembilan bulan ke depan dari sekarang? **

**Chris Lattner:**Mojo masih merupakan bahasa muda, dan kami akan bekerja sama secara bertahap dengan ekosistem untuk membuatnya semakin matang. Kami ingin memiliki komunitas besar di sekitar Mojo untuk membangun hal-hal keren bersama-sama. Untuk mencapai tujuan ini, kami akan membuka Mojo secara bertahap, dan semua orang harus bekerja sama untuk menyelesaikan banyak detail guna membangun ekosistem yang berfungsi dengan baik, bukan sekadar ekosistem yang berantakan.

Sama seperti bencana Python 2-3 yang dialami semua orang, tidak ada yang mau mengingatnya* (Catatan: Lebih dari 80% dari kedua sintaks tidak kompatibel, dan karena masalah historis, banyak distribusi Linux mengandalkan py2 di bagian bawah, tetapi pengguna secara tidak sengaja menggunakan py3, dan pip install xxx membuat sistem mogok). *

**T: Apa hubungan Anda dengan Guido (*****Catatan: Insinyur Belanda Guido van Rossum, yang menemukan bahasa Python) dan Python Foundation? Bagaimana hubungan mereka satu sama lain? **

Chris Lattner: Guido tahu Mojo akan datang, dan Guido menghabiskan banyak waktu bersama tim kami, dan kami merasa sangat beruntung. Dia sesekali muncul di komunitas Discord mojo dan memberi saya pertanyaan sulit, dan itu luar biasa.

Kami percaya bahwa mojo adalah salah satu anggota dari keluarga Python, tentu saja banyak sekali anggota dari keluarga Python tersebut, antara lain PyPy, Cython, dll. Kami berharap Python dapat terus berkembang dan terus menambah konten baru. Mojo juga terus berkembang dan menambah konten baru.

Kembali ke 30 atau 40 tahun yang lalu, ketika ada bahasa C, dan kemudian muncul hal baru bernama C++ pada tahun 1983. C++ sebenarnya adalah bahasa C dengan kelas-kelas (Catatan: Pada tahun 1979, Bjame Sgoustrup pergi ke Bell Labs dan mulai mengubah C menjadi bahasa dengan kelas. Pada tahun 1983, bahasa tersebut secara resmi diberi nama C++)

Apa yang terjadi pada saat itu adalah C dan C++ dimulai sebagai dua komunitas yang berbeda, namun terjadi banyak konvergensi, berbagi ide, dan pertukaran ide di antara keduanya.

Tentu saja, semua fitur bahasa C akhirnya diintegrasikan ke dalam C++. Jadi saya berharap hal yang sama terjadi pada Mojo dan Python.

Tentang Kewirausahaan dan Team Building Engineering

  • **Ada banyak pendiri seperti Anda yang memiliki karir yang panjang dan menakjubkan sebagai insinyur. Tiba-tiba, itu adalah CEO. Jadi, apa yang telah Anda pelajari tentang membangun tim dan melatih orang lain? Apalagi setelah menjadi seorang engineer, kini Anda juga harus menjadi product leader dan bertanggung jawab terhadap financing, bagaimana menurut Anda? **

**Chris Lattner:**Di Modular, salah satu pendiri saya, Tim, dan saya memiliki hubungan yang sangat dekat dan saling melengkapi. Dalam proses memulai bisnis, memiliki seseorang untuk diajak bicara sangatlah penting. Apa yang saya alami sekarang adalah sesuatu yang belum pernah saya alami sebagai pemimpin teknik di Google dan Apple.

**Saat kami memulai perusahaan ini, keyakinan kami adalah - memahami rasa sakit. Mewakili perusahaan besar berbeda dengan mewakili perusahaan start-up, ketika perusahaan start-up sudah benar-benar berdiri, saya akan menjadi pemimpin teknik dan mulai membentuk tim teknik, sedangkan Tim akan bertanggung jawab atas pekerjaan produk dan bisnis, dan akan bertanggung jawab atas pekerjaan jika tidak ada perusahaan besar Berkomunikasi dengan berbagai perusahaan (pelanggan) di bawah aura pabrik. Misalnya, apa masalah Anda saat ini? **

Apa yang sedang Anda kerjakan? Apa saja tantangannya? Apa yang bisa kami bantu? Apa pendapat Anda tentang apa yang kami lakukan? Sebagai Modular, tantangan yang kami hadapi adalah apa yang ingin kami bangun sebenarnya merupakan masalah teknis yang super sulit dan sangat abstrak.

**Untuk mengatasi masalah sulit ini memerlukan mempekerjakan ahli teknis yang sangat mahal dari semua perusahaan teknologi besar.Oleh karena itu, saya harus mengumpulkan dana yang banyak, memotivasi karyawan dengan baik, membayar gaji mereka, dan membuat karyawan merasa Nyaman. **

Kami menghadapi pelanggan secara langsung, dan kami melihat penderitaan pelanggan di bidang kecerdasan AI. Membangun dan menerapkan banyak hal sungguh berantakan, dan semua orang terjebak oleh terlalu banyak hal yang tidak efektif. Oleh karena itu, visi kami adalah menyatukan semua hal tersebut dengan Modular.

Namun permasalahan kembali muncul, dalam pengembangan produk, produk juga terus berubah, dan kebutuhan akan terus berubah seiring berjalannya waktu. Jadi tim tempat kami bekerja berakhir dengan tingkat kompleksitas yang sangat tinggi, dengan banyak sistem berantakan yang dikembangkan untuk kasus-kasus khusus yang berbeda.

  • **Pengalaman sebagai Pemimpin Teknik: Pengalaman luas dalam membangun tim dan merekrut insinyur. Apakah Anda punya pengalaman atau saran tentang manajemen proyek? **

Chris Lattner: Tugas saya adalah membantu tim menang. Anda harus mendefinisikan apa itu kemenangan, memberi orang visi yang jelas, tujuan yang jelas, dan menjaga semua orang tetap selaras. **Ketika Anda memiliki kelompok besar, orang-orang sangat baik orang-orang di sekitar Anda Ketika semua orang ingin menjadi pahlawan, tujuan yang jelas sangatlah penting. Ketika energi potensial ditumpangkan, kemajuan besar akan dicapai dengan cepat, namun bila energi potensial dibalik, momentumnya akan terimbangi. **

Secara internal, saya secara pribadi sering terlibat dalam membantu membangun infrastruktur awal, dan penting untuk menunjukkan kepada tim bagaimana hal itu akan berhasil, dan itu adalah bagian dari budaya kami. Yang terpenting bagi saya di tim engineering adalah kecepatan implementasi, jika menunggu 24 jam atau tiga minggu untuk menjalankan CI, semuanya akan melambat.

Saat merekrut dan terus mengembangkan karyawan, Anda juga ingin menentukan, apa saja keahlian karyawan tersebut, bukan? Saya benar-benar percaya bahwa jika Anda memiliki tim yang sangat baik dan penuh semangat dan Anda memadukan mereka dengan sesuatu yang benar-benar ingin mereka lakukan, mereka memiliki kekuatan super.

Seringkali, kami ingin memastikan bahwa orang-orang menyelesaikan masalah dengan benar. Dengan cara ini, mereka dapat bertumbuh, melakukan berbagai hal, mendorong, dan mengambil keputusan secara mandiri. Namun seringkali, orang akan sangat fokus pada produk, atau ada pula yang sangat pandai berbisnis, fokus pada pelanggan dan masalah yang dihadapi pelanggan. Namun Anda tidak dapat menyelesaikan dan membangun produk tanpa tim.

**Saya sangat menyukai Tim karena dia sangat ahli dalam bidang yang saya tidak kuasai, dan semua orang saling belajar. **

Tentang ChatGPT dan Kecerdasan Buatan

Munculnya ChatGPT sangatlah menarik.Bagi orang-orang seperti kita yang telah lama memperhatikan kecerdasan buatan, ChatGPT berarti semacam inovasi antarmuka pengguna dan membuat orang menyadari kekuatan kecerdasan buatan. Melihat ke belakang, saya pikir hal ini meningkatkan profil AI dalam kesadaran publik selama beberapa tahun.

**Apa misteri paling menarik yang belum terpecahkan di bidang kecerdasan buatan? **

Chris Lattner: Menurut saya, kecerdasan buatan saat ini sedang memasuki masa remaja. Ada banyak orang pintar yang mempunyai pemikiran berbeda tentang apa itu AI, bukan? Beberapa orang berpikir bahwa segala sesuatu harus berupa jaringan saraf end-to-end dan perangkat lunak harus dihilangkan. Saya pikir pertanyaan yang harus dijawab adalah, apa keseimbangan antara algoritma pelatihan dan algoritma desain cerdas? Saya pribadi tidak berpikir itu semua, jika Anda ingin membuat detektor kucing maka CNN memang merupakan cara yang baik untuk melakukannya. Jika Anda ingin menulis bootloader atau sistem operasi, mengimplementasikannya dengan loop for berfungsi dengan baik. **Tetapi di mana hal-hal ini akan dihapuskan secara bertahap seiring berjalannya waktu? Bagaimana kita bisa membuat pengembang aplikasi berpikir lebih konsisten tentang presentasi ini? **

**Taruhan kami di masa depan adalah AI sebagai metodologi pengembangan perangkat lunak pada akhirnya akan menjadi bagian dari perangkat cara orang berpikir tentang cara membangun aplikasi. Bukan hanya aplikasi iPhone atau bentuk serupa, tetapi juga seluruh layanan cloud, jalur data, dan pada akhirnya konstruksi berulang dari seluruh produk pengguna. Tentu saja, kami masih dalam jalur eksplorasi. **

*Terima kasihEvolusi Kehidupan Teknologi** kepada semua teman saya atas dukungan mereka yang tiada henti kepada penulis selama bertahun-tahun, dan terima kasih kepada ChaosAI**

*Terima kasih kepada Dakai, AsyncGreed, Zhang Bo, Mao Li, Ethan, dan Mew atas bantuan profesional mereka

referensi:

1.

2. Referensi: Apa yang dimaksud dengan IP dalam industri chip? -Xin Analects-Langit tinggi dan awan gelap Andi863

3.Beranda Chris Lattner (nondot.org)

4.nn.fungsional dan nn.Modul- Algoritma Food House Liang Yun 1991 10-07-2020 21:47

5. Referensi: Jianshu-12 Agustus 2018-Penjelasan sederhana untuk membantu Anda memahami apa itu LLVM

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)