14 poin oleh GN⁺ 2024-04-02 | 2 komentar | Bagikan ke WhatsApp

Peningkatan kecepatan LLaMA di CPU

  • Proyek llamafile dari Mozilla menulis 84 kernel perkalian matriks baru
  • Saat menggunakan bobot F16 dan Q8_0 di CPU, waktu evaluasi prompt menjadi 30% hingga 500% lebih cepat dibanding llama.cpp
  • Peningkatan paling dramatis terjadi pada komputer ARMv8.2+ (misalnya RPI 5), Intel (misalnya Alderlake), dan AVX512 (misalnya Zen 4)
  • Menunjukkan kecepatan 2 kali lebih cepat daripada MKL untuk matriks yang muat di cache L2
  • Peningkatan kecepatan bekerja paling baik untuk prompt dengan kurang dari 1.000 token

Latar belakang

  • llamafile adalah proyek LLM lokal yang dimulai bersama Mozilla pada November 2023
  • Menggunakan Cosmopolitan Libc untuk mengemas llama.cpp sebagai biner lintas platform dalam satu file
  • Berjalan di 6 OS untuk AMD64 dan ARM64 dengan sedikit modifikasi
  • Ada keyakinan bahwa dengan meningkatkan teknologi inti, pengalaman llama.cpp terbaik dapat diberikan kepada pengguna dan kedua proyek bisa menjangkau audiens yang lebih luas
  • Mozilla telah menyediakan sumber daya untuk itu

Peningkatan performa pada perangkat keras enterprise

  • Saat pertama kali tertarik pada LLM, lingkungan kerjanya adalah Hewlett Packard hemat biaya yang menjalankan Alpine tanpa GPU, dengan disk berputar, RAM lambat, dan prosesor AVX2
  • Hal yang disukai dari llama.cpp adalah mereka lebih dulu memikirkan orang-orang seperti dirinya
  • Ia mulai menjadi sukarelawan penuh waktu dan bekerja sama dengan orang seperti Slaren untuk menghadirkan dukungan mmap(), yang memungkinkan bobot dimuat seketika sambil mengurangi penggunaan RAM hingga setengahnya
  • Saat itu ini merupakan lompatan besar untuk LLM lokal, tetapi hampir tidak berkontribusi pada peningkatan kecepatan evaluasi
  • Sebagian besar kode inferensi ditulis oleh Georgi Gerganov sendiri dan sangat bagus sehingga butuh satu tahun lagi sebelum bisa diperbaiki
  • Sekarang setelah diperbaiki, mari lihat seberapa jauh kecepatannya meningkat pada Hewlett Packard lama itu

Peningkatan performa pada perangkat keras hobi

  • Model bahasa besar dapat dijalankan bahkan tanpa komputer besar
  • Salah satu komputer pribadi terbaik yang bisa dibeli di toko saat ini adalah Raspberry Pi
  • Perangkat ini menawarkan performa yang sangat baik dengan harga murah dan konsumsi daya yang sangat rendah
  • Raspberry Pi baru saja merilis generasi ke-5 beberapa hari lalu, dan jauh lebih cepat daripada model sebelumnya
  • Dukungan untuk ISA ARMv8.2 dotprod dan aritmetika fp16 juga diperkenalkan, yang sangat berguna untuk LLM
  • Hanya dengan dua fitur ini saja, tahun lalu llama.cpp bisa mencapai peningkatan performa 10 kali lipat untuk bobot f16
  • Minggu ini, peningkatan performa 2 kali lipat lagi ditambahkan di atasnya dengan menggunakan kernel yang awalnya ditujukan untuk AVX512
  • Tidak disangka kernel yang dirancang untuk peralatan pusat data bisa cocok dengan Raspberry Pi yang kecil dan ringan, tetapi ternyata pas karena kedua CPU sama-sama memiliki 32 register vektor

Peningkatan performa pada perangkat keras gaming

  • Gamer memiliki ekspektasi kualitas tertinggi di antara konsumen yang peduli nilai, sehingga perangkat keras yang dibuat untuk gamer biasanya sangat bagus
  • Industri machine learning telah berkembang selama bertahun-tahun dengan memanfaatkan perangkat keras untuk gamer
  • Tanpa kontribusi besar dari para gamer, musim dingin AI mungkin akan berlangsung 10 tahun lebih lama
  • Beberapa bulan lalu, ia meminta seorang gamer merakitkan komputer yang bisa menggantikan Hewlett Packard lamanya
  • Menurutnya Alderlake adalah CPU yang hebat, tetapi tampaknya banyak disalahpahami mengingat performa float16 bisa ditingkatkan 5 kali lipat dengan mudah
  • Berbeda dengan ARMv8.2, kernel x86 menggunakan jenis operasi float32 secara internal, sehingga hal ini bisa dilakukan tanpa menimbulkan error pembulatan
  • Ini berarti filter spam yang lebih cerdas bisa dibuat
  • Menjalankan skrip shell spam.sh hanya memerlukan 420 milidetik, 7 kali lebih cepat daripada Raspberry Pi 5
  • Untuk beban kerja kecil, chip ini bisa selesai bahkan sebelum CUDA sempat mulai
  • Pemilik Alderlake dapat mengharapkan bahwa llamafile secara khusus berhati-hati agar tidak berjalan di efficiency core
  • Ini adalah salah satu hal yang membantu llamafile berjalan lebih cepat daripada llama.cpp
  • Ini juga berarti meskipun LLM berjalan 24 jam sehari, komputer masih memiliki cukup sumber daya untuk program lain
  • llama.cpp mendispatch thread secara lockstep, sehingga bila 1 core membutuhkan waktu lebih lama daripada core lain untuk menyelesaikan pekerjaannya, semua core lainnya harus melakukan busy loop sampai seluruh n core selesai
  • Keunggulan terbesar mikroprosesor ini adalah seberapa cepat ia bisa membangun 2,6 juta baris kode di monorepo Cosmopolitan
  • Hewlett Packard selalu membutuhkan 64 detik, tetapi komputer gaming ini hanya membutuhkan 20 detik
  • Awalnya perlu 35 detik, lalu menjadi lebih cepat setelah diberi liquid metal dan AI overclocking
  • Alasan lain kode sistem sangat cepat di Alderlake adalah karena selama proses pembuatan CPU ini terjadi pertarungan sengit antara hacker dan ilmuwan, dan hacker yang menang
  • Diharapkan ke depan akan ada kompromi yang lebih baik untuk AVX512, tetapi secara keseluruhan chip ini sangat memuaskan karena menunjukkan kemajuan besar dibanding model sebelumnya

Peningkatan performa pada perangkat keras Apple

  • Jika berbicara tentang komputer pribadi dengan kualitas tertinggi, Mac Studio mungkin yang paling menonjol
  • Mengambil keunggulan performa di sini lebih sulit baginya karena ini adalah platform perangkat keras yang paling diperhatikan para pengembang llama.cpp, dan karena memilih menggunakan compiler Stallman, ia bekerja dengan handicap alih-alih memakai alat proprietary Apple
  • Tidak mengherankan jika mikroprosesor M2 menjadikan llamafile seperti saluran utama untuk konten sintetis
  • Trik yang digunakan Apple untuk ini adalah memanfaatkan integrasi vertikal
  • Jika membeli Mac Studio dan melihat ke dalamnya, akan terlihat bahwa RAM DIMM diletakkan di dalam CPU
  • Karena CPU tidak lagi perlu melakukan panggilan jarak jauh semacam itu, pekerjaan yang sensitif terhadap latensi seperti pembuatan token menjadi jauh lebih cepat
  • Namun dalam hal flop murni (diukur sebagai tok/sec prompt), ISA ARM M2 Ultra ternyata hanya menyediakan sekitar 30% lebih banyak komputasi dibanding komputer Intel miliknya yang jauh lebih murah
  • Lebih banyak kemampuan hanya bisa diakses melalui framework proprietary seperti Metal atau Accelerate
  • Jika xcode terpasang, llamafile secara default akan mengompilasi modul stub kecil yang membantu berdiri di depan semua pustaka closed-source yang berada di antara pengguna dan silikonnya
  • Jika sedang mempertimbangkan membeli Mac Studio, satu hal penting adalah bahwa seperti halnya Windows Executive, XNU sangat bagus dalam menjaga desktop tetap stabil, yang berarti sistem itu melindungi dirinya dari pengguna
  • Karena semua fitur keamanan itu, mengompilasi monorepo Cosmo di Mac Studio memerlukan 45 detik, tetapi bahkan jika fork bomb dijalankan, Netflix tampaknya tidak akan melewatkan satu frame pun
  • Skrip spam.sh juga berjalan dalam 430ms, lebih lambat daripada Intel
  • Namun ini tidak terlalu mengkhawatirkannya karena ia telah melihat bagaimana Asahi Linux dapat mengeluarkan seluruh potensi M2

Peningkatan performa pada perangkat keras profesional

  • llamafile sangat peduli membantu orang yang kekurangan GPU, tetapi juga memberikan pengalaman kelas atas bagi 1% teratas
  • AMD Ryzen Threadripper PRO 7995WX dirilis beberapa bulan lalu dan saat ini merupakan CPU termahal yang bisa dibeli dengan uang
  • Harganya 10.000 dolar, tetapi menawarkan AVX512 96-core berbasis arsitektur Zen4
  • Meskipun harganya dua kali lipat, ISA x86 7995WX memberikan performa komputasi mentah 7 kali lebih besar daripada ISA ARM M2 Ultra, sementara kecepatan pembuatan tokennya hampir sama
  • Hal ini kemungkinan besar berkat cache L3 sebesar 384MB
  • Salah satu keunggulan AVX512 adalah model Gemma dari Google bisa memecahkan teka-teki matematika di AVX512 tetapi tidak di AVX2, karena vektor yang lebih besar umumnya lebih mudah mengurangi error pembulatan
  • Instruksi VDPBF16PS membantu melakukan updot bf16, mirip dengan VNNI dan ARM dotprod
  • Model seperti Mistral dan TinyLLaMA mendistribusikan bobot dalam bfloat16 sebagai format resmi, jadi dukungan asli untuk bf16 itu bagus
  • Jika bf16 dikonversi ke fp16, hanya 13% dari angka yang mungkin dapat direpresentasikan secara akurat
  • Dalam praktiknya ini hampir tidak penting karena 99,71% angka yang digunakan Mistral 7b berada dalam 13% tersebut
  • Namun llamafile berupaya sebisa mungkin menyampaikan jumlah bit yang diklaim

2 komentar

 
savvykang 2024-04-02

Tidak ada data untuk sistem kelas menengah seperti Intel 14600 atau Ryzen 5600. Sepertinya ini memang dimaksudkan untuk menunjukkan bahwa modelnya bisa berjalan di Raspberry Pi, tetapi tampaknya akan sulit untuk penggunaan nyata. Meski begitu, saya ingin menganggap sebagai hiburan bahwa spesifikasi hardware yang dibutuhkan untuk menjalankan LLM lokal terus menurun.

 
GN⁺ 2024-04-02
Opini Hacker News
  • Opini tentang implementasi SGEMM Fortran:

    • Kompiler Fortran modern dapat menerapkan optimasi AVX dan FMA tanpa perubahan tambahan.
    • Optimasi loop unrolling dapat dilakukan melalui flag kompiler (-funroll-all-loops).
    • Kompiler Intel melakukan loop unrolling bahkan tanpa permintaan eksplisit dari pengguna.
    • Menambahkan paralelisasi ke source Fortran 77 bisa jadi sulit, tetapi dapat dilakukan dengan menambahkan sintaks OpenMP atau menggunakan struktur paralelisasi Fortran modern.
    • Jangan meremehkan fungsi Fortran 77. Tujuan Fortran adalah membebaskan pengembang dari detail spesifik platform dan menyerahkan pekerjaan itu kepada kompiler.
  • Opini tentang pengganti cuBLAS:

    • Ini tampak seperti upaya untuk menulis ulang cuBLAS di dalam CUDA.
    • Langkah berikutnya mungkin adalah menghapus ketergantungan CUDA dan langsung menggunakan compute shader Vulkan atau Metal.
  • Opini tentang menjalankan LLM(Local Language Model):

    • Semua orang seharusnya bisa mengunduh dan menjalankan LLM secara lokal bahkan dengan persyaratan minimum.
    • Ini dapat berfungsi sebagai cadangan untuk sebagian besar pengetahuan manusia.
  • Opini tentang pengukuran performa:

    • Lebih suka mendefinisikan subrutin menggunakan C++. C++ lebih cepat lebih dari tiga orde magnitudo dibanding Python.
    • Menyukai ide mengukur perbedaan performa dalam "tahun Hukum Moore".
  • Tautan terkait:

  • Opini tentang judul:

    • Judulnya membingungkan. Pada awalnya bisa disalahpahami sebagai klaim bahwa model berjalan lebih cepat di CPU daripada GPU.
    • Judul yang lebih jelas seperti "Peningkatan performa LLaMa on CPU" akan lebih baik.
  • Opini tentang peningkatan performa dibanding MKL-DNN:

    • Ada pengalaman mencoba melampaui MKL-DNN untuk ukuran matriks yang terbatas, tetapi gagal.
    • Efisiensi energi seperti ini di CPU secara fisik tidak mungkin.
  • Opini tentang menjalankan LLM:

    • Model bahasa besar dapat dijalankan tanpa komputer besar.
    • Menjalankan model dengan parameter kecil juga secara teknis termasuk menjalankan model bahasa, tetapi mungkin tidak memenuhi standar yang dianggap berguna oleh kebanyakan orang.
  • Opini tentang penggunaan CPU oleh Pixar:

    • Studio besar seperti Pixar menggunakan CPU untuk rendering film karena biaya/performa dan akses ke RAM yang lebih besar.
    • Menyediakan tautan berita terkait.
  • Opini tentang AMD Zen4 dan AVX512:

    • ISA x86 7995WX harganya dua kali lipat dibanding ISA ARM M2 Ultra, tetapi menawarkan daya komputasi mentah 7 kali lebih besar, sementara kecepatan pembuatan token hampir sama.
    • Kemungkinan ini berkat cache L3 384MB.
    • Telah dilakukan pekerjaan yang memungkinkan LLaMA berjalan 2,8 kali lebih cepat di Zen4 dibanding sebelumnya.