LLM dan Tren Pemrograman Awal 2024
(antirez.com)- ChatGPT dan LLM lokal menjadi alat bagi programmer berpengalaman untuk mengurangi pekerjaan yang menguras waktu seperti menelusuri dokumentasi, mempelajari API yang kompleks, dan menulis program sekali pakai, bukan sekadar menulis kode itu sendiri
- LLM bukan kecerdasan supranatural, melainkan melakukan interpolasi secara terbatas di dalam ruang data pelatihan; namun di bidang seperti pemrograman yang memiliki banyak data berkualitas, ia sangat berguna sebagai “orang bodoh yang tahu banyak”
- Pada masalah yang hasilnya dapat diverifikasi, seperti transformasi tensor PyTorch, klien BLE Objective-C di macOS, interpretasi input/output model ONNX, dan skrip analisis CSV, GPT-4 dapat memangkas waktu kerja secara signifikan
- Dalam pekerjaan yang membutuhkan penalaran kompleks seperti pemrograman sistem berbasis C dan implementasi algoritme, keterbatasannya terlihat pada desain hash Bloom filter dan interpretasi format kuantisasi Q6_K di llama.cpp
- Jika sebagian besar pemrograman adalah mengulang pola yang sudah ada dengan sedikit perubahan, kemampuan memakai LLM dengan baik dan menjelaskan masalah secara jelas menjadi makin penting
Mengapa programmer berpengalaman memakai LLM
- Tujuan memanfaatkan LLM tidak berhenti pada menulis kode lebih cepat
- Mencari dokumentasi yang tidak biasa
- Mempelajari API yang terlalu kompleks
- Menulis program yang akan dibuang beberapa jam kemudian
- Menangani detail yang tidak menarik secara intelektual
- Seiring Google menjadi ruang pencarian yang penuh spam, LLM menjadi jalur alternatif untuk memperoleh informasi yang dibutuhkan dengan cepat
- Pada kode tingkat tinggi seperti Python, penggunaan LLM meningkat, tetapi pada kode C penggunaannya jauh lebih sedikit
- Perbedaan pentingnya adalah membedakan kapan LLM membuat pekerjaan lebih cepat, dan kapan justru membuatnya lebih lambat
- Seperti Wikipedia atau kuliah YouTube, LLM sangat membantu orang yang memiliki kemauan, kemampuan, dan disiplin, tetapi mungkin terbatas manfaatnya bagi orang yang tertinggal
LLM bukan mahatahu, tetapi juga bukan sekadar burung beo
- Cara kerja internal neural network dan LLM masih cukup tidak transparan
- Sebagian pakar AI sempat meremehkan LLM sebagai Markov chain tingkat lanjut atau sistem yang memuntahkan ulang variasi data pelatihan, tetapi pandangan “burung beo” semacam itu sebagian besar ditarik kembali ketika berhadapan dengan bukti
- Sebaliknya, sikap yang memberikan kemampuan supranatural yang tidak ada di dunia nyata kepada LLM juga tidak akurat
- LLM dapat melakukan interpolasi secara terbatas di dalam ruang yang dibentuk oleh data yang dilihatnya selama pelatihan
- Ia dapat menulis program yang belum pernah dilihat persis sebelumnya
- Ia dapat mencampur beberapa ide yang sering muncul dalam data pelatihan
- Ia dapat gagal besar ketika diperlukan penalaran yang halus
- Meski punya keterbatasan seperti ini, LLM dapat dipandang sebagai pencapaian terbesar dalam sejarah AI
Asisten pemrograman sebagai “orang bodoh yang tahu banyak”
- LLM dapat melakukan penalaran yang dasar dan sering tidak akurat, berhalusinasi, serta menciptakan fakta yang tidak ada
- Pada saat yang sama, di bidang dengan banyak data berkualitas seperti pemrograman, ia bekerja seperti savant dengan pengetahuan yang sangat luas
- Ia mungkin kurang memadai sebagai rekan pair programming, tetapi berguna dalam struktur ketika pengguna mengajukan pertanyaan lalu memverifikasi jawabannya
- Dulu, mengetahui beberapa bahasa, algoritme klasik, dan library inti sudah cukup untuk melakukan banyak hal
- Kini kompleksitas meningkat tajam akibat ledakan framework, bahasa, dan library; dalam lingkungan ini, “orang bodoh yang tahu segalanya” menjadi rekan yang berguna
Contoh keberhasilan pada kode tingkat tinggi dan interpretasi data
- Saat berpindah dari Keras ke PyTorch, LLM membantu menulis kode yang dibutuhkan untuk menyusun model tanpa harus mempelajari dokumentasi PyTorch dari awal
- Pengguna sudah memahami konsep seperti embedding atau residual network
- Pendekatan yang efektif adalah menyajikan struktur model yang dibutuhkan dan pertanyaan secara jelas
- GPT-4 melihat model PyTorch dan format batch, lalu menulis kode untuk me-reshape tensor agar sesuai dengan input neural network
- Pengguna memeriksa di Python CLI apakah dimensi tensor dan batch data sudah sesuai
- Saat membuat klien BLE untuk perangkat berbasis ESP32, kode Objective-C ditulis dengan cepat untuk memakai API native macOS
- Binding Bluetooth multiplatform dinilai umumnya tidak dapat digunakan
- API BLE Objective-C dan detail Objective-C yang sudah lama tidak dipakai harus ditangani lagi
- Kode akhir ada di SerialBTE.m
- LLM memang tidak menulis sebagian besar kode secara langsung, tetapi menjelaskan penyebab masalah dan cara menyelesaikannya sehingga sangat mempercepat penulisan
- Program bantu ini memiliki imbal hasil rendah dibandingkan upayanya, sehingga tanpa ChatGPT kemungkinan besar tidak akan dicoba sama sekali
Interpretasi model ONNX dan penulisan program sekali pakai
- Saat memakai convnet berformat ONNX yang dokumentasinya minim, LLM menafsirkan cara kerjanya berdasarkan metadata input/output dan nilai raw output dari gambar uji
- Awalnya format dan ukuran gambar input tidak diketahui
- Output bukan klasifikasi biner sederhana, melainkan tersusun dari ratusan nilai
- ChatGPT berasumsi bahwa output mungkin berupa normalized box yang menunjukkan area cacat potensial dalam gambar dan probabilitas cacat
- Setelah beberapa kali percakapan, skrip inference Python dan kode transformasi tensor input dibuat
- Untuk “program sekali pakai”, ada kalanya seluruh kode diserahkan kepada LLM untuk ditulis
- Saat melatih neural network kecil, GPT-4 melihat format CSV dan membuat plot.py untuk memvisualisasikan loss curve
- Diminta agar ketika beberapa file CSV diberikan lewat command line, program membandingkan validation loss curve dari tiap eksperimen
- Seluruh pekerjaan memakan waktu 30 detik
- Program pandas yang membaca laporan CSV AirBnB, mengelompokkannya per apartemen berdasarkan bulan dan tahun, lalu menghitung rata-rata sewa bulanan dengan mempertimbangkan biaya kebersihan dan jumlah malam menginap juga berjalan pada percobaan pertama
- Karena program semacam ini membosankan dan kurang menarik untuk ditulis, jika LLM menanganinya pengguna dapat fokus pada pekerjaan penting
Keterbatasan yang terlihat pada C dan pemrograman sistem
- Saat menulis program C, LLM hampir selalu hanya digunakan sebagai bentuk dokumentasi yang lebih nyaman
- Dalam pemrograman sistem, penalaran kompleks dibutuhkan, dan LLM saat ini sering gagal di titik ini
- Ketika diminta mengimplementasikan Bloom filter, GPT-4 menerima syarat 100.000 elemen dan probabilitas false positive maksimum 5%, tetapi tidak menghasilkan implementasi yang baik
- Hanya menggunakan dua hash function yang mirip
- Kurang memiliki abstraksi untuk membuat K hash yang cukup decorrelated dari string yang sama
- Jika diminta secara eksplisit membuat N output yang decorrelated, ia mengusulkan hash function yang lebih baik
- GPT-4 dapat menulis fungsi hash yang lebih tepat jika masalah dipecah menjadi submasalah kecil, tetapi tidak menerapkan ide itu sendiri dalam desain Bloom filter secara keseluruhan
- Hasil seperti ini dapat dilihat sebagai gabungan dari kemampuan penalaran yang lemah, kurangnya materi per topik, dan bercampurnya materi berkualitas rendah
Perbedaan antara model lokal dan model besar
- Pada masalah pemrograman sistem, perbedaan antara model kecil dan model besar terlihat jelas
- Pada masalah
hash_idyang sama, Mixtral mengusulkan menambahkanhash_iddi akhir hasil hash, dan ini dinilai sebagai solusi yang sangat buruk - Hasil deepseek-coder 34B yang dikuantisasi 4-bit dan dijalankan di MacBook M1 Max lebih baik
- Pengguna memberikan petunjuk bahwa menambahkan
hash_iddi akhir membuat distribusi memburuk - Model mengidentifikasi bahwa penjumlahan sederhana mungkin menjadi penyebab masalah
- Model mengusulkan alternatif untuk mencampur
hash_iddengan bitwise operation seperti XOR
- Pengguna memberikan petunjuk bahwa menambahkan
- Kasus ini mendekati bentuk identifikasi penyebab masalah dan usulan solusi yang sulit diperoleh hanya dari dokumentasi atau pencarian Google
- Namun bagi programmer sistem yang berpengalaman, LLM pada umumnya masih jarang memberikan solusi yang memuaskan
Kasus interpretasi format Q6_K di llama.cpp
- Proyek ggufflib adalah library untuk membaca dan menulis file format GGUF yang digunakan llama.cpp saat memuat model terkuantisasi
- Pada encoding kuantisasi, demi kecepatan, bit dari tiap quant disimpan dengan cara yang kompleks
- Awalnya ChatGPT dicoba untuk memahami encoding tersebut, tetapi melakukan reverse engineering langsung pada kode llama.cpp jauh lebih cepat
- Meski fungsinya cukup kecil untuk masuk ke dalam context GPT-4, hasil rekonstruksi dokumentasi format data dari deklarasi struct dan decoding function tidak berguna
- Pada permintaan penjelasan format Q6_K pun, ia tidak dapat menjelaskan dengan jelas bagaimana lower/upper bit disimpan di
qldanqhbergantung pada posisi weight- Bahkan ketika diminta membuat fungsi penjelasan dengan cara penyimpanan yang lebih sederhana, indeksnya salah
- Penanganan sign extension dari 6-bit ke 8-bit juga salah
- Pekerjaan ini pada akhirnya diselesaikan dengan kertas dan pena, membaca kode, serta melacak bit yang diekstrak decoder
- Pekerjaan semacam ini diperkirakan termasuk dalam cakupan yang dapat menjadi mungkin dalam beberapa bulan hanya dengan sedikit scaling, tanpa perlu terobosan besar
Sifat pekerjaan pemrograman dan kemampuan memanfaatkan LLM
- Sebagian besar pemrograman saat ini adalah mengulang hal yang sama dalam bentuk yang sedikit berbeda, dan sering kali tidak membutuhkan penalaran tingkat tinggi
- LLM cukup kuat untuk pemrograman berulang semacam ini, tetapi batas ukuran context masih menjadi kendala besar
- Perlu dipikirkan apakah menulis hanya jenis program yang sebagian bisa dilakukan LLM masih menjadi posisi yang baik 5 atau 10 tahun ke depan
- Kemampuan penalaran LLM lemah dan tidak sempurna, tetapi sulit menjelaskan hasil yang diamati jika menganggapnya hanya mengulang kata secara sederhana
- Sasaran pelatihan berupa prediksi token berikutnya memaksa terbentuknya suatu bentuk model abstrak, dan model itu lemah, penuh lubang, serta tidak sempurna
Mengapa memakai LLM sekarang
- Alasan untuk tidak memakai LLM dalam pemrograman lemah
- Kemampuan mengajukan pertanyaan yang tepat kepada LLM menjadi keterampilan penting
- Kemampuan menjelaskan masalah secara jelas berguna bukan hanya untuk LLM, tetapi juga saat berkomunikasi dengan manusia
- Banyak programmer bisa sangat unggul di bidang tertentu tetapi kurang dalam komunikasi
- Dalam situasi ketika Google makin sulit digunakan, LLM juga cocok dipakai seperti dokumentasi yang terkompresi
- Nilai praktis LLM adalah mengurangi kebutuhan untuk mempelajari secara langsung “junk knowledge” seperti protokol komunikasi yang ambigu atau detail library yang kompleks
1 komentar
Opini Hacker News
Intinya ada di bagian ini: “Apakah ini bisa dilakukan tanpa ChatGPT? Tentu saja mungkin, tetapi fakta bahwa itu akan memakan waktu lebih lama bukanlah hal yang paling menarik. Faktanya, karena itu tidak sepadan, saya mungkin tidak akan mencobanya sama sekali”
Dalam bantuan coding, potensi sejati LLM adalah menurunkan hambatan untuk memulai pekerjaan baru, sehingga hal-hal yang tadinya akan tertahan tanpa batas di tumpukan proyek masa depan benar-benar dikerjakan dan diselesaikan
Internet dan open source juga punya efek serupa; proyek yang menarik tetapi tidak dikerjakan sendiri pun, seiring waktu, akan memiliki cukup banyak orang yang memecahkan masalah serupa sehingga bisa digunakan ulang atau dimodifikasi, dan akibatnya aplikasi serta library yang berguna meledak jumlahnya
Saya setuju dengan penulis bahwa LLM sendiri tidak terlalu kapabel, tetapi bagi orang yang punya keterampilan dasar dan motivasi, LLM menjadi penguat
Lalu saya menyadari bahwa itu bisa dilakukan dengan usaha yang jauh lebih sedikit dari perkiraan
Bertukar ide dengan orang yang tepat bisa memberi efek serupa, tetapi orang yang tidak harus sepenuhnya memahami domain masalah namun cukup mampu memberi masukan bermakna tidak selalu siap 24 jam hanya dengan sekali klik
Untuk beberapa hal memang membantu, tetapi biasanya ketika saya sampai pada titik tidak tahu apa yang saya lakukan, modelnya juga tidak lebih tahu daripada saya
Selain itu, sulit menyusun prompt lebih cepat daripada menulis kode sendiri
Saya jadi bertanya-tanya apakah saya memang tidak bisa memakai alat-alat ini dengan baik
Saya cukup mengenal library ow2 asm, tetapi alat ini banyak menghemat waktu yang biasanya dipakai untuk mencari-cari format descriptor yang tepat
Ini juga membantu saya memahami mengapa library analisis statis lain tidak cukup bagi kebutuhan saya, karena cara mereka menangani state
Bagi saya, ChatGPT melakukan dua hal: mengurangi pencarian StackOverflow kecil-kecilan dan penelusuran kode library untuk menjawab pertanyaan spesifik, serta membantu menilai kelayakan pendekatan yang akan saya ambil pada tahap riset proyek sebelum mulai
Jika memiliki ADHD berat, hal-hal sederhana justru paling sulit, bahkan membuang sampah atau membuka surat hampir mustahil
Dialog di kepala selama berjam-jam hanya berteriak agar melakukan hal itu, tetapi tubuh tidak mendengarkan
Ini disebut disfungsi fungsi eksekutif, tetapi dalam hidup saya itu adalah sumber masalah besar
Sekadar membuat saya mulai melakukan hal itu saja sudah luar biasa besar
Untuk pemrograman, saya sepenuhnya setuju
Titik optimal penggunaan LLM adalah ketika kita sudah cukup memahami topik tersebut untuk memverifikasi hasilnya, dan cukup tahu apa yang diinginkan sehingga bisa menjelaskannya secara detail, sebisa mungkin hanya bagian intinya
Ini membuat pekerjaan lebih cepat, membuat kita melakukan hal-hal yang mungkin sebelumnya tidak akan dilakukan, dan sangat membantu untuk membuat program kecil bernilai yang boleh saja dibuang
Satu area lain yang sangat berguna adalah menjelajahi topik yang sepenuhnya baru, baik terkait pemrograman maupun bukan
Kita bisa mengatakan bahwa kita belum paham, tidak perlu detail spesifik, tetapi ingin membicarakan hal ini dan dibantu merapikan pikiran
Ini sangat berguna terutama bagi orang yang bersedia melakukan riset lanjutan berdasarkan apa yang didengar atau mengajukan pertanyaan tambahan
Gerbang masuk ke banyak bidang adalah memahami istilah dasar, mendengar pembedaan apa yang dibuat orang dan alasannya, serta mengetahui siapa otoritas dalam topik tersebut
Mereka bisa terus mengutak-atik sampai menghasilkan monster yang tidak mereka pahami, lalu hanya memastikan build berhasil
Orang yang sedang belajar memang butuh bantuan, tetapi bantuan yang diberikan LLM dalam bentuk Copilot bukanlah bentuk yang tepat
Akan menarik jika melatih model Copilot yang dirancang sebagai pendamping yang mengajukan pertanyaan klarifikasi dan menentukan solusi bersama, bukan mencoba menghasilkan kode bagaimanapun caranya dari pertanyaan junior yang ambigu atau salah spesifikasi
Setiap kali, ia memberikan premis yang agak keliru atau bahkan sepenuhnya terhalusinasi, dan membuat saya membuang waktu sampai menyadari bahwa itu salah
Kalau saja tidak ada sikap terlalu yakin pada jawaban yang salah, mungkin hasilnya tidak jauh lebih buruk daripada merangkai hal-hal yang saya ketahui, tetapi untuk saat ini cukup baik sebagai pengganti rubber duck atau autocomplete
Akan menyenangkan jika ketika membuka situs web bahasa baru, ada LLM yang bisa diajak berdialog tentang dokumentasinya dan ditanya-tanyai untuk membantu pemahaman
Lebih bagus lagi jika ia dilatih dengan contoh kode nyata dari bahasa atau framework tersebut, dan langsung membantu menulis program atau fungsi baru di tempat itu
Jika terhubung dengan REPL online dan membantu secara inline, itu akan menjadi keunggulan yang lebih besar
Menurut saya, aspek yang paling diremehkan dari LLM adalah perannya sebagai semacam developer yang tahu segalanya, yang sempat disinggung dalam tulisan tetapi tidak dibahas langsung.
Seberapa senior pun seorang programmer, pada akhirnya ia akan berhadapan dengan teknologi yang hampir tidak ia ketahui.
Semua orang adalah junior di suatu bidang.
Bahkan jika seseorang adalah dewa Win32, C++, dan COM, ia bisa saja tersendat pada skrip NSIS yang rumit saat harus memaketkan perangkat lunak.
Meski sudah 25 tahun membuat aplikasi web dan duduk di komite bahasa PHP, ketika diberi tugas mengimplementasikan standar ISO yang pelik untuk berkomunikasi dengan jaringan kartu kredit, bisa saja ia belum pernah berkomunikasi dengan jaringan kartu kredit pada level itu.
Meski sudah membuat aplikasi iOS sejak iPhone pertama, sebelumnya membuat aplikasi Mac, bekerja beberapa tahun di Apple, menghafal sebagian besar API iOS, bahkan ikut merancangnya, ketika diberi tugas mengimplementasikan dukungan CalDAV di aplikasi, bisa saja ia bahkan tidak tahu apa itu CalDAV.
Dalam situasi seperti ini, LLM bisa membantu; kalaupun tidak bisa menuliskan seluruh kode, setidaknya ia bisa mengarahkan ke arah yang benar.
Setelah kepala dipenuhi teknologi lain, ada saatnya kita harus mengingat kembali dan mengulang hal-hal yang dulu pernah dipelajari tetapi tersisih oleh teknologi baru.
Rasanya aneh.
Secara alami kita mengikuti nilai tengah dari pekerjaan perusahaan tempat kita bekerja, lalu tiba-tiba berada dalam situasi “sudah agak lama ya” sejak terakhir menyentuh CSS.
Bisa jadi perlu belajar di akhir pekan untuk mengembalikan intuisi tentang Python dataclass.
Jika sesuatu bisa ditemukan di Google, besar kemungkinan LLM dapat menemukannya lebih cepat, lebih baik, lalu merangkumnya.
Untungnya, pada saat itu kemungkinan besar saya sudah pensiun.
Tren “sebagian besar kode ditulis dengan copy-paste dari ChatGPT” terasa mengejutkan.
Saya masih terus kaget bahwa begitu banyak orang tahan dengan alur kerja yang menyakitkan seperti ini.
Penulis asli jelas bukan pemula yang mengode dengan GPT di luar pengetahuannya sendiri, melainkan engineer berpengalaman.
Biasanya ia semestinya peduli pada alur kerja coding serta kegunaan dan efisiensi tool, tetapi banyak orang tetap tahan bolak-balik menyalin dan menempel kode antara GPT dan file lokal.
Alur kerja yang menjengkelkan inilah yang awalnya mendorong dibuatnya aider.
aider membagikan repositori git lokal dengan GPT sehingga kode baru dan perubahan bisa diterapkan langsung ke file.
Konteks kode terkait juga dibagikan ke GPT, sehingga ia bisa menulis kode yang terintegrasi dengan proyek.
Dengan begitu, kontribusinya bisa lebih canggih, bukan hanya potongan kode terisolasi yang mudah di-copy-paste.
Hasilnya adalah alur kerja pair programming yang mulus, di mana saya dan GPT mengedit file bersama sambil berdialog.
https://github.com/paul-gauthier/aider
Tapi apakah ada cara memakainya hanya untuk berdiskusi tentang kode?
Saya menggunakan LLM untuk membahas pro dan kontra berbagai pendekatan atau memecahkan masalah seperti rubber ducking.
Untuk itu saya harus menyalin kode, sementara aider berfokus pada penerapan perubahan, jadi kurang cocok untuk penggunaan seperti ini.
Biasanya baru setelah beberapa kali bolak-balik membahas cara yang benar, saya memutuskan apakah akan menerapkan perubahan atau tidak.
Dia adalah pencipta Redis.
Jika sudah membayar langganan, masuk akal untuk copy-paste daripada membayar biaya tambahan untuk API.
Selain itu, tiap orang punya standar berbeda tentang apakah peningkatan efisiensi cukup berharga untuk bergantung pada proyek orang lain, dan proyek seperti itu juga berisiko menjadi berbayar atau ditelantarkan.
Percobaan pertama dengan file nyata terlalu besar dan gagal, lalu file nyata kedua juga masih terlalu besar.
Saya terkejut karena aider tampaknya tidak bisa membagi file besar agar sesuai dengan batas token.
Batas token GPT tidak mampu menampung file sumber sebesar itu.
Kalau saya harus memilih file yang akan dikerjakan dan bahkan melakukan “operasi bedah” agar GPT tidak muntah, saya tidak yakin apakah itu menghemat waktu dibanding memakai Copilot di IDE.
Awalnya saya mengira kontribusi inti aider adalah menangani masalah “ukuran kode ≫ batas token”, tetapi sepertinya bukan begitu.
Saya memang ingin mencobanya lagi, tetapi aider berada dalam kategori yang kurang menguntungkan, yaitu “harus mencari masalah dan codebase yang cukup sederhana untuk ditangani aider”.
Sebaliknya, Copilot dan ChatGPT datang membantu saya setiap hari di tempat saya berada, pada codebase nyata di pekerjaan nyata, termasuk segala cacatnya.
Menurut saya, dengan fungsinya saat ini, ia sudah mencakup use case chat dan konfirmasi dengan sangat baik.
Komentar-komentar di sini mungkin tidak mencerminkan tingkat kepuasan tinggi sebagian besar pengguna software.
Aider membantu menjalankan secara nyata use case yang dibicarakan antirez dalam tulisannya.
Terutama semakin kita makin mahir, seperti yang dikatakan antirez, dalam mengajukan pertanyaan yang tepat kepada LLM.
Selama beberapa hari terakhir saya mencoba memperbaiki bug pada aplikasi Mac closed-source.
Saya menyukai aplikasi itu, tetapi bug ini sudah membuat saya gila selama bertahun-tahun.
Saya cukup yakin metode Objective-C mana yang kira-kira menyebabkan bug tersebut, tetapi saya tidak tahu apa yang dilakukan metode itu, dan versi hasil dekompilasinya benar-benar berantakan tanpa masuk akal.
Rasanya seperti mentok di tembok.
Lalu saya mencoba memasukkan noise yang dikeluarkan decompiler ke GPT-4 dan memintanya mengubahnya menjadi versi yang bersih.
Hasilnya tidak sempurna, tetapi bisa saya rapikan, lalu setelah hasil itu saya swizzling ke aplikasi, bug tersebut tampaknya hilang.
Saya tidak pernah menemukan langkah reproduksinya, tetapi biasanya pada titik waktu sekarang masalah itu sudah muncul.
Ini sesuatu yang sama sekali tidak mungkin saya lakukan tanpa GPT-4.
Tentu saja, jika sebuah potongan kode ditulis ulang sepenuhnya, meskipun tidak memahami apa yang dilakukannya dan memakai LLM, kecil kemungkinan ia memiliki bug yang sama dengan implementasi asli.
Namun bug lain bisa muncul, dan saya berharap tidak ada orang yang melakukan cara seperti ini pada kode yang konsekuensi bug-nya penting, seperti terhentinya sistem atau biaya bagi pelanggan.
Tulisan ini benar-benar mengejutkan bagi saya
Salvatore adalah salah satu software engineer paling kompeten yang aktif saat ini
Ia bisa melihat dengan jelas bahwa apa yang disebut alat ini sama sekali tidak berguna di bidang keahliannya
Namun alih-alih membuangnya seperti obeng yang tidak pas dan bengkok, ia menerima premis para pendukungnya bahwa kita harus entah bagaimana menemukan kegunaannya
Seperti yang dipelajari di kelas pengantar makroekonomi, jika satu pulau unggul dalam memproduksi widget A, maka sekalipun kemampuan pulau lain memproduksi B sangat buruk, akan muncul spesialisasi yang membuat pulau A memanfaatkan pulau B
Jadi wajar saja kemampuan relatif antirez dalam pemrograman sistem mendorong LLM ke tugas pemrograman lain
Namun kita tidak hidup dalam isolasi
Di sekitar kita ada banyak manusia yang menginginkan tantangan teknis dan makanan
Banyak dari mereka memiliki, atau bisa memperoleh, keterampilan yang saling melengkapi dengan kita
Jika bekerja bersama, hasil kolaborasi bisa melampaui jumlah bagian-bagiannya
Mungkin saja LLM bisa menulis kode PyTorch lebih baik daripada antirez
Namun hanya karena ada obeng tua bengkok di garasi, bukan berarti kita harus memakainya
Mungkin lebih baik pergi ke toko perkakas hari ini
Karena sintaks yang tepat atau pembentukan ulang tensor tidak terlalu penting bagi saya
Untuk penggunaan pribadi membuat dan melatih convnet bagi gambar saya, tidak perlu mengganggu pakar Torch
Jika saya cukup memahami convnet itu sendiri dan hanya kurang tahu sintaks atau method Torch, saya bisa melakukannya sendiri
Alternatifnya adalah mempelajari detail manual Torch, dan hasilnya akan sama
Yang penting dalam pekerjaan ini bukan detail MLX, Keras, atau PyTorch, melainkan mengendalikan konsep machine learning
Saat ini cukup berguna, tetapi sulit dibilang benar-benar demikian, dan Anda juga tidak akan “tertinggal” jika tidak memakainya
Semua pihak terkait sedang berusaha sebaik mungkin membuatnya lebih mampu, jadi ketika hari itu tiba, Anda tinggal mem-prompt apa yang Anda inginkan
Tidak perlu terburu-buru memeras sesuatu dari generasi saat ini; untuk sekarang, sering kali ia menurunkan produktivitas alih-alih meningkatkannya
Sampai-sampai saya bertanya-tanya apakah kita membaca tulisan yang sama
Ia melihat alat baru yang dianggap menarik oleh orang lain, menemukan cara pakai yang berguna baginya, sambil tetap mengakui bagian-bagian yang tidak berguna
Ia juga cukup mendukung contoh-contoh yang memang tidak sia-sia
Bagi developer, ini bukan wawasan yang sangat revolusioner
Kita selalu memakai berbagai alat seperti bahasa pemrograman, dan setiap alat punya kekuatan serta kelemahan
Saya tidak tahu mengapa LLM harus begitu berbeda
Mengklaim bahwa ia sama sekali tidak punya kekuatan terasa bodoh
Bisakah itu dilakukan dengan kurang dari 20 dolar per bulan?
Saat memulai proyek baru, ada masalah impedansi
Pada awalnya pekerjaan masih 0% selesai, dan Anda harus mulai dari suatu tempat, entah itu hello world, file CMakeLists, atau skrip Python, dan itu sulit
Sebelum ChatGPT/LLM, saya harus menarik upaya itu dari dalam diri saya sampai ke ujung jari
Sekarang saya bisa menyerahkannya kepada ChatGPT
Memang kurang efisien dan kurang kuat dibanding “duduk lalu mengerjakannya sendiri”, tetapi ia menghapus biaya untuk “memutuskan duduk dan mengerjakannya sendiri”
Meski begitu, tetap saja pada dasarnya menyalin dan mengaduk potongan-potongan yang diambil dari pencarian kode GitHub, StackOverflow, tulisan blog acak, dokumentasi, Discord, dan sebagainya
Setelah beberapa kali mencoba dan mengulang, muncul titik awal 5% untuk proyek itu, dan begitu akhirnya mulai berbentuk, saya bisa benar-benar bekerja
Pada akhirnya saya dengan cepat membuat proof of concept dangkal hasil sampah yang dimuntahkan ChatGPT lewat copy-paste, lalu ketika momentumnya sudah cukup, beralih menggali sendiri
Jadi memang lebih lambat dan tidak efisien, dan bukan berarti ChatGPT lebih jago dari saya, tetapi lebih mudah dan saya tidak perlu menggali terlalu dalam
Pada akhirnya saya bisa jauh lebih bertahan di bagian yang benar-benar penting dari proyek, yaitu tengah dan akhir, dan tidak burnout di awal
Apakah sejak awal saya mengajukan pertanyaan yang benar, dan jika tidak, apakah pekerjaan itu bisa diselamatkan secara efektif?
Biaya hangusnya lenyap ke dalam biaya langganan 20 dolar
Saya melihat bagian “Ada masalah, dan jika LLM mengarang omong kosong, saya perlu cepat mengetahui hal-hal yang bisa saya verifikasi. Dalam kasus seperti itu saya memakai LLM untuk mempercepat laju memperoleh pengetahuan yang dibutuhkan” sebagai insight utamanya
Salah satu alasan pemrograman sangat cocok untuk LLM adalah karena memverifikasi jawaban biasanya sepele
Saya sedang bereksperimen dengan konsep untuk menilai apakah LLM adalah alat yang tepat untuk suatu tugas
Misalnya dengan memetakan “seberapa penting output harus akurat” dan “seberapa mudah memverifikasi apakah output akurat” pada sebuah grafik
Membuat daftar lagu yang melibatkan artis perempuan peraih Emmy dengan ChatGPT memang memakan waktu untuk diverifikasi akurasinya, tetapi tingkat kepentingannya juga rendah dan sebagian kesalahan masih bisa diterima
Jadi software sama sekali tidak punya bug?
Ini adalah masalah-masalah yang solusinya sulit dipikirkan, tetapi kandidat solusinya mudah diverifikasi
Dan semua orang tahu kelas masalah itu disebut apa
Dunia sudah penuh dengan tulisan asal-asalan yang tidak relevan dan tidak akurat, dan lebih baik kita mengurangi produksinya daripada mempercepatnya
Ini bukan soal contoh spesifik, melainkan soal keseluruhan idenya
Menggunakan ChatGPT sebagai partner berpikir untuk menulis kode
Menyelesaikan pekerjaan dengan bercakap-cakap dengannya sepanjang hari, setiap hari
Perusahaan menyetujui Copilot, tetapi autocomplete Copilot adalah pengalaman yang buruk
Perusahaan tidak menyetujui Copilot Chat yang saya butuhkan
Meski begitu, akan menyenangkan jika ada tool serupa yang bisa membuat unit test atau komentar kode untuk kode saya di laptop saya
Tentu saja dengan input dan arahan dari saya
Banyak rekan kerja memujinya, jadi saya sempat merasa mungkin saya yang aneh, tetapi itu sangat mengganggu dan saya mematikannya setelah beberapa hari
Rasanya seperti ada orang yang mencoba menyelesaikan kalimat saya saat saya masih berbicara
Bahkan ketika benar pun terasa menjengkelkan dan memutus alur, dan sangat sering salah
[0] https://continue.dev/
[1] https://ollama.ai/
Beberapa hari lalu saya mencoba Codeninja
Seingat saya sama sekali belum setara dengan 4 yang menjalankan backend Copilot, tetapi untuk data sensitif yang tidak boleh keluar, pada praktiknya itu satu-satunya pilihan
Atau bisa juga mendapatkan instance khusus dari OpenAI
Ini mungkin bagian terpenting dari tulisan ini, dan mengingat apa yang akan terjadi pada 2024, bagian yang tidak berlebihan untuk terus diulang adalah ini
“Kalau begitu, sejauh mana LLM memiliki kemampuan penalaran, atau semuanya hanya gertakan? Seperti yang dikatakan para ahli semiotika, mungkin ia terkadang tampak bernalar karena ‘penanda’ memberi kesan adanya makna yang sebenarnya tidak ada. Namun orang-orang yang sudah cukup banyak berurusan dengan LLM tahu bahwa, sambil menerima keterbatasannya, hal itu saja tidak dapat menjelaskannya. Kemampuan untuk mencampur ulang apa yang pernah dilihat sebelumnya jauh melampaui sekadar mengulang kata-kata secara acak. Sekalipun sebagian besar pelatihannya dilakukan dengan memprediksi token berikutnya selama pretraining, tujuan ini memaksa model membangun suatu bentuk model abstrak. Model ini lemah, berlubang-lubang, dan tidak sempurna, tetapi jika kita mengamati apa yang kita amati, model itu pasti ada. Jika kepastian matematis meragukan dan bahkan para pakar terbaik pun sering berada di pihak yang berlawanan, tampaknya bijak untuk memercayai apa yang dilihat dengan mata sendiri”