1
00:00:00,001 --> 00:00:04,720
Benvenuto benvenuta, io sono Filippo Sozzi e stai ascoltando Avocati Mac Compendium.

2
00:00:04,720 --> 00:00:08,400
Compendium è un podcast in cui ti parlo.

3
00:00:07,980 --> 00:00:11,980
Delle mie esperienze quotidiane con la tecnologia, in particolare con quella Apple.

4
00:00:11,980 --> 00:00:16,139
Compendium fa parte del network Ramten Radio, la Radio Geek.

5
00:00:16,299 --> 00:00:22,620
Questa è la puntata 76, nella quale ti parlerò di come sono riuscito ad avere una finestra di contesto.

6
00:00:24,360 --> 00:00:28,120
Sul mio max studio M1 Max con 32GB di RAM.

7
00:00:28,120 --> 00:00:37,560
Ma prima sigla, alcune comunicazioni di servizio prima di iniziare.

8
00:00:37,920 --> 00:00:44,879
Ti segnalo innanzitutto che probabilmente e possibilmente potresti ascoltare dalla pubblicità inizio e chiusura del podcast.

9
00:00:44,879 --> 00:00:47,199
La pubblicità viene inserita automaticamente.

10
00:00:48,360 --> 00:00:56,040
da Spreaker, la piattaforma su cui poi funziona Runtime Radio e aiuta a finanziare il network Runtime Radio

11
00:00:55,600 --> 00:01:05,119
Come al solito sto registrando la puntata il giorno prima dell'uscita, quindi sono abbastanza malmesso, non c'è la versione YouTube.

12
00:01:04,860 --> 00:01:15,020
Lo segnalo, ho addirittura nell'ultimo periodo ho avuto un po' di problemi, quindi ho dovuto rinviare la lezione il 27 febbraio sul workshop sull'I.

13
00:01:15,000 --> 00:01:24,840
Ripartiremo dal 13 di marzo e quindi poi le registrazioni che farò come al solito le condividerò nella newsletter.

14
00:01:24,820 --> 00:01:33,540
le note dell'episodio ti segnalo solo che nella puntata del podcast le troverai il link diretto alle note dell'episodio

15
00:01:33,540 --> 00:01:36,660
che invece sono su avvocatemac.

16
00:01:36,820 --> 00:01:41,060
it giusto un po' di informazioni perché stanno cambiando alcune cose

17
00:01:41,800 --> 00:01:55,080
Altre comunicazioni di servizio, due, perché nel mentre diciamo sono successe cose, nel mentre stavo preparando la mappa mentale di questa puntata e la sto registrando, diciamo.

18
00:01:54,660 --> 00:02:06,260
Sicuramente ho in previsione di sperimentare con gli agenti EA locali, quindi per ora ho fatto dei test su Open Clow.

19
00:02:06,340 --> 00:02:16,739
Non sono riuscito a farlo funzionare in una configurazione sicura, mentre ho avuto i primi risultati positivi con Agent Zero.

20
00:02:16,360 --> 00:02:27,400
o agente zero, bisogna vedere come lo si denomina ho fatto qualche test non positivo ma ci sta, voglio dire invece

21
00:02:27,680 --> 00:02:38,880
Perché Luca, che ringrazio, mi ha segnalato Craft Agent, che è sostanzialmente un agente AI fatto da quelli che hanno sviluppato Craft.

22
00:02:38,840 --> 00:02:47,640
Anche questo è open source, diciamo è interessante, soprattutto l'interfaccia è molto bellina per gli utenti Apple.

23
00:02:47,360 --> 00:02:53,440
Ma anche qui ho visto che utilizzare modelli locali è abbastanza complicato.

24
00:02:53,440 --> 00:03:02,080
Comunque, nel prossimo futuro sicuramente farò degli approfondimenti negli ultimi due giorni, infatti dovevo registrare questa puntata qualche giorno fa.

25
00:03:01,900 --> 00:03:05,739
Poi, diciamo, sono entrato nel tunnel come si suol dire.

26
00:03:05,739 --> 00:03:16,299
Invece ho sviluppato un'applicazione per anonimizzare i documenti, PDF e file tipo DOCX, ODT e così via.

27
00:03:16,160 --> 00:03:27,920
utilizzando Cloud Code è già pubblica nel senso che l'ho pubblicata su GitHub non è ancora perfetta al 100% io la chiamerei alfa mettiamola in questi termini

28
00:03:28,020 --> 00:03:32,340
Ma appunto sono riuscito in due giorni a sviluppare un'applicazione relativa.

29
00:03:32,340 --> 00:03:32,420
.

30
00:03:32,500 --> 00:03:36,980
cioè complessa no, però diciamo a strutturare tutto il progetto

31
00:03:36,940 --> 00:03:48,540
e ovviamente te ne parlerò nelle prossime puntate nelle note dell'episodio però se sei interessato ti metterò il link al repository dove trovi anche le varie release

32
00:03:48,640 --> 00:04:00,000
le varie creazioni perché sto implementando le varie funzioni pian pianino e devo dire la verità sono rimasto molto stupito dalla cosa ma devo ancora rifletcerci a modo diciamo che negli ultimi due giorni

33
00:04:00,000 --> 00:04:10,480
Però in due giorni ho sviluppato un'applicazione multipiattaforma per anonizzare documenti perlegali, quindi direi che non è male, ovvio che non è.

34
00:04:10,480 --> 00:04:21,600
non è un prodotto commerciale anzi non mai lo sarà fa il suo porco mestiere come direi io e con due o tre ulteriori raffinature

35
00:04:21,760 --> 00:04:34,560
diciamo secondo me è un'applicazione che possono potenzialmente usare in molti comunque te ne parlerò in dettaglio sia sul sito che probabilmente con dei video dove spiegherò come funziona e così via

36
00:04:34,500 --> 00:04:45,780
Però te l'accennavo per i super curiosi che non sono iscritti al canale Telegram di Avvocatiamek, diciamo c'è questa possibilità, anzi sto cercando cosiddetti beta testa, nel senso che.

37
00:04:45,900 --> 00:04:54,620
Adesso per ora alcuni amici la stanno provando per vedere i casi concreti e per vedere poi se tutto funziona come deve perché ovviamente io l'ho sviluppata.

38
00:04:54,240 --> 00:05:02,480
molto velocemente appunto in due giorni poi sviluppata è una parola grossa nel senso ho usato cloud code per svilupparla mettiamola così

39
00:05:02,360 --> 00:05:09,560
Comunque, bando alle chante, finite le comunicazioni di servizio, adesso entriamo nel vivo della puntata.

40
00:05:09,560 --> 00:05:12,360
Una piccola premessa a tutti.

41
00:05:12,020 --> 00:05:20,340
la vicenda perché oggi ti parlo di questa cosa e perché appunto settimana due settimane fa credo mentre sto registrando

42
00:05:20,539 --> 00:05:23,900
o mi si è aperto un nuovo mondo, mettiamole in questi termini.

43
00:05:23,900 --> 00:05:30,780
E diciamo che appunto se non hai strumenti per anonimizzare i documenti, e quindi.

44
00:05:31,320 --> 00:05:38,840
Se non puoi dare alle intelligenze artificiali online documenti anonimizzati

45
00:05:39,039 --> 00:05:48,159
non le puoi utilizzare secondo me, poi dopo ognuno la pensa alla sua maniera ma stringendo il concetto è che da professionista, ma non solo,

46
00:05:48,580 --> 00:05:50,260
questo non è fattibile.

47
00:05:50,260 --> 00:05:59,460
Il problema qual è sempre stato per me è che utilizzando così modelli migliori sul Mac Studio

48
00:06:00,140 --> 00:06:03,740
ho sempre avuto poco contesto a disposizione.

49
00:06:03,740 --> 00:06:11,500
Per elaborare grosse modi di documenti in locali, quindi in rag e non solo, è necessario ovviamente un contesto grosso.

50
00:06:11,480 --> 00:06:18,680
E ovviamente questo contesto è necessario soprattutto in ambito legale, dove effettivamente

51
00:06:19,020 --> 00:06:27,420
Casomai fare un'analisi di un documento è relativamente semplice, se un documento è di 3, 4, 5 pagine.

52
00:06:26,800 --> 00:06:35,599
Ma già se inizia ad essere 10, 15, 20 o iniziano ad esserci 3-4 documenti su cui lavorare, ecco questo diventa difficile.

53
00:06:35,820 --> 00:06:47,260
Nella sostanza, giusto per farti un esempio, i modelli più performanti attualmente che posso girare io, lo ripeto, ho 32 GB di RAM

54
00:06:47,360 --> 00:06:55,360
È ovvio che se tu ne hai solo 16 o addirittura 8, i discorsi sono ancora peggiori, mettiamoli in questi termini.

55
00:06:55,360 --> 00:07:00,000
I modelli che riesco a far già io sono da 32 a 35

56
00:07:00,780 --> 00:07:13,580
miliardi di parametri che abitualmente sono quantizzati cioè sono ridotti comunque nei loro pesi perché se no altrimenti non sarebbe possibile quindi sono già una versione un po' più stupida mettiamola in questi termini

57
00:07:13,560 --> 00:07:22,040
ma che occupano abitualmente intorno ai 20-24 GB di modello, quindi di parametri, all'interno proprio del computer.

58
00:07:21,600 --> 00:07:31,760
e ovviamente il modello deve essere fatto girare all'interno della RAM del Mac sostanzialmente o comunque della GPU che si sta utilizzando

59
00:07:31,760 --> 00:07:42,400
E quindi su 32 GB di RAM che ho per il mio Mac, 2024 vanno dedicati direttamente.

60
00:07:44,800 --> 00:07:46,000
Al modello.

61
00:07:46,000 --> 00:07:47,199
Quindi cosa succede?

62
00:07:47,199 --> 00:07:50,160
Che restano le briciole per il contesto.

63
00:07:50,160 --> 00:07:54,880
Se si considera appunto che facciamo i conti con il mio Mac Studio

64
00:07:54,860 --> 00:08:03,100
Ho 32 GB di RAM, almeno 5 devono essere lasciati e dedicati al sistema operativo e quindi sostanzialmente.

65
00:08:03,240 --> 00:08:14,920
32-24 meno 5 in pratica ho 3 giga potenzialmente da dedicare al contesto che qualcosa è ma non è tanta roba mettiamola in questi termini

66
00:08:14,720 --> 00:08:24,960
Per cui uno dei limiti che mi sono sempre trovato ad affrontare lavorando col Make Studio e con modelli di grosse dimensioni per il mio Mac Studio

67
00:08:25,320 --> 00:08:30,520
è sempre stato quello di poter arrivare a contesti intorno ai 10.

68
00:08:30,680 --> 00:08:33,560
000 token più o meno.

69
00:08:33,419 --> 00:08:34,539
1015.

70
00:08:34,539 --> 00:08:41,819
Poi ovviamente più il modello è chiamiamolo così, piccolo, più posso dargli spazio a livello di token.

71
00:08:41,819 --> 00:08:47,899
Giusto per farti l'esempio, perché secondo me ne ho parlato nella scorsa puntata, ministra il 14B.

72
00:08:47,959 --> 00:08:50,279
Potevo dare un contesto intorno ai 20.

73
00:08:50,360 --> 00:08:56,440
000 token proprio perché il modello era da 14 miliardi di parametri,

74
00:08:55,780 --> 00:09:09,380
e anche se avevo scelto una quantizzazione un po' più alta cioè 8 bit comunque mi occupava intorno ai 10 GB quindi avevo comunque ben più roba da dedicare al contesto

75
00:09:09,520 --> 00:09:12,400
Bene, cosa ho scoperto sostanzialmente?

76
00:09:12,400 --> 00:09:17,200
Beh, tutto è nato, diciamo, dalla mia solita pregherizia, nel senso che

77
00:09:17,000 --> 00:09:30,920
L'amico Roberto Alma ogni tanto mi snocciala i conti di quanto occupa il contesto nella RAM e così via, ma oggettivamente ogni volta che me li ha snocciolati io sono entrati da un orecchio e sono usciti dall'altra.

78
00:09:30,400 --> 00:09:31,920
Quindi una volta mi sono.

79
00:09:31,920 --> 00:09:32,000
.

80
00:09:32,000 --> 00:09:36,240
ho deciso di far fare i conti ovviamente a Perplexity.

81
00:09:36,240 --> 00:09:38,720
E in questa attività, diciamo.

82
00:09:39,480 --> 00:09:48,680
Ho specificato per Plexity tutta la mia configurazione, quindi che avevo un Max Studio configurato in una certa maniera, che per OLAM avevo questi parametri e così via.

83
00:09:48,680 --> 00:09:53,480
E qui ho scoperto tutta una serie di informazioni di cui ti voglio parlare.

84
00:09:53,579 --> 00:10:06,699
e che hanno dato poi origine a questa scoperta perché effettivamente sono riuscito a far girare dei contesti dai 64 ai 120 milioni di token per modello.

85
00:10:06,300 --> 00:10:19,100
Questo vuol dire avere la possibilità di ovviamente far girare, avere dei contesti che iniziano a essere interessanti, mettiamoli in questi termini.

86
00:10:18,759 --> 00:10:27,000
e che quindi mi permettono di fare cose che prima non ero in grado di fare sui sistemi locali.

87
00:10:27,000 --> 00:10:32,279
Veniamo quindi ai trucchi per massimizzare la RAM a disposizione del contesto.

88
00:10:31,900 --> 00:10:40,300
Allora, innanzitutto troverai nelle note dell'episodio un comando per rendere più disponibile maggior RAM alla GPU.

89
00:10:40,300 --> 00:10:42,620
Nella sostanza cosa succede?

90
00:10:42,840 --> 00:10:49,800
Nei Mac, soprattutto nei Mac con grandi quantità di RAM, diciamo, solo il 70%

91
00:10:50,380 --> 00:10:55,420
di questa RAM abitualmente da sistema operativo può essere dedicata alla GPU.

92
00:10:55,420 --> 00:11:04,060
La RAM del MAC è una RAM condivisa tra CPU, quindi quella che fa i calcoli base.

93
00:11:03,400 --> 00:11:11,160
e la GPU che invece è il processore grafico che nel mondo dell'intelligenza artificiale è quello che viene utilizzato di più.

94
00:11:11,160 --> 00:11:12,920
Apro e chiudo una parentesi

95
00:11:13,460 --> 00:11:24,820
Giusto solo per darti un'idea, visto che questa puntata esce in continuità a stretto giro, sono usciti gli M5 Pro e Max.

96
00:11:24,459 --> 00:11:34,700
e su questi nuovi chip di Apple è stato aggiunto un pezzo per appunto avvelocizzare alcuni passaggi dell'intelligenza artificiale.

97
00:11:34,700 --> 00:11:36,140
Oggi non ne parleremo.

98
00:11:36,560 --> 00:11:48,640
o ne parleremo incidentalmente per dire due cose però ti segnalo proprio che Apple sta lavorando proprio per ottimizzare questi colli di bottiglia e

99
00:11:48,860 --> 00:11:57,980
Un altro modo appunto c'è questo comando che ovviamente va dato a terminale, non te lo dico neanche perché se sei interessato a lanciarlo.

100
00:11:58,360 --> 00:12:01,560
E lo troverai nelle note dell'episodio.

101
00:12:01,560 --> 00:12:05,640
Questo comando sostanzialmente permette di dare maggiore RAM

102
00:12:07,020 --> 00:12:11,500
alla GPU, quindi andare oltre il livello base.

103
00:12:11,740 --> 00:12:16,860
Io abitualmente portavo a 27 GB la RAM dedicata

104
00:12:16,860 --> 00:12:26,380
alla GPU recentemente ho fatto alcune modifiche e credo di essere arrivato addirittura a 30 gigabyte quindi dei 32 GB può prenderne

105
00:12:26,920 --> 00:12:28,680
fino a 30.

106
00:12:28,680 --> 00:12:39,480
Ma ovviamente attenzione, più si va in là, mettiamola in questi termini, e più c'è la possibilità che il computer abbia dei problemi sostanzialmente, perché

107
00:12:39,740 --> 00:12:48,700
parte della RAM va per forza di cose al sistema operativo quindi ci possono essere instabilità del sistema attualmente mentre scrivo dai miei test non ho notato cose

108
00:12:49,540 --> 00:12:53,860
Clamorose, però te lo segnalo perché è importante.

109
00:12:53,860 --> 00:13:04,100
Io appunto il consiglio che ti do è comunque chiedere a un LLM cosa è possibile fare con la tua configurazione, quindi dali proprio tutta la tua configurazione, cioè come è strutturato il tuo computer.

110
00:13:03,700 --> 00:13:07,700
e dove si riesce a ottimizzare le cose.

111
00:13:07,860 --> 00:13:15,060
Quindi ottimizzazione, cioè dare il più RAM possibile ai large linguaggio mode è il primo trucco.

112
00:13:14,459 --> 00:13:19,100
Il secondo trucco è ottimizzare le impostazioni di Allama.

113
00:13:19,100 --> 00:13:24,060
Anche qui era una cosa che avevo già fatto ma che non avevo capito bene come funziona.

114
00:13:24,060 --> 00:13:27,100
Qui è un po' tecnico, mettiamolo in questi termini.

115
00:13:26,759 --> 00:13:39,480
ma è importante discuterne poi anche qui se c'è interesse casomai farò farò un articolo un po' più dettagliato dove si può leggere dove si può capire però nella sostanza

116
00:13:39,839 --> 00:13:54,399
Oltre a quantizzare i modelli, quindi renderli, chiamiamoli così, un po' più stupidi, ma ovviamente modelli più grossi possono a questo punto, anche se un po' più stupidi, possono girare su un computer che abitualmente non li avrebbe potuti ospitare.

117
00:13:55,320 --> 00:13:58,360
Si può quantizzare anche il contesto.

118
00:13:58,360 --> 00:14:03,399
Ovviamente anche qui il contesto a questo punto non è più stupido perché non può esserlo.

119
00:14:03,140 --> 00:14:12,660
ma è più blando, cioè è meno preciso, mettiamola in questi termini, e quindi ovviamente c'è un trade-off sostanzialmente, cioè

120
00:14:12,860 --> 00:14:19,500
Posso utilizzare più contesto, quindi posso buttarli dentro più informazioni, ma queste informazioni non sono così precise.

121
00:14:19,500 --> 00:14:26,540
È ovvio che è una cosa, anche qui si fa tutto con dei comandi, purtroppo a terminale, da quello che ho visto io.

122
00:14:27,440 --> 00:14:35,760
visto che recentemente sto utilizzando un po' di più LM Studio, teoricamente l'M Studio ha alcune funzioni che

123
00:14:36,740 --> 00:14:48,340
che possono essere ottimizzate diciamo da interfaccia grafica sostanzialmente per cui se sei interessato casualmente ti suggerisco di approfondire anche qui

124
00:14:49,200 --> 00:14:57,520
LM Studio, a me non piace particolarmente, ma adesso appunto mentre facevo tutti questi esperimenti con la mia applicazione di.

125
00:14:57,820 --> 00:15:09,900
anonimizzazione utilizzando anche l'arger language model, l'amico Alberto Arma appunto mi ha suggerito di anche testare lì perché è più semplice vedere alcune cose quindi riuscire a fare un po' di.

126
00:15:10,020 --> 00:15:14,020
di controllo dei flussi di lavoro dell'applicazione.

127
00:15:14,020 --> 00:15:21,620
L'ultimo trucco che anche qui è tutto merito di Roberto sono alcuni modelli cosiddetti performanti

128
00:15:21,300 --> 00:15:30,660
E qui bisogna parlare di alcune cose un po' tecniche, ma appunto è importante capirci.

129
00:15:30,700 --> 00:15:41,820
Diciamo, esistono due tipologie di modelli di large language model, i modelli cosiddetti densi, cioè in cui vengono utilizzati tutti i parametri del modello.

130
00:15:41,720 --> 00:15:51,560
e invece i modelli che si chiamano Mixture of Expert, cioè modelli dove ci sono

131
00:15:52,180 --> 00:16:03,540
chiamiamoli così una squadra di 35 specialisti, mettiamoli in questi termini, che vengono attivati solo in base al contesto.

132
00:16:02,940 --> 00:16:11,260
chiamiamolo così della risposta quindi pur avendo pur essendo un modello di grosse dimensioni o di dimensioni maggiori rispetto ad altre

133
00:16:11,440 --> 00:16:15,680
si attivano non tutti i parametri contemporaneamente ma alcuni parametri.

134
00:16:15,680 --> 00:16:21,920
Abitualmente un modello tradizionale, quello denso, fa lavorare tutti i 35

135
00:16:23,080 --> 00:16:34,360
specialisti in contemporanea per ogni risposta invece l'MOE per ogni token generato si attiva solo due o tre specialisti scelti dinamicamente

136
00:16:34,660 --> 00:16:40,100
E questi e gli altri dormono e non consumano memoria in elaborazione.

137
00:16:40,100 --> 00:16:41,380
Questo cosa vuol dire?

138
00:16:41,380 --> 00:16:43,540
Che modelli di grosse dimensioni

139
00:16:43,740 --> 00:16:53,340
o di dimensioni maggiori rispetto ad altri, diciamo, quindi con maggiore capacità anche, che è così, intellettuale, anche se così non è, possono.

140
00:16:54,040 --> 00:17:03,320
possono invece essere fatti girare e performare meglio, quindi dare anche delle risposte più velocemente rispetto ad altri.

141
00:17:02,860 --> 00:17:12,140
Io attualmente sto utilizzando, e ti consiglio di utilizzare, due modelli che ho trovato notevolmente validi.

142
00:17:12,720 --> 00:17:15,280
sono il Queen 3.

143
00:17:15,280 --> 00:17:22,559
5 da 35 miliardi di parametri, ha 35 miliardi di parametri totali ma ne attiva solo 3 miliardi per token

144
00:17:22,839 --> 00:17:33,480
e sostanzialmente su Maple Silicon richiede circa 21-22 GB di RAM invece dei 70 GB che servirebbero per un modello

145
00:17:33,660 --> 00:17:35,100
denso equivalente.

146
00:17:35,100 --> 00:17:42,060
Ti segnalo tra l'altro che Queen Punto 3 ha avuto una serie di vicessitudini notevoli.

147
00:17:41,700 --> 00:17:55,380
Quello che ci interessa qui è dire che oltre al modello da appunto 35 miliardi di parametri, ce ne sono i modelli della stessa classe, diciamo, ce ne sono i modelli più piccoli, ovviamente i modelli più piccoli sono meno performanti.

148
00:17:54,800 --> 00:18:07,200
ma in base al computer che hai può essere interessante perché ci sia quello da 4 miliardi di parametri, da 9 e da 27 miliardi di parametri, ovviamente oltre 35 c'è quello da 122

149
00:18:07,200 --> 00:18:16,639
e poi addirittura quello full che addirittura è 397 miliardi di parametri ma ovviamente ci vogliono dei computer decisamente diversi mettiamoli in questi termini

150
00:18:16,660 --> 00:18:22,580
Giusto per darti un'idea, quello da 122 miliardi di parametri occupa 21 GB.

151
00:18:26,419 --> 00:18:32,419
ci vuole un computer, diciamo, ci vuole un Mac Studio con 128 GB di RAM sostanzialmente per farlo girare.

152
00:18:32,419 --> 00:18:34,980
Più ci sono parametri più il risultato

153
00:18:35,919 --> 00:18:45,200
che ottieni dall'inferenza è migliore però già con quello da 35 miliardi di parametri devo dire la verità ho ottenuto dei risultati interessanti

154
00:18:45,540 --> 00:18:53,540
L'altro e con velocità di generazione dei token, perché anche questo è importante, piuttosto buone.

155
00:18:53,540 --> 00:18:55,540
Quindi comunque con risposte.

156
00:18:55,480 --> 00:19:05,800
non paragonabili forse agli LLM online ma comunque sufficientemente veloci da ricevere delle risposte nel giro di qualche minuto ok quindi

157
00:19:06,679 --> 00:19:16,919
anche qui utilizzabile diciamo per fare svariate cose e l'altro modello molto interessante che doveva essere di Nvidia è il nemotron 3 nano

158
00:19:17,000 --> 00:19:25,880
che utilizza anche qui stesso principio, ha 30 miliardi di parametri, ma ne usa solo 3 attivi per ogni token.

159
00:19:25,880 --> 00:19:28,040
Appunto grazie alla sua architettura

160
00:19:28,480 --> 00:19:39,120
hybrid latent Moe qui in punto 3, piccola parentesi, aggiunge un'ulteriore ottimizzazione esclusiva, cioè il 65% dei layer

161
00:19:39,940 --> 00:19:46,980
Di dei parametri, usa l'attenzione lineare tramite il datagate, tramite il

162
00:19:47,419 --> 00:20:00,700
Gated Delta Network, invece, la classica full attention, questa riduce ancora drasticamente la KV cake, ovvero la memoria temporanea che il modello accumula man mano che legge il contesto.

163
00:20:01,820 --> 00:20:10,460
precisazione, sì, sto utilizzando tutta una serie di informazioni abbastanza dettagliate e me ne scuso, ma purtroppo.

164
00:20:10,540 --> 00:20:18,460
se si vuole spremere il massimo diciamo dall'hardware che si ha a disposizione bisogna anche conoscere bene questi nuovi strumenti e queste.

165
00:20:18,460 --> 00:20:18,780
.

166
00:20:18,760 --> 00:20:27,320
queste nuove funzioni alcune precisazioni 1 purtroppo gli sviluppatori di Queen che sono Alibaba

167
00:20:27,760 --> 00:20:32,160
C'è stato un problema in paradiso, come si suol dire, Queen 3.

168
00:20:32,160 --> 00:20:37,360
5 forse è uno dei migliori modelli open in circolazione ad oggi.

169
00:20:37,120 --> 00:20:47,760
Ma sostanzialmente buona parte degli sviluppatori se n'è andata da Queen e quindi probabilmente rimarrà un oggetto interessante in questo periodo.

170
00:20:47,620 --> 00:20:56,820
ma non vedrà futuri sviluppi e quindi questo è da tenere comunque presente però ovviamente una volta che appunto

171
00:20:57,640 --> 00:21:08,680
si sono scoperte queste tecniche e sono state utilizzate per Gianà un modello open abitualmente altri modelli poi seguono la vicenda

172
00:21:08,800 --> 00:21:19,600
È ovvio che tutte queste informazioni bisogna digerirle, io ho cercato anche attraverso l'intelligenza artificiale di rendertele più semplici da digerire.

173
00:21:19,279 --> 00:21:27,120
ma vanno approfondite perché appunto bisogna un minimo capire il loro funzionamento e utilizzarle con.

174
00:21:27,460 --> 00:21:29,060
Cognizione di causa.

175
00:21:29,060 --> 00:21:39,540
La Kivi Cash o KV Cash è sostanzialmente la cash del modello e del pensiero del modello.

176
00:21:39,519 --> 00:21:46,320
E nella sostanza una cosa da tenere presente è che più è grosso il contesto, più quindi generato

177
00:21:47,860 --> 00:21:56,980
il pensiero gli è stato dato un prompt di grosse dimensioni più il modello cioè più il Mac soprattutto rallenta

178
00:21:57,800 --> 00:21:58,680
Più fa fatica.

179
00:21:58,680 --> 00:22:06,760
Quindi è ovvio che anche qui, quando si utilizzano i contesti grossi, attenzione, perché ci mette un sacco di tempo.

180
00:22:06,760 --> 00:22:11,800
Giusto per farti un esempio, perché ho fatto sempre con Roberto, abbiamo fatto degli esperimenti.

181
00:22:11,460 --> 00:22:14,420
mi ha dato un prompt da 86.

182
00:22:14,580 --> 00:22:22,740
000 token e non mi ricordo più se Nemotron ci ha messo 18 minuti a dare la risposta finale

183
00:22:22,600 --> 00:22:24,120
invece Quen 3.

184
00:22:24,120 --> 00:22:36,280
5 ci ha messo 32 minuti quindi anche qui è ovvio che più cresce il contesto più questi strumenti cioè sono performanti perché appunto una cosa del genere non sarei mai riuscita a farla

185
00:22:36,000 --> 00:22:49,680
Sul mio Mac Studio, ma il computer viene spremuto al massimo della sua potenza e quindi non aspettate cose clamorose senza avere dei.

186
00:22:50,600 --> 00:23:00,600
dei trade-off come si suol dire quindi questi sono i concetti di base come ho quindi sbloccato la situazione come ti dicevo appunto ho messo insieme cose che già sapevo sull'IA

187
00:23:00,600 --> 00:23:09,880
ma che non avevo mai capito in dettaglio e un po' spero di avertelo spiegato infatti appunto più che altro è stato

188
00:23:10,980 --> 00:23:22,500
È stato chiedere di fare i conti, diciamo, a Perplexity per ottimizzare alcune cose, infatti, sostanzialmente

189
00:23:22,679 --> 00:23:31,400
quando ho fatto questa cosa e quando gli ho dati i parametri di configurazione ho scoperto per esempio che anche qui,

190
00:23:30,460 --> 00:23:40,060
facendo dei compromessi ovviamente per il model di lavorazione diciamo o comunque di performance

191
00:23:40,220 --> 00:23:42,140
potevo avere un contesto maggiore.

192
00:23:42,140 --> 00:23:45,580
In particolare cosa mi ha detto l'intelligenza artificiale?

193
00:23:45,660 --> 00:23:52,620
Innanzitutto che io avevo messo come lavori paralleli di Olama

194
00:23:53,000 --> 00:24:04,840
quattro lavori paralleli in contemporanea volendo questo però vuol dire che se è vero che da una parte un lama può lavorare quattro prompt in contemporanea chiamiamole così anche qui

195
00:24:05,140 --> 00:24:16,660
oggettivamente sulla mia macchina era poco fattibile mettiamola così e tra l'altro cuocendo di poi io non ho mai utilizzato questa funzione cioè raramente lanciavo due prompt in contemporanea

196
00:24:16,500 --> 00:24:25,620
Abbassandole a 1 però poteva aumentare drasticamente il contesto, quindi la RAM dedicata al contesto

197
00:24:26,120 --> 00:24:34,120
per quel singolo compito quindi ho abbassato a uno appunto i lavori paralleli di Olama

198
00:24:34,419 --> 00:24:42,820
e ho ridotto la KV cache a 8 bit, addirittura errivato a 4 bit

199
00:24:43,140 --> 00:24:56,500
Però appunto facendo poi degli approfondimenti sostanzialmente ho visto, il consiglio che mi ha dato l'intelligenza artificiale è quello di mantenerla a 8, che comunque si guadagna contesto ma si riesce a fare cose interessanti.

200
00:24:56,260 --> 00:25:05,780
Giusto per darti un'idea, quantizzando con un modello quantizzato a 4K, a 4 bit

201
00:25:06,240 --> 00:25:15,840
e che vi cache a 4 bit con solo un modello parallelo riuscivo su certi modelli ad arrivare

202
00:25:16,160 --> 00:25:22,880
a utilizzare un contesto da 256.

203
00:25:22,960 --> 00:25:24,080
000 parametri

204
00:25:24,419 --> 00:25:26,660
che non è affatto male.

205
00:25:26,660 --> 00:25:34,500
Addirittura su alcuni se il modello lo permetteva perché non tutti i modelli hanno la possibilità di gestire questo contesto

206
00:25:34,679 --> 00:25:38,280
potevo arrivare addirittura a 384.

207
00:25:38,440 --> 00:25:40,440
000 di contesto.

208
00:25:40,440 --> 00:25:46,840
E questo ovviamente mi apre potenzialmente tutta una serie di opzioni.

209
00:25:46,500 --> 00:25:58,740
Vediamo però, giusto per darti un'idea più specifica, che cos'è la KV Cache e Key Value Cache è la memoria di lavoro del modello durante la generazione del testo.

210
00:25:58,300 --> 00:26:07,420
Ogni volta che il modello legge i token precedenti, quindi tutta la conversazione o il tuo documento, calcola dei vettori matematici chiamati chiavi.

211
00:26:07,160 --> 00:26:18,680
appunto K e valori V per ciascun token per ogni layer di attenzione invece di ricalcolare ogni volta che genera un nuovo token li salva appunto in questa cache

212
00:26:18,400 --> 00:26:28,320
e quindi velocizza poi tutte le operazioni nella sostanza quando ho creato questo prompt te lo leggo velocemente perché il prompt è relativamente semplice poi probabilmente

213
00:26:29,380 --> 00:26:38,580
si può migliorare ma il prompt è questo, ragiona passo passo e segui un filo logico, il contesto è un Mac Studio M1 Max con 30 GB di RAM

214
00:26:38,660 --> 00:26:50,260
Queste sono le impostazioni di OLAM nel file zshrc che è sostanzialmente il file di configurazione della shell del terminale di.

215
00:26:50,900 --> 00:27:03,620
di MECOS, adesso sostanzialmente Olama Nam Run è 1, Olama Flash Attention è 1 e Olama Kivi Cache Type è Q80

216
00:27:04,000 --> 00:27:10,240
Ok, adesso te l'ho letto velocemente, poi eventualmente ti metterò il prompt nell'altro episodio.

217
00:27:10,240 --> 00:27:16,480
Ho anche aumentato la RAM a disposizione della GPU con questo comando, il comando che ti raccontavo.

218
00:27:16,220 --> 00:27:26,380
Qui nel caso specifico era arrivato a 27 GB, ma addirittura in una successiva conversazione mi ha detto che potevo tirare fino a 30 sostanzialmente.

219
00:27:27,059 --> 00:27:28,580
Quanto contesto posso avere?

220
00:27:28,580 --> 00:27:36,260
Fammi i conti e spiegali in modo preciso, sto usando il modello e gli dicevo, solitamente addirittura gli mettevo il link

221
00:27:36,620 --> 00:27:45,740
Per perplexity gli mettevo il link alla libreria dei modelli di Olama e nel caso specifico gli dicevo OQEN 3.

222
00:27:45,740 --> 00:27:47,740
535B.

223
00:27:47,260 --> 00:27:58,220
Quindi in questa maniera ovviamente il Large Language Model sapeva anche come funzionava lo specifico modello e quindi mi ha fatto i budget della memoria.

224
00:27:58,040 --> 00:28:07,880
e mi ha detto in pratica cosa potevo utilizzare come quantità di RAM dedicata alla singola cosa.

225
00:28:07,460 --> 00:28:21,700
Nella sostanza, rifacendo i conti con questo sistema, diciamo, potevo arrivare tranquillamente a 27 milioni di token se non utilizzavo quello a 8 bit.

226
00:28:21,720 --> 00:28:35,720
e appunto recentemente li ho fatto fare con la cache, la Kiwi Cache a 4 bit, addirittura posso utilizzare dei contesti veramente veramente enormi.

227
00:28:35,560 --> 00:28:49,640
È ovvio che se vado a 4 bit, cioè se ho bisogno di avere i risultati perfetti diciamo, è meglio andare su 8 bit, infatti io attualmente la tengo a 8 bit di base.

228
00:28:49,440 --> 00:29:00,159
Però se ho bisogno di lavorare in locale con un contesto enorme, a questo punto la tiro giù a 4 bit e riesco a ottimizzare.

229
00:29:00,159 --> 00:29:04,000
Quindi anche qui è importante sapere questi trucchetti, diciamola.

230
00:29:04,540 --> 00:29:12,460
perché in base a quello che devo fare, cioè ho veramente un documento enorme o una serie di documenti enormi che voglio fare analizzare

231
00:29:12,740 --> 00:29:20,500
allora posso andare a 4 bit sapendo però che l'analisi sarà un meno precisa meno puntuale

232
00:29:21,040 --> 00:29:28,160
di quella 8 bit, ma ovviamente se fosse 8 bit non potrei metterci dentro tutto quel contesto

233
00:29:28,100 --> 00:29:31,140
e quindi è ovvio che addirittura non riuscirei a farlo.

234
00:29:31,140 --> 00:29:42,740
Quindi ovviamente c'è da valutare appunto questo discorso di scegliere qual è l'opzione migliore per lo specifico compito e la specifica attività.

235
00:29:42,200 --> 00:29:46,840
Alcune avvertenze finali, ma ne ho già parlato, quindi andiamo veloci.

236
00:29:46,840 --> 00:29:50,519
Quantizzare vuol dire sacrificare informazione e precisione del modello.

237
00:29:50,519 --> 00:29:56,120
Non è quindi un miracolo, ma è un baratto sostanzialmente, capacità conto precisione.

238
00:29:56,120 --> 00:30:10,440
Come ti dicevo anche qui prima, i tempi di risposta aumentano a dismisura, ne ho parlato probabilmente nelle scorse puntate, ma gli approccili con sono lenti nel caricamento del prompt.

239
00:30:10,540 --> 00:30:15,580
ma hanno una buona velocità nell'inferenza, cioè nella produrre invece l'output.

240
00:30:15,580 --> 00:30:18,540
Più la finestra di contesto è grossa,

241
00:30:18,360 --> 00:30:20,039
Più tempo ci vuole.

242
00:30:20,039 --> 00:30:30,760
Ecco, adesso sono stato bravo, ma nella sostanza gli esempi erano corretti, alcuni esempi ho utilizzato un contesto da 68.

243
00:30:30,919 --> 00:30:31,559
000

244
00:30:31,880 --> 00:30:39,320
token di contesto e giusto per darti un'idea sono più o meno 45-50.

245
00:30:39,320 --> 00:30:41,320
000 parole per intenderci

246
00:30:41,300 --> 00:30:42,820
e QN 3.

247
00:30:42,820 --> 00:30:50,180
5 35 miliardi di parametro a 4 bit ci ha messo 32 minuti per rispondere

248
00:30:50,260 --> 00:31:00,340
né Motron 3 né Nano ce ne ha messi 18 quindi comunque i tempi sono veramente grossi e lunghi ma effettivamente il risultato è positivo

249
00:31:00,540 --> 00:31:09,100
e comunque è riuscito a fare cose che mai avrei pensato di poter fare tranquillamente sul mio Mac Studio.

250
00:31:08,500 --> 00:31:14,260
Quindi ovvio, poi più il modello è piccolo, più addirittura posso utilizzare contesti di grande dimensioni.

251
00:31:14,340 --> 00:31:18,580
Ve lo ripeto, ne ho parlato secondo me la puntata scorsa.

252
00:31:18,100 --> 00:31:32,900
Ho fatto tradurre dall'intelligenza artificiale locale un libro e per farlo tradurre l'escamotage c'è stato che un lingo inglese e in italiano l'ho spezzettato in pezzettini, ovviamente, in modo che questi pezzettini stessero.

253
00:31:32,760 --> 00:31:41,960
nel contesto in quest'ottica qua probabilmente potevo dare l'intero libro ovviamente ci metteva appunto comunque una quantità di tempo non indifferente

254
00:31:41,800 --> 00:31:55,960
ma teoricamente, e dico teoricamente, avrei potuto dare comunque dei pezzi di libro più grossi e farli ovviamente digerire con questi contesti, quindi fare meno passaggi.

255
00:31:55,360 --> 00:32:07,600
Ultime considerazioni finali prima di salutarti, non ne ho parlato perché non ho avuto fisicamente il tempo di fare ulteriori esperimenti.

256
00:32:07,340 --> 00:32:16,059
Ma c'è anche da guardare quello che è possibile fare con MLX, che è lo standard per gli Apple Silicon.

257
00:32:15,500 --> 00:32:16,380
Questo perché?

258
00:32:16,380 --> 00:32:29,340
Perché abitualmente l'LMX consuma un 30% in meno di memoria, perché ovviamente i modelli LMX sono ottimizzati per Apple Silico.

259
00:32:29,440 --> 00:32:38,320
Sicuramente ci sono un sacco di cose da fare, anche qui c'è la possibilità addirittura di sto.

260
00:32:38,880 --> 00:32:47,680
sto scoprendo pian piano di fare cache dei prompt, cioè avere già i vettori calcolati per il prompt A

261
00:32:47,700 --> 00:32:58,500
e quindi se il prompt A viene modificato di qualche parola la GPU deve fare solo i conti di quello che manca, mettiamoli in questi termini.

262
00:32:58,000 --> 00:33:10,320
E questo ovviamente velocizza particolarmente l'appels silicon perché appunto il grosso del calcolo viene fatto la prima volta, ma se il prompt è simile o se appunto il prompt fa parte di una grossa conversazione, quindi.

263
00:33:10,320 --> 00:33:15,120
Tutta la parte precedente, la conversazione è stata già elaborata.

264
00:33:15,120 --> 00:33:17,280
Ti deve fare solo il pezzo che manca.

265
00:33:17,280 --> 00:33:21,920
Insomma, ci sono tutta una serie di ulteriori tecniche per ottimizzare.

266
00:33:21,920 --> 00:33:24,560
Ovviamente sono tecniche avanzate.

267
00:33:24,620 --> 00:33:31,900
ma che ti permettono di esprimere al massimo questi strumenti, tirando le somme, quindi.

268
00:33:31,900 --> 00:33:35,420
Sicuramente è puntata molto tecnica, ma.

269
00:33:35,540 --> 00:33:46,500
credo possa essere molto interessante per chi come sottoscritto vuole spremere tutta la potenza diciamo del processore Apple Silicon

270
00:33:46,640 --> 00:33:50,400
dai propri Mac con l'utilizzo dell'intelligenza artificiale locale.

271
00:33:50,400 --> 00:33:58,400
L'intelligenza artificiale locale è ormai la mia convenzione per il mondo professionale è il futuro, nel senso che oggi.

272
00:33:58,360 --> 00:34:07,480
non ancora sufficientemente performante e comunque ha dei costi piuttosto alti ma secondo me in un futuro diventerà comunque il

273
00:34:08,060 --> 00:34:09,580
Punto d'arrivo per tutti.

274
00:34:09,580 --> 00:34:16,860
Apro chiudo una parentesi veloce, sì, sto sviluppando io e tra l'altro non sono io.

275
00:34:16,500 --> 00:34:24,260
ma ci sono altre conosco almeno due progetti commerciali che stanno sviluppando dei sistemi di anonimizzazione dei documenti

276
00:34:24,200 --> 00:34:33,480
Il problema dell'anonimizzazione però dei documenti è che non è al 100%, secondo me, non è al 100% automatizzabile.

277
00:34:32,899 --> 00:34:46,099
Questo per un motivo semplicissimo, perché le entità, cioè trovare Pippo Pluto, Paperino, date di nascita, luogo e così via, non è qualcosa di deterministico.

278
00:34:45,760 --> 00:34:53,920
e quindi lasciare un dato è sempre possibile quindi ci vuole comunque una revisione dell'anonimizzazione

279
00:34:54,159 --> 00:34:59,280
da parte di chi vuole utilizzare quel documento con i modelli online.

280
00:34:59,280 --> 00:35:04,240
Invece avere un modello locale che ovviamente non fa uscire da nessuna parte

281
00:35:04,540 --> 00:35:15,020
i propri dati o comunque che restano nell'intranet locale è il vantaggio vero quindi secondo me nel momento in cui ci sarà diciamo

282
00:35:15,440 --> 00:35:25,520
il costo per token dei modelli online aumenterà drasticamente il vantaggio di avere dei modelli locali

283
00:35:25,940 --> 00:35:33,940
che girano sul proprio hardware aumenterà drasticamente e quindi computer che oggi diciamo sono fuori

284
00:35:34,100 --> 00:35:47,060
Dalla portata di molti potrebbero diventare computer, quindi parlo del Mac Studio con 512 GB di RAM, anche se ad oggi, per esempio, non è più acquistabile, mettiamoli in questi termini.

285
00:35:47,060 --> 00:35:48,260
Però.

286
00:35:47,960 --> 00:35:52,039
Questi computer che costavano intorno ai 12.

287
00:35:52,200 --> 00:36:00,520
000 euro iniziano ad avere un loro senso se i modelli migliorano ancora.

288
00:36:00,240 --> 00:36:08,960
e in locale si riescono a fare cose che online non si possono fare senza ovviamente dei baratti.

289
00:36:08,960 --> 00:36:10,720
Quindi sicuramente

290
00:36:11,240 --> 00:36:22,920
Se oggi quello che ci sto raccontando è frontiera e probabilmente interessa a poche persone, sono argomenti che però devono essere approfonditi, io lo faccio proprio in quest'ottica qui.

291
00:36:22,720 --> 00:36:27,039
Perché, secondo me, il futuro va in questa direzione.

292
00:36:27,039 --> 00:36:37,279
E sicuramente, già con questi trucchi, diciamo, e con queste novità sia tecnologiche che di ottimizzazione, mettiamole in questi termini.

293
00:36:38,120 --> 00:36:50,840
Mac da costi non eccessivi mettiamola così perché ormai 32, anzi addirittura credo i Mac Pro hanno 48 GB di RAM a livello base, mettiamola così.

294
00:36:50,559 --> 00:36:57,440
iniziano ad essere strumenti molto interessanti e su cui si possono fare cose decisamente potenti.

295
00:36:57,440 --> 00:37:00,319
Bene, come al solito siamo arrivati alla fine della puntata.

296
00:37:00,319 --> 00:37:05,119
Se ti piaciuto quel che hai ascoltato, ti propongo di iscriverti.

297
00:37:04,580 --> 00:37:13,780
alla mia newsletter ogni mese mando una mail con link ad articoli che ho trovato interessanti avviso dei nuovi podcast dei nuovi articoli degli eventuali nuovi video

298
00:37:14,040 --> 00:37:25,240
e spesso volentieri faccio un commento a livello mensile sulle cose che sto facendo quindi ti tengo aggiornato sui miei esperimenti adesso il podcast è in zona

299
00:37:26,020 --> 00:37:39,300
Molto limitrofa a quello che sto facendo, quindi c'è meno gap, ma confido a stretto Gio di recuperare insomma un po' di terreno e quindi di registrare il podcast.

300
00:37:39,000 --> 00:37:41,880
a circa un mese di distanza dalla sua pubblicazione.

301
00:37:41,880 --> 00:37:47,720
Trovi sempre come sempre le note dell'episodio all'indirizzo http.

302
00:37:47,720 --> 00:37:48,520
S2.

303
00:37:48,760 --> 00:37:50,680
slash slash www.

304
00:37:50,920 --> 00:37:53,559
avvocati mac.

305
00:37:53,960 --> 00:37:58,599
it slash podcast slash 76 che è il numero di questa puntata.

306
00:37:58,599 --> 00:38:01,640
Come sempre ci sentiamo alla prossima.

307
00:38:01,720 --> 00:38:01,960
Oh

