Il nostro stack GPU per NVIDIA e AMD, a parte alcuni pezzi minimi di firmware firmato, è 100% open source e puro Python, tranne per il compilatore. Non utilizza driver, framework o librerie dei fornitori. Ecco perché è così facile farlo funzionare su Mac. Per i compilatori, su AMD utilizziamo LLVM upstream, e su NVIDIA utilizziamo il compilatore NAK del progetto MESA. Abbiamo in programma di sostituire il compilatore con puro tinygrad tra un anno o due. Con RANGEIFY fuso, il nostro lavoro di abbassamento ora corrisponde allo stato dell'arte, stile TVM. Stiamo studiando ThunderKittens e TileLang per la velocità a quel livello, e dovremmo avere tutto pronto in 200 giorni per la scadenza del nostro contratto di addestramento AMD Llama 405B. A causa delle dimensioni ridotte di tinygrad e della sua natura completamente in Python, è la libreria ML più facile su cui fare progressi, ovvero la pendenza di miglioramento più veloce. Con lo stile Megakernel per la pianificazione, lo stile MODeL_opt per la pianificazione e lo stile E-graph per il simbolico, dovremmo superare lo stato dell'arte in termini di velocità di PyTorch e JAX. Se facciamo ciò, il vantaggio di NVIDIA è finito. Ci vogliono al massimo 1000 righe per aggiungere un nuovo acceleratore a tinygrad. E non intendo aggiungere un nuovo acceleratore con l'aiuto di un driver del kernel, di un compilatore e di librerie. Solo 1000 righe di software per *l'intero* acceleratore che parla direttamente sulle PCIe BAR, come sta facendo tinygrad con le GPU NVIDIA e AMD ora.
@geerlingguy O in realtà, AMD è ancora più facile. Basta installare il driver `extra/usbgpu/tbgpu` e AMD=1
@geerlingguy O in realtà, AMD è ancora più facile. Basta installare il driver `extra/usbgpu/tbgpu` e AMD=1. 0 prevede di supportare Intel a questo livello.
50,31K