Saya Menjalankan Model 35B Param di iPhone Saya (AI Lokal)

BBetter Stack
Computing/SoftwareConsumer ElectronicsCell Phones

Transcript

00:00:00Model 35 miliar parameter ini berjalan langsung di iPhone saya. Saya bisa menghasilkan 11 token per
00:00:06detik berkat rekayasa pintar yang sebenarnya tidak pernah dirancang untuk model ini. Di video ini, saya akan
00:00:11menunjukkan cara melakukan hal yang sama. Yang saya jalankan di sini adalah model Mixture of Experts.
00:00:21Ukurannya 35 miliar parameter, yang sebagai file 4-bit normal berukuran sekitar 20 GB dan harus ada di RAM.
00:00:28Namun melalui berbagai teknik seperti streaming expert dari SSD sesuai kebutuhan, bobot yang benar-benar
00:00:33harus berada di memori berkurang menjadi hanya 1,4 GB. Saya akan menjelaskan cara kerjanya, lalu kita
00:00:39akan membahas pengaturan di iPhone itu sendiri. Kebanyakan model tersimpan sepenuhnya di RAM, tetapi keunggulan Mixture
00:00:45of Experts adalah hanya sebagian kecil yang aktif pada satu waktu. Ini berarti bagian yang tidak aktif
00:00:51dapat tersimpan di SSD menunggu gilirannya. Trik untuk menjalankan model yang lebih besar
00:00:56dengan memori terbatas adalah hanya mengalirkan expert tersebut ke memori saat dibutuhkan. Kita menjalankan Qwen
00:01:022.5 varian 35 miliar parameter, dan kode A2.4B di bagian akhir berarti hanya sekitar 2,4 miliar parameter
00:01:10yang aktif untuk setiap token. Model ini memiliki 40 layer, masing-masing dengan 64 expert kecil ditambah satu shared expert. Router
00:01:19memilih 4 dari expert tersebut per token, jadi satu token hanya menjalankan sekitar 2,4 miliar dari total 35 miliar
00:01:26parameter. Sekarang, seluruh model itu sendiri dibagi. Biasanya semuanya tersimpan di memori, tetapi ini tidak akan
00:01:32muat di iPhone. Sebagai gantinya, bagian yang dibutuhkan setiap token—seperti embedding, attention, router,
00:01:39dan shared expert—hanya dimuat sekali dan tetap berada di RAM sepanjang waktu, ukurannya sekitar
00:01:441,4 GB. Sementara expert—40 file masing-masing sekitar 300 MB dengan total 12 gigabita—tersimpan di SSD. Jadi untuk setiap token,
00:01:53attention berjalan di GPU, lalu router memilih 4 expert dan engine membaca ke-4 expert itu langsung dari SSD
00:02:00ke memori GPU dan menjalankannya bersama shared expert. Ini terjadi di setiap
00:02:06dari 40 layer tersebut, jadi ada 160 pembacaan kecil untuk setiap token. Jika Anda belum familiar dengan attention,
00:02:14itu adalah bagian dari model yang melihat kembali seluruh percakapan sejauh ini dan menentukan
00:02:19kata mana yang penting untuk memprediksi kata berikutnya. Attention berjalan pada setiap token tanpa kecuali,
00:02:25sehingga harus tetap berada di memori. Expert adalah bagian yang melakukan pemikiran sebenarnya tentang suatu token setelah
00:02:31attention menentukan konteksnya. Namun karena hanya empat dari expert tersebut yang digunakan, sisanya bisa kita biarkan
00:02:36di penyimpanan. Tidak ada cache expert di aplikasi sama sekali; setiap pembacaan melalui sistem operasi,
00:02:42dan iOS menyimpan expert yang baru saja digunakan di page cache miliknya sendiri selama masih ada sisa RAM. Para pengembang
00:02:49sebenarnya membuat cache 9,8 GB milik mereka sendiri lalu menghapusnya, dan itu membuat prosesnya 38% lebih cepat karena
00:02:55di Mac atau iPhone, RAM apa pun yang diambil aplikasi adalah RAM yang diambil dari GPU dan page cache tersebut,
00:03:03padahal cache itulah yang melakukan sebagian besar pekerjaan di sini. Pada kecepatan 11 token per detik, jika setiap expert dibaca dari flash storage,
00:03:09ponsel akan membutuhkan kecepatan baca lebih dari 5 gigabita per detik, sedangkan flash storage iPhone hanya mencapai sekitar 1,6 GB per
00:03:15detik. Jadi sebagian besar expert dibaca dari RAM yang dikelola sistem operasi untuk kita. Trik berikutnya adalah kuantisasi bertegkat
00:03:22(tiered quantization). Kuantisasi mengompresi bobot model sehingga memakan lebih sedikit ruang, tetapi juga mengurangi
00:03:29akurasi bobot tersebut dan memengaruhi kecerdasannya. Namun pada model ini, sekitar 25% dari
00:03:35expert menangani sekitar 80% pekerjaan. Jadi expert yang sering digunakan (hot expert) tetap di 4-bit, sedangkan yang jarang digunakan (cold expert)
00:03:41dikuantisasi menjadi 2-bit, menjadikannya 44% lebih kecil. Ukuran seluruh file menyusut 34% dari sekitar 19 GB menjadi
00:03:5013 GB, yang berarti lebih banyak bagian yang muat di page cache. Di iPhone 16 Pro saya, ini berjalan 11 token per detik saat
00:03:57model berada dalam mode berpikir. Namun harus saya akui, ponselnya menjadi sangat panas, bahkan hanya dengan menyapa “hello”. Saya bisa merasakan
00:04:03ponsel memanas di tangan saya, jadi usahakan agar ponsel Anda tidak meledak saat mengujinya. Jujur saja, saya
00:04:08agak takut untuk mengetik sesuatu yang terlalu rumit karena ini benar-benar bisa melelehkan tangan saya.
00:04:14Engine khusus yang kita jalankan ini adalah proyek bernama FlashMoE buatan Dan Woods. Engine ini ditulis untuk
00:04:19MacBook, dan ada port iOS kecil bernama FlashiOS yang membungkus engine yang sama ke dalam aplikasi iPhone,
00:04:26dan itulah yang memungkinkan saya menjalankan seluruh model ini di ponsel. Awalnya saya juga mengalami bug di mana pemikiran model
00:04:31terjebak dalam pengulangan. Awalnya berjalan baik, tetapi setelah sekitar 10 kata, model akan terus mengulang
00:04:35dua token yang sama selamanya. Untuk memeperbaikinya, saya memperbarui fungsi bernama async pre-read weight agar fungsi tersebut memeriksa
00:04:41setiap pembacaan expert terhadap ukuran expert itu sendiri. Cold expert berukuran 2-bit dan setengah dari ukuran hot expert,
00:04:48sehingga sebelum diperbaiki, setiap cold expert gagal dalam pemeriksaan ukuran dan dilewati secara diam-diam. Model tersebut secara efektif
00:04:54berjalan hanya dengan setengah dari expert yang ada, sehingga terus berulang. Jika Anda menyukai konten ini, teman-teman, bantuan besar bagi kami
00:04:59jika Anda bersedia berlangganan saluran ini agar kami bisa terus membuat konten gratis setiap hari. Sekarang, untuk
00:05:05memasangnya di ponsel Anda, Anda perlu mengkloning repositori, menerapkan perbaikan pre-read yang baru saya sebutkan ke
00:05:11metal infer / infer.m, lalu atur proyek Xcode ke tim dan ID bundle Anda. Anda memerlukan akun Apple
00:05:18Developer berbayar untuk ini. Buat release build dan pasang di iPhone Anda. Unduh model bertingkat
00:05:24yang sudah dikemas sebelumnya yang berukuran sekitar 13 GB, kirim ke aplikasi melalui USB yang membutuhkan waktu sekitar tujuh menit.
00:05:30Di ponsel, buka aplikasi FlashMoE, ketuk modelnya, lalu mulailah mengobrol. Dan jika Anda ingin mencoba menjalankan
00:05:36model lokal di Mac Anda untuk token per detik yang lebih cepat, tonton video berikutnya ini. Saya Warren dari
00:05:43Better Stack, terima kasih banyak telah menonton, dan sampai jumpa di video berikutnya.

Key Takeaway

Model LLM Mixture of Experts sebesar 35 miliar parameter dapat dijalankan secara lokal di iPhone pada kecepatan 11 token per detik dengan menyimpannya di SSD dan mengalirkan komponen aktif ke RAM sebesar 1,4 GB melalui engine FlashMoE.

Highlights

  • Penggunaan teknik streaming expert dari SSD mengurangi kebutuhan RAM iPhone untuk model 35 miliar parameter dari 20 GB menjadi 1,4 GB.

  • Kuantisasi bertingkat mengompresi expert yang jarang digunakan ke 2-bit sementara expert yang sering digunakan tetap di 4-bit, menyusutkan ukuran total file dari 19 GB menjadi 13 GB.

  • Aplikasi FlashiOS memproses model Qwen 2.5 35B pada kecepatan 11 token per detik di iPhone 16 Pro.

  • Memperbaiki bug ukuran pada fungsi async pre-read weight mencegah model terjebak dalam pengulangan dua token secara terus-menerus.

  • iOS memanfaatkan page cache RAM untuk membaca sebagian besar data expert guna menutupi batas kecepatan baca SSD iPhone yang sebesar 1,6 GB per detik.

Timeline

Arsitektur Streaming Expert dan Kebutuhan Memori

  • Model Qwen 2.5 35B hanya memuat 1,4 GB komponen inti ke RAM iPhone dan menyimpan sisa 12 GB expert di SSD.
  • Setiap token hanya mengaktifkan sekitar 2,4 miliar parameter dari total 35 miliar parameter yang ada.
  • Proses inferensi melibatkan 160 pembacaan data skala kecil dari SSD ke GPU untuk setiap token melalui 40 layer model.

Model Mixture of Experts (MoE) terdiri dari 40 layer dengan 64 expert kecil dan satu shared expert per layer. Komponen seperti embedding, attention, router, dan shared expert tetap dimuat di RAM sepanjang waktu. Router memilih 4 expert aktif per token yang dibaca langsung dari SSD ke GPU, sehingga penggunaan memori aktif berkurang drastis dibanding model standar.

Peran Page Cache iOS dan Kuantisasi Bertingkat

  • Eksekusi pada kecepatan 11 token per detik membutuhkan kecepatan baca data melebihi 5 GB per detik, jauh di atas batas fisik SSD iPhone sebesar 1,6 GB per detik.
  • Sistem operasi iOS menggunakan sisa RAM sebagai page cache untuk menyimpan data expert yang baru saja diakses.
  • Pengompresan 25% expert yang sering digunakan ke 4-bit dan sisanya ke 2-bit memperkecil ukuran file total sebesar 34%.

Karena SSD perangkat tidak mampu memenuhi kebutuhan transfer data secara langsung, sistem operasi mengandalkan page cache di RAM untuk mempercepat pembacaan data expert. Menghapus custom cache buatan pengembang justru meningkatkan performa hingga 38%. Strategi kuantisasi bertingkat mengamankan akurasi dengan mempertahankan hot expert pada format 4-bit dan mengubah cold expert menjadi 2-bit.

Perbaikan Bug Pengulangan dan Langkah Pemasangan

  • Engine FlashMoE dan port FlashiOS memungkinkan model khusus MacBook berjalan di iOS.
  • Pemeriksaan ukuran berkas pada fungsi async pre-read weight perlu diperbarui agar tidak mengabaikan cold expert berukuran 2-bit.
  • Proses penginstalan memerlukan akun Apple Developer berpaid untuk mengompilasi release build melalui Xcode dan mentransfer file model 13 GB via USB.

Bug yang menyebabkan model mengulang dua token secara tak terbatas terjadi karena fungsi pra-baca mengabaikan cold expert yang ukurannya separuh dari hot expert. Mengubah logika pemeriksaan ukuran file pada file metal infer/infer.m menyelesaikan masalah tersebut. Penyiapan aplikasi dilakukan dengan mengkloning repositori, melakukan build melalui Xcode, dan mentransfer berkas model yang memakan waktu sekitar tujuh menit via kabel USB.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video