tecnologia

Scienza e tecnologia

MegaHertz: Il Tempo ai Tempi del NES

categorie



Let's Dive into the Cycles, Speed, and Video Output Timing of the NES è un video della serie
Behind the Code di Displaced Gamers, comparsi precedentemente su queste pagine con
Punch Out !

Questa volta parliamo come in elettronica tutto sia un rapidissimo orologio fatto di mapper e interrupt, e tutto parte dall'oscillatore al quarzo che dà la velocità di clock. Per quanto riguarda l'uscita video ? Meglio tenersi stretti gli impulsi di sincronizzazione.


OpenFrameworks

categorie

openFrameworks

openFrameworks è stato progettato per funzionare come collante di uso generale e raggruppa diverse librerie di uso comune, tra cui:

openFrameworks creative coding: Getting started, compiling our first project
Jun Kiyoshi


Come Funziona ChatGPT

categorie

What Is ChatGPT Doing … and Why Does It Work


Quando ChatGPT scrive qualcosa come un saggio, ciò che fa è chiedersi ripetutamente "dato il testo fino a qui, quale dovrebbe essere la prossima parola ?",
Questa "parola" aggiunta si definisce "token", e potrebbe anche essere incompleto, per cui a volte possono essere "inventate nuove parole". Ad ogni passo si ottiene un elenco di parole con le relative probabilità.
Se a volte (a caso) si scelgono parole di rango inferiore, si può ottenere un saggio "più interessante".
Il parametro che regola questa scelta si chiama "temperatura", e determina la frequenza con cui vengono usate le parole di rango più basso; in molti casi una "temperatura" di 0,8 sembra essere l'ideale.

Con l'addestramento su un numero sufficiente di testi in lingua, si possono ottenere stime abbastanza buone non solo per le probabilità di singole lettere o coppie di lettere (2-grammi), ma anche per serie di lettere più lunghe. Ad esempio ci sono circa 40.000 parole ragionevolmente usate in inglese.
Esaminando un ampio corpus di testi in inglese (ad esempio qualche milione di libri, con un totale di qualche centinaio di miliardi di parole), possiamo ottenere una stima di quanto sia comune ogni parola.
E con questa si può iniziare a generare "intere frasi", in cui ogni parola è scelta indipendentemente a caso, con la stessa probabilità che appaia nel corpus.
Come per le lettere, possiamo iniziare a prendere in considerazione non solo le probabilità per le singole parole, ma anche quelle per le coppie o per gli n-grammi di parole più lunghi.

Supponiamo di voler sapere (come fece Galileo alla fine del 1500) quanto tempo impiegherà una palla di cannone lanciata da ogni piano della Torre di Pisa a toccare il suolo. Si potrebbe misurare in ogni caso e fare una tabella dei risultati. Immaginiamo di avere dei dati (un po' idealizzati) su quanto tempo impiega una palla di cannone a cadere da vari piani: come facciamo a capire quanto tempo impiega a cadere da un piano di cui non abbiamo dati espliciti?
In questo caso particolare, possiamo usare le leggi fisiche conosciute per calcolarlo.
E da questa linea retta possiamo stimare il tempo di caduta per qualsiasi piano.

Ma per ChatGPT dobbiamo creare un modello di testo in lingua umana del tipo prodotto da un cervello umano. E per una cosa del genere non abbiamo (almeno per ora) nulla di simile alla "matematica semplice".
Se il nostro obiettivo è produrre un modello di ciò che gli esseri umani possono fare nel riconoscimento delle immagini, la vera domanda da porsi è cosa avrebbe fatto un essere umano se gli fosse stata presentata una di quelle immagini sfocate, senza sapere da dove provenisse.
Abbiamo un "buon modello" se i risultati che otteniamo dalla nostra funzione concordano tipicamente con quello che direbbe un umano.

L'approccio attuale più popolare, e di successo, utilizza le reti neurali. Inventate negli anni '40, in una forma molto simile a quella attuale, le reti neurali possono essere considerate come semplici idealizzazioni del funzionamento del cervello.
La configurazione di un "diagramma di Voronoi" separa i punti nello spazio euclideo 2D; il compito di riconoscimento delle cifre può essere pensato come se facesse qualcosa di molto simile, ma in uno spazio a 784 dimensioni formato dai livelli di grigio di tutti i pixel di ogni immagine.

Soprattutto nell'ultimo decennio, ci sono stati molti progressi nell'arte dell'addestramento delle reti neurali.
Ma per lo più le cose sono state scoperte per tentativi ed errori, aggiungendo idee e trucchi che hanno progressivamente costruito una tradizione significativa su come lavorare con le reti neurali.
Questo non vuol dire che non esistano "idee strutturanti" rilevanti per le reti neurali.
Così, ad esempio, avere matrici di neuroni in 2D con connessioni locali sembra almeno molto utile nelle prime fasi di elaborazione delle immagini.
E le attuali reti neurali, con gli attuali approcci all'addestramento delle reti neurali, si occupano specificamente di matrici di numeri.

Ora c'è il problema di ottenere i dati con cui addestrare la rete.
Molte delle sfide pratiche legate alle reti neurali e all'apprendimento automatico in generale si concentrano sull'acquisizione o sulla preparazione dei dati di addestramento necessari. Quanti dati bisogna mostrare a una rete neurale per addestrarla a un compito particolare?
In generale, le reti neurali hanno bisogno di "vedere molti esempi" per allenarsi bene.
È inoltre necessario mostrare alla rete neurale variazioni dell'esempio.

La spiegazione approfondita nell'articolo: What Is ChatGPT Doing … and Why Does It Work?.

wikipedia

How to use AI to do practical stuff: A new guide


Stephen Wolfram: ChatGPT and the Nature of Truth, Reality & Computation | Lex Fridman Podcast

sd - s(earch) and d(isplace), il nuovo sed

categorie

sd, a new sed
Perché usare "sd" rispetto agli strumenti esistenti come "sed" ?
Il comando "sd" utilizza la sintassi delle espressioni regolari già nota da JavaScript, Python e Perl. Però senza avere a che fare con le stranezze di "sed" e "awk" e per diventare subito produttivi.

La "Modalità stringa-letterale" trova e sostituisce senza ricorrere alle regex. Non è più necessario ricordare quali caratteri sono speciali e devono essere evasi. E' facile da leggere, facile da scrivere.

Le espressioni di ricerca e sostituzione sono suddivise, il che le rende facili da leggere e scrivere. Non è più necessario fare i conti con gli slash non chiusi e quelli sfuggiti.

Le impostazioni predefinite sono scelte in modo intelligente e con buon senso, adattate all'uso quotidiano.

sd su github


Simple LLaMA Finetuner

categorie

Simple LLaMA Finetuner

Simple LLaMA Finetuner è un'interfaccia facile da usare per facilitare la messa a punto del modello linguistico LLaMA-7B utilizzando il metodo LoRA tramite la libreria PEFT (State-of-the-art Parameter-Efficient Fine-Tuning) su GPU NVIDIA di qualità.

Con un set di dati di piccole dimensioni e una lunghezza dei campioni di 256, è possibile eseguire questa operazione anche su una normale istanza di Colab Tesla T4.

Grazie a questa intuitiva interfaccia utente, è possibile gestire facilmente il dataset, personalizzare i parametri, addestrare e valutare le capacità di inferenza del modello LL.

Simple LLaMA Finetuner

some highlights of llama.cpp repo

Image Credit: Tydence Davis

Opinionate

opinionate stoicism vs existentialism


opinionate.io genera un dibattito tra due voci in base ad un argomento a scelta. Molto interessante per dei confronti rapidi su qualsiasi cosa.

La Conversazione Infinita
Filosofia

A seguire ecco un esempio sul tema "stoicismo o esistenzialismo":


Stoicista:
Lo stoicismo è una filosofia molto pratica che enfatizza l'autocontrollo, la razionalità e la virtù. Mantenendo un senso di controllo sulle nostre emozioni, possiamo affrontare più efficacemente le sfide della vita e raggiungere la pace interiore. Lo stoicismo fornisce un quadro chiaro per fare scelte difficili e navigare nella complessità della vita, aiutandoci a diventare persone migliori e a vivere una vita più soddisfacente.

Esistenzialista:
Se lo stoicismo può avere i suoi meriti, l'esistenzialismo offre un approccio più sfumato alla vita. Invece di cercare di controllare le nostre emozioni, l'esistenzialismo ci incoraggia ad abbracciarle pienamente e a trovare un significato nelle nostre esperienze. Accettando l'incertezza e l'imprevedibilità della vita, possiamo trovare un maggiore senso di scopo e di autenticità. L'esistenzialismo dà priorità all'individualità e alla libertà, permettendoci di creare i nostri valori e di vivere la vita alle nostre condizioni.

Stoicista:
Capisco il fascino dell'esistenzialismo che si concentra sull'autenticità, ma credo che lo stoicismo offra un approccio più equilibrato. Riconoscendo le nostre emozioni e lavorando per controllarle, possiamo raggiungere una maggiore chiarezza e consapevolezza di noi stessi. Lo stoicismo ci permette di rispondere alle sfide della vita in modo ponderato e razionale, anziché reagire impulsivamente. Questo può aiutarci a creare vite più significative e appaganti nel lungo periodo.

Esistenzialista:
Capisco il suo punto di vista, ma non credo che controllare le nostre emozioni sia sempre l'approccio migliore. L'esistenzialismo ci incoraggia a sperimentare pienamente le emozioni che nascono in risposta alle sfide della vita, siano esse gioia, tristezza o rabbia. Accogliendo le nostre emozioni, possiamo comprendere meglio noi stessi e il mondo che ci circonda. Questo può portare a un maggior senso di scopo e di realizzazione rispetto al semplice tentativo di reprimere le nostre emozioni.

Stoicista:
Sono d'accordo sul fatto che reprimere le emozioni non sia salutare, ma credo che lo stoicismo consista più nel riconoscerle e incanalarle in modo costruttivo che nel reprimerle completamente. Lavorando per controllare le nostre emozioni e rispondere alle sfide della vita in modo ponderato, possiamo trovare maggiore pace e felicità rispetto al reagire impulsivamente in base alle nostre reazioni emotive immediate. Lo stoicismo fornisce un quadro di riferimento chiaro per vivere la nostra vita in modo propositivo e significativo, che può aiutarci a raggiungere un'esistenza più soddisfacente.

Moderatore:
Dopo un dibattito coinvolgente e rispettoso, è chiaro che sia lo stoicismo che l'esistenzialismo hanno i loro meriti. Sebbene il debuttante B abbia sostenuto con forza la necessità di abbracciare le nostre emozioni e di trovare un significato nelle nostre esperienze, le argomentazioni del debuttante A a favore dell'autocontrollo e della razionalità hanno avuto la meglio. Pertanto, dichiaro lo Stoicista vincitore di questo dibattito.