Setiap beberapa bulan, komunitas open-source meluncurkan kerangka kerja AI baru. Sebagian besar membungkus binding Python di sekitar kernel C++ yang berat, atau mereka menumpuk lapisan abstraksi begitu tinggi sehingga runtime-nya saja lebih berat daripada model yang dilayaninya. CatAI bergerak ke arah sebaliknya. Ini adalah mesin AI native yang ditulis sepenuhnya dalam C++, dibangun mulai dari matematika tensor ke atas. Tujuannya bukan untuk membuat lapisan antarmuka (skin) ramah lainnya di atas PyTorch. Tujuannya adalah untuk menguasai setiap byte memori dan setiap siklus komputasi, dimulai dari batas perangkat keras.
Mengapa Perlu Mesin Lain?
Jika Anda pernah merilis sesuatu ke produksi, Anda sudah tahu rasa sakitnya. Masukkan stack deep-learning standar ke dalam container dan lihatlah ukuran image membengkak hingga beberapa gigabyte. Dependensi saling berbenturan. Interpreter Python menambah latensi. Dispatcher yang mengarahkan operasi ke CUDA atau CPU memperkenalkan overhead halus yang mustahil untuk diprofilkan setelah ia tenggelam dalam lusinan framework yang bersarang. Untuk perangkat edge, robotika tertanam (embedded robotics), atau backend yang sensitif terhadap latensi, beban tersebut nyata adanya. Mesin C++ murni menghilangkan perantara. Ia berkomunikasi langsung dengan sistem operasi dan silikon, tanpa garbage collection, tanpa global interpreter lock, dan tanpa kerumitan serialisasi antar bahasa.
CatAI menganggap hal ini sebagai fitur, bukan sebuah kompromi. Proyek ini ditulis dari nol dalam C++ karena penulis ingin menentukan secara tepat bagaimana tensor berada di RAM, bagaimana mereka bergerak melalui hierarki cache, dan bagaimana kernel dijadwalkan di berbagai thread. Itu bukan masokisme. Itu adalah satu-satunya cara untuk menjamin bahwa perilakunya dapat diprediksi saat Anda memeras performa dari perangkat keras yang terbatas.
Apa Arti Sebenarnya dari "Dari Nol"
Dalam kebanyakan framework modern, matematika tensor ditangani oleh panggilan opak (opaque) ke library vendor seperti cuDNN, oneMKL, atau MPS. Hal itu sangat masuk akal untuk rilis cepat, tetapi menyembunyikan mekanisme operasinya. CatAI menulis matematika tensor inti dan tata letak memorinya sendiri. Itu berarti merancang struktur data fundamental yang menampung array multidimensi, memilih bagaimana stride dan offset dihitung, dan memutuskan apakah akan menyimpan data dalam format row-major, column-major, atau tiled kustom tergantung pada pola aksesnya.
Ini adalah pekerjaan sistem yang mendalam. Saat Anda menulis kernel perkalian matriks secara manual, Anda berhenti berpikir dalam istilah torch.matmul dan mulai berpikir tentang L1 cache lines, register pressure, dan loop tiling. Anda memutuskan apakah akan melakukan blocking untuk tile 32x32 atau 64x64 berdasarkan lebar SIMD dari CPU target. Anda menyelaraskan alokasi ke batas 64-byte agar pemuatan AVX-512 tidak melewati cache lines. Anda mempertanyakan apakah std::vector adalah kontainer yang tepat untuk penyimpanan tensor, atau apakah arena allocator kustom memberi Anda lokalisasi yang lebih baik dan nol fragmentasi di seluruh graph inferensi.
Tata letak memori juga sama pentingnya. Array n-dimensi yang naif dapat merusak performa jika data gambar channels-last diakses dalam pola channels-first. Di CatAI, tata letak ini adalah warga kelas satu (first-class citizens), bukan sekadar pemikiran tambahan yang ditangani oleh pengoptimal graph yang berjalan saat waktu ekspor.
Pola Pikir Optimasi
Optimasi bare-metal terdengar seperti kata kunci (buzzword) sampai Anda mulai menghitung nanodetik. Itu berarti menggabungkan (fusing) operasi sehingga hasil perantara tidak pernah meninggalkan register CPU atau cache L1. Itu berarti mengimplementasikan layer-norm yang diikuti oleh GELU sebagai satu kernel tunggal, menghemat seluruh perjalanan bolak-balik (round-trip) ke DRAM. Itu berarti menulis thread pool Anda sendiri alih-alih mengandalkan default OpenMP, karena Anda tahu beban kerja Anda bersifat bursty dan Anda tidak ingin runtime melakukan spawning dan joining thread pada setiap forward pass.
Itu juga berarti memahami kapan tidak perlu menulis assembly. Terkadang compiler melakukan vektorisasi loop lebih baik daripada intrinsik yang ditulis tangan. Disiplinnya adalah pengukuran: profil, hipotesis, ubah satu variabel, dan profil lagi. Mesin ini dibangun oleh orang-orang yang menikmati kerja keras tersebut. Jika Anda pernah menghabiskan satu sore menulis ulang loop konvolusi untuk memangkas dua milidetik dari sebuah batch, Anda sudah memahami budayanya.
Siapa yang Kami Butuhkan
Ini bukan pertunjukan satu orang. Membangun backend dari nol membutuhkan keterampilan berbeda yang jarang tumpang tindih dalam satu otak. Jika Anda membaca ini dan sedang mempertimbangkan untuk bergabung, berikut adalah posisi yang mungkin cocok untuk Anda:
C++ developers who know modern standards but also know when templates cause compilation bloat. You should be comfortable with raw pointers when necessary and smart pointers when appropriate, and you should care about binary size as much as syntax sugar.
Math experts who can derive backward-pass gradients for non-standard activations, reason about numerical stability in mixed-precision training, and optimize algorithms before they become code. If you can explain why a log-sum-exp trick matters, you are in the right mental space.
Low-level memory specialists who think about allocators, page faults, and NUMA topology. The engine needs memory pools for graph execution, scratch buffers for kernels, and strategies for reusing tensor storage across training steps without leaking or fragmenting.
Systems engineers who understand how a misplaced syscall can stall an entire training loop. Scheduling, I/O, and synchronization primitives are the glue that holds the math together.
You do not need to be a world-class specialist in all four areas. Most contributors will start by owning one kernel or one allocator and learning the rest as the architecture solidifies.
Architecture and Custom Math
The backend logic is being built collaboratively, and that starts with architecture debates. Will the engine use a static computation graph, where the entire model is defined and optimized before runtime? Or will it support eager execution with a tape for automatic differentiation? How will autodiff be represented—operator overloading, source transformation, or a graph IR? These decisions shape everything else.
Custom neural net math means more than reimplementing standard layers. It means the freedom to invent new ones. If you want a convolution variant with a non-standard sparse kernel or an activation function that has no name in the literature, you write the C++ forward and backward passes and plug them directly into the engine. There is no Python API to fight, no monkey-patching required. The math is the code, and the code is the interface.
How to Get Involved
If this resonates, the full project breakdown and current roadmap are documented in detail on the author’s Dev.to post. You can read the specifics, see what has been built so far, and understand exactly where help is needed.
Project details: https://dev.to/banana_cool/building-a-native-c-ai-engine-catai-from-scratch-looking-for-collaborators-l8m
There is also a Telegram group for anyone who wants to hang out, ask questions, or follow progress without committing to a pull request immediately.
Community: https://t.me/GyaanSetuAi
The Real Takeaway
The modern AI stack has become a black box. We treat frameworks like magic appliances: data goes in, model comes out, and we hope the opacity does not bite us at deployment. CatAI rejects that comfort. It is slower to build this way. You will write more code, debug more segfaults, and rethink assumptions that higher-level frameworks hide from you. But you will also understand why the machine behaves the way it does. In an industry where everyone is racing to abstract away the hardware, there is real value in going the other direction and touching the metal. That understanding is what separates someone who calls APIs from someone who builds systems.
