2 poin oleh GN⁺ 2024-12-13 | 1 komentar | Bagikan ke WhatsApp
  • Implementasi klon ChatGPT

    • Program ini adalah implementasi GPT-2 tanpa dependensi.
    • Memuat matriks bobot dari file TensorFlow dan file BPE, lalu melakukan tokenisasi input dengan byte pair encoder sederhana.
    • Mengimplementasikan paket aljabar linear dasar, mendefinisikan arsitektur transformer, menjalankan inferensi transformer, dan mengubah output kembali dari token dengan decoder BPE.
    • Ditulis dalam C sekitar 3000 byte.
    • Dioptimalkan secara efisien sehingga model GPT-2 Small dapat merespons dalam hitungan detik di perangkat modern.
    • Mengimplementasikan KV caching dan algoritme perkalian matriks yang efisien.
  • Struktur program

    • Library matematika matriks dasar (700 byte)
    • Perkalian matriks cepat (300 byte)
    • Layer jaringan saraf (300 byte)
    • Model transformer (600 byte)
    • Byte pair encoding (400 byte)
    • Input/output (200 byte)
    • Pemuatan bobot (300 byte)
    • Pemuatan byte pair encoding (300 byte)
  • Latar belakang ChatGPT dan transformer

    • ChatGPT adalah aplikasi untuk berinteraksi dengan model bahasa.
    • GPT-4 adalah model terbaru yang sangat mengesankan.
    • Program C ini mengimplementasikan cara kerja ChatGPT menggunakan GPT-2, model yang lebih lemah dari tahun 2019.
    • GPT-2 adalah transformer yang menerima urutan kata berukuran tetap sebagai input dan memprediksi kata berikutnya.
  • Penjelasan kode C

    • Memulai matematika matriks (700 byte)

      • Jaringan saraf tersusun dari operasi matriks.
      • Membangun library matriks menggunakan definisi matriks yang minimal.
      • Menggunakan makro untuk mengekstrak logika umum menjadi meta-rutin.
    • Perkalian matriks cepat (300 byte)

      • Perkalian matriks dasar diimplementasikan menggunakan tiga loop.
      • Berkat cara kerja memori dan cache, membaca dan menulis memori yang sama berulang kali lebih cepat.
    • Layer jaringan saraf (300 byte)

      • Mendefinisikan beberapa layer jaringan saraf khusus untuk menulis transformer.
      • Mengimplementasikan fungsi aktivasi GELU dan fungsi untuk mengatur sub-diagonal yang diperlukan untuk causal attention.
    • Arsitektur transformer (600 byte)

      • Mengimplementasikan transformer dalam 600 byte.
      • Pada setiap layer, menghitung key, query, dan value, membuat matriks attention, lalu menggabungkan hasilnya.
    • Byte pair encoding (400 byte)

      • Karena model bahasa memerlukan input berukuran tetap, token dibuat menggunakan potongan kata.
      • Memecah kata yang diberikan menjadi karakter individual, lalu menggabungkan pasangan token yang berdekatan.
    • Pemuatan bobot (300 byte)

      • Memuat bobot jaringan saraf dari disk.
      • Bobot diserialisasikan sebagai floating point 32-bit.
    • Pemuatan byte pair encoding (300 byte)

      • Memuat kosakata byte pair encoding dari disk.
      • Format file terdiri dari daftar byte pair encoding.
  • Kesimpulan

    • Puluhan tahun perkembangan machine learning dapat dipadatkan menjadi beberapa ribu byte.
    • Menjadi contoh jaringan saraf yang sederhana, mencakup semuanya kecuali bobot model yang sebenarnya.

1 komentar

 
GN⁺ 2024-12-13
Opini Hacker News
  • Saat menggunakan GPT-2 untuk mensimulasikan percakapan dengan teman, hasilnya menyenangkan dan kadang mengejutkan akurat. Saya penasaran apakah lompatan besar antara GPT-2 dan GPT-3 disebabkan oleh model yang lebih besar, data yang lebih banyak, atau keduanya. RLHF memang membuat perbedaan besar, tetapi model dasar GPT-3 sendiri juga sangat berguna jika diberi contoh yang cukup

  • Ini contoh yang bagus untuk menunjukkan betapa sederhananya jaringan saraf sebenarnya. Kecerdasan buatan adalah sihir hitam yang kita gunakan untuk menghasilkan uang

  • Saya belum mencoba menjalankan kodenya, tetapi saya terkesan dengan ukurannya yang kecil. Program ELISA awal lebih besar. Fakta bahwa dalam 4 tahun terakhir ini bisa dipadatkan hingga hitungan byte sangat mengesankan. Jika ada petunjuk tentang di mana letak "sihir"-nya, saya ingin penjelasannya. Saya penasaran apakah itu ada pada fungsi GELU atau pada model yang diunduh melalui skrip bash

  • GPT-2 menulis dongeng favorit saya. Tautan: The Princess, the Fairy Godmother, and the Chest

  • Saya penasaran apakah GPT-2 benar-benar telah disetel agar bisa digunakan untuk chat. Jika tidak, menurut saya agak berlebihan menyebut ini sebagai klon ChatGPT

  • LISP tidak selalu lebih baik daripada C. Kali ini boleh dimaafkan. Jika Anda melewatkan tautan kodenya, ini dia: C-Chat-GPT-2

  • Saya penasaran dijalankan pada perangkat keras seperti apa. Apakah bisa menggunakan bobot terkuantisasi dari huggingface, dan apakah ada masalah atau kueri tertentu yang sangat cocok untuknya

  • Belakangan ini Anda bisa dengan mudah membuat ChatGPT versi sendiri menggunakan gptscript. Tautan: gptscript

  • Saya tidak mengerti bagaimana makro C mirip dengan regular expression. Makro C mencocokkan kata dan menggantinya dengan teks lain. Regular expression mencocokkan teks dengan pola yang relatif kompleks, dan tidak melakukan penggantian teks dengan sendirinya

  • Saya penasaran apakah ada yang sudah menjalankannya secara lokal untuk melihat seperti apa output yang dihasilkan GP2 ini