- Petals memungkinkan pembuatan teks dan fine-tuning tanpa memuat seluruh model bahasa besar ke satu perangkat, melainkan menjalankan sebagian saja dengan GPU rumahan atau Google Colab
- Mendukung hingga Llama 3.1 405B, Mixtral 8x22B, Falcon 40B+, dan BLOOM 176B, sehingga model besar bisa ditangani bahkan dengan perangkat pribadi
- Pengguna memuat potongan model yang menjadi bagiannya, lalu terhubung ke jaringan peserta yang menyediakan potongan lainnya, bekerja dengan struktur ala BitTorrent
- Inferensi batch tunggal mencapai hingga 6 tokens/sec pada Llama 2 70B dan hingga 4 tokens/sec pada Falcon 180B, cukup untuk digunakan pada chatbot dan aplikasi interaktif
- Dibanding API LLM biasa, pengguna dapat memilih metode fine-tuning dan sampling secara lebih luas, serta menangani jalur internal model dan hidden states
Menjalankan model besar secara terdistribusi
- Petals bertujuan menjalankan model bahasa besar di rumah, dan bekerja dengan cara beberapa pengguna menyediakan bagian berbeda dari model seperti BitTorrent
- Pengguna tidak memuat seluruh model, tetapi hanya mengunggah sebagian model, lalu bergabung ke jaringan yang menyediakan bagian lainnya
- Model yang didukung:
- Llama 3.1: hingga 405B
- Mixtral: 8x22B
- Falcon: 40B+
- BLOOM: 176B
- Dengan GPU rumahan atau Google Colab, pengguna dapat melakukan pembuatan teks dan fine-tuning per tugas
- Performa inferensi batch tunggal:
- Llama 2 70B: hingga 6 tokens/sec
- Falcon 180B: hingga 4 tokens/sec
- Kecepatan ini cukup untuk chatbot dan aplikasi interaktif
Rentang kontrol yang lebih luas daripada API
- Petals memungkinkan pengguna memilih langsung metode fine-tuning dan sampling, melampaui API LLM tradisional
- Pengguna dapat menjalankan jalur kustom yang melewati model atau memeriksa hidden states
- Menyediakan kenyamanan API sekaligus fleksibilitas PyTorch dan 🤗 Transformers
- Tersedia notebook Colab dan dokumentasi GitHub yang bisa langsung dicoba
- Ada cara berpartisipasi dengan menyediakan GPU untuk menambah kapasitas Petals, dan kabar pengembangannya bisa diikuti di Discord
- Proyek ini merupakan bagian dari lokakarya riset BigScience
1 komentar
Komentar Hacker News
Menarik. Tampaknya strukturnya membagi bobot model per lapisan, mendistribusikannya ke beberapa mesin, lalu tiap mesin mendaftarkan dirinya ke tabel hash besar ketika siap, dan melakukan inferensi atau fine-tuning “sebagai tim” untuk lapisan yang menjadi tanggung jawabnya
Ini masih tahap awal, tetapi saya sudah mengerjakan hosting bobot model untuk https://github.com/jmorganca/ollama di registry Docker. Alasan utamanya adalah content addressability, sehingga Ollama dapat memverifikasi setiap kali bahwa bobot yang benar telah diunduh, dan pada akhirnya bisa mengambil bobot berdasarkan kontennya sendiri, bukan berdasarkan nama atau URL yang bisa berubah
Sebagai langkah berikutnya, tampaknya model bisa dibagi per lapisan dan tiap lapisan disimpan secara independen untuk penggunaan seperti ini, atau dimanfaatkan untuk mengunduh dan menjalankan model yang lebih besar di beberapa mesin “lokal”
Pedoman HN juga mengatakan “jangan gunakan HN terutama untuk promosi; sesekali memposting karya sendiri tidak apa-apa, tetapi tujuan utama menggunakan situs ini haruslah rasa ingin tahu”
Dalam kasus ini juga, rasanya sudah cukup membahas pekerjaan OP tanpa menyertakan backlink gratis ke proyek tersebut
Bagian yang mengatakan “dapat di-fine-tune sesuai tugas” membuat saya mengernyit
Fine-tuning 70B bukan sekadar sulit; secara harfiah mustahil kecuali Anda menyewa instance cloud yang sangat mahal, atau membeli PC seharga rumah, tak peduli seberapa lama Anda bersedia menunggu
Kalau ada “llama training horde”, saya dengan senang hati akan ikut
Sepemahaman saya, model dengan N miliar parameter dapat di-fine-tune dengan GPU yang memiliki VRAM sedikit kurang dari N gigabyte
Untuk model 70B parameter, mungkin sekelas A100?
Selain itu, di Lambda Cloud model 70B bisa di-fine-tune dengan biaya 2 dolar per sejuta token, dan di Replicate kurang dari 10 dolar
Jika LLM dianggap mempelajari tiap buku secara independen, sepertinya dua delta pada bobot LLM tinggal dijumlahkan saja
Apakah LLM yang sudah dilatih bisa dikomposisikan dengan cara apa pun? Misalnya, jika keduanya mempercayai 99% data yang sama tetapi hanya berbeda pada 1%, apakah kita perlu dua model yang sepenuhnya terpisah, atau bisakah kita berbagi komputasi dengan orang lain yang memiliki pendapat sama untuk 99% itu, lalu membuat model turunan yang mengoreksi perbedaan model kepercayaan masing-masing?
Pemahaman saya tentang neural network masih dasar, tetapi memanipulasi bobot dengan cara seperti itu sambil tetap menjaga kegunaan model tidak terlihat seperti hal yang mustahil
Alasan saya bertanya adalah karena akan berguna jika kita bisa mengetahui kalimat mana yang disetujui oleh dua LLM dengan performa sama dan pada kalimat mana ada disagreement. Dengan begitu, perbedaan tersebut bisa dipetakan balik ke perbedaan data pelatihan. Mungkin hanya mungkin jika perbedaannya kecil
Sebaliknya, jika dua LLM dengan performa sama lebih seperti melewatkan kesempatan untuk membuat satu model yang lebih kuat, dan analisis disagreement juga terlalu mahal, maka itu menjadi dunia yang cukup berbeda
Ini bukan composability dalam arti lapisan-lapisan adaptasi semacam itu dapat diambil lalu digabungkan secara arbitrer, tetapi melatih model yang berbeda sambil berbagi basis bobot yang sama sudah merupakan masalah yang terpecahkan
Bagaimana mencegah peserta jahat mengubah output bagiannya dalam komputasi yang lebih besar? Bahkan jika tidak ada cara untuk membuat output jaringan yang ditentukan penyerang, jika banyak node masuk dan sekadar mengembalikan hasil sampah, tampaknya sistem ini praktis bisa mengalami serangan denial-of-service
Selain itu, klien dapat mengalirkan data melalui beberapa jalur yang tidak saling tumpang tindih di jaringan dan memeriksa apakah hasilnya cocok
Ini akan menangkap penyerang yang sering berulah, tetapi tidak memberikan perlindungan 100%, jadi jika jaminan akurasi penuh dibutuhkan, saya rasa orang-orang akan membentuk swarm privat. Misalnya, jika Anda tidak memiliki cukup GPU untuk menjalankan LLM sendiri tetapi mengenal pemilik hardware yang tepercaya, Anda bisa membentuk swarm Petals privat untuk menjalankan LLM bersama-sama dan memproses data di hardware yang tersebar secara geografis
Pertanyaan pertama yang muncul adalah, “bagaimana kelayakan ekonominya?” Menurut FAQ:
Apakah insentif Petals berbasis cryptocurrency, blockchain, dan sejenisnya? Tidak. Petals adalah sistem yang sepenuhnya terdesentralisasi dalam semua aspek lainnya, tetapi untuk insentif mereka sedang mengerjakan sistem terpusat yang mirip dengan kudos AI Horde. Mereka tidak berencana menyediakan layanan untuk menukar poin ini dengan uang, jadi anggap saja sebagai poin “game” yang dipakai di dalam sistem
Petals adalah proyek yang berpusat pada machine learning untuk peneliti dan engineer machine learning, dan tidak terkait dengan keuangan. Alasan memilih sistem insentif terpusat adalah karena pengembangan dan pemeliharaannya jauh lebih mudah, sehingga mereka bisa fokus mengembangkan fitur yang berguna bagi peneliti machine learning
https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...
https://lite.koboldai.net/
https://tinybots.net/artbot
https://aihorde.net/
Sebenarnya, kalau ada orang di HN yang ingin menguji model fine-tuned 13B~70B tertentu, saya bisa meng-host-nya sore ini:
https://huggingface.co/models?sort=modified&search=70B+gguf
https://www.sheepit-renderfarm.com/home
Itu mungkin tidak cukup untuk semua orang, jadi mereka juga sedang memperkenalkan “bloom points” sebagai insentif eksplisit bagi orang yang menyumbangkan waktu GPU ke swarm publik. Saat sistemnya siap, situs web akan menampilkan kontributor teratas, dan orang yang memperoleh poin bisa menggunakannya untuk inference atau fine-tuning dengan prioritas lebih tinggi atau jaminan keamanan yang ditingkatkan, atau mungkin menukarnya dengan imbalan lain
Namun tetap saja, tampaknya mereka memang menginginkan semacam token terpusat
Sebagai tambahan, maksud saya bukan menghubungkan “token” Petals ke sistem pembayaran. Maksudnya, secara umum, terlepas dari terdesentralisasi atau tidak, pemanggilan cluster model machine learning kemungkinan besar akan memakai pembayaran cryptocurrency yang sekaligus menyediakan autentikasi dan sarana pembayaran
Petals adalah implementasi yang bagus untuk komputasi terdesentralisasi demi penggunaan model, dan sepertinya akan bernilai dalam jangka panjang
Saya ingin membagikan 3080 Ti saya, tetapi setelah menjalankan perintah di panduan memulai, tampaknya ada masalah versi dependensi: https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)Sepertinya kita bisa meng-host swarm server sendiri [0]
Saya penasaran kira-kira seperti apa performa fine-tuning cluster Petals “privat”
[0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...
Benar-benar keren. Semoga ini membuat bidang ini lebih mudah diakses oleh ribuan, bahkan jutaan developer lagi
Saya selalu berpikir crowdsourcing adalah masa depan. Baik untuk informasi maupun komputasi
Sebenarnya “sumber daya”-nya sudah ada, ini hanya soal penempatan
Saya pernah memakai Petals di proyek lama. Saya juga membagikan GPU dan menulis kode untuk proyek itu
Bagian Petals diabstraksikan dari saya, dan pengalaman menulis kodenya terasa biasa saja
Saya tidak mengunggah proyek itu ke mana pun, dan juga tidak begitu tahu bagaimana kelanjutannya. Secara umum, itu dikerjakan oleh sekitar lima orang sebagai penggerak utamanya