<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>LeaderGPU® | Soluzioni GPU per l&#39;HPC (High Performance Computing)</title>
    <link>https://www.leadergpu.it</link>
    <description>Catalogo di soluzioni in cui potrai trovare le migliori librerie, i migliori programmi e i migliori strumenti per l&#39;HPC (High Performance Computing) in diverse categorie e settori.</description>
    <language>it</language>
    <item>
      <title>Qwen3-Coder: un paradigma infranto</title>
      <link>https://www.leadergpu.it/catalog/628-qwen3-coder-un-paradigma-infranto</link>
      <description>&lt;p&gt;Siamo abituati a pensare che i modelli open-source siano sempre inferiori alle loro controparti commerciali in termini di qualità. Può sembrare che siano sviluppati esclusivamente da appassionati che non possono permettersi di investire somme ingenti per creare dataset di alta qualità e addestrare i modelli su decine di migliaia di GPU moderne.&lt;/p&gt;
&lt;p&gt;È una storia diversa quando grandi aziende come OpenAI, Anthropic o Meta si assumono il compito. Non solo dispongono delle risorse necessarie, ma anche dei migliori specialisti di reti neurali del mondo. Purtroppo, i modelli che creano, soprattutto le ultime versioni, sono closed-source. Gli sviluppatori spiegano questo fatto citando i rischi di un uso incontrollato e la necessità di garantire la sicurezza dell&#39;IA.&lt;/p&gt;
&lt;p&gt;Da un lato, il loro ragionamento è comprensibile: molte questioni etiche rimangono irrisolte e la natura stessa dei modelli di rete neurale permette di influenzare solo indirettamente il risultato finale. D&#39;altra parte, mantenere i modelli chiusi e offrire l&#39;accesso solo attraverso le proprie API è anche un modello di business solido.&lt;/p&gt;
&lt;p&gt;Tuttavia, non tutte le aziende si comportano in questo modo. Ad esempio, l&#39;azienda francese Mistral AI offre modelli sia commerciali che open-source, consentendo a ricercatori e appassionati di utilizzarli nei loro progetti. Ma occorre prestare particolare attenzione ai risultati ottenuti dalle aziende cinesi, la maggior parte delle quali costruisce modelli open-weight e open-source in grado di competere seriamente con le soluzioni proprietarie.&lt;/p&gt;
&lt;h2&gt;DeepSeek, Qwen3 e Kimi K2&lt;/h2&gt;
&lt;p&gt;Il primo grande passo avanti è stato fatto con DeepSeek-V3. Questo modello linguistico multimodale di DeepSeek AI è stato sviluppato con l&#39;approccio Mixture of Experts (MoE) e conta ben 671B parametri, con 37B parametri più rilevanti attivati per ogni token. Soprattutto, tutti i suoi componenti (pesi del modello, codice di inferenza e pipeline di addestramento) sono stati resi pubblici.&lt;/p&gt;
&lt;p&gt;Ciò lo ha reso immediatamente uno dei LLM più interessanti per gli sviluppatori di applicazioni di IA e per i ricercatori. Il successivo titolo è stato DeepSeek-R1, il primo modello di ragionamento open-source. Il giorno del suo rilascio, ha fatto tremare il mercato azionario statunitense dopo che i suoi sviluppatori hanno dichiarato che l&#39;addestramento di un modello così avanzato era costato solo 6 milioni di dollari.&lt;/p&gt;
&lt;p&gt;Mentre il clamore intorno a DeepSeek si è poi raffreddato, i successivi rilasci non sono stati meno importanti per l&#39;industria globale dell&#39;intelligenza artificiale. Stiamo parlando, ovviamente, di Qwen 3. Abbiamo parlato delle sue caratteristiche in dettaglio nel nostro articolo. Le sue caratteristiche sono state trattate in dettaglio nella nostra recensione &lt;a href=&quot;https://www.leadergpu.it/catalog/624-cosa-c-di-nuovo-in-qwen-3&quot; target=&quot;_blank&quot;&gt;Cosa c&#39;è di nuovo in Qwen 3&lt;/a&gt;, quindi non ci soffermeremo qui. Poco dopo è apparso un altro giocatore: Kimi K2 di Moonshot AI.&lt;/p&gt;
&lt;p&gt;Con la sua architettura MoE, i suoi parametri 1T (32B attivati per token) e il suo codice open-source, Kimi K2 ha rapidamente attirato l&#39;attenzione della comunità. Piuttosto che concentrarsi sul ragionamento, Moonshot AI puntava a prestazioni allo stato dell&#39;arte in matematica, programmazione e profonda conoscenza interdisciplinare.&lt;/p&gt;
&lt;p&gt;L&#39;asso nella manica di Kimi K2 era la sua ottimizzazione per l&#39;integrazione negli agenti di intelligenza artificiale. Questa rete è stata letteralmente progettata per fare pieno uso di tutti gli strumenti disponibili. Eccelle in compiti che richiedono non solo la scrittura di codice, ma anche test iterativi in ogni fase di sviluppo. Tuttavia, ha anche dei punti deboli, di cui parleremo più avanti.&lt;/p&gt;
&lt;p&gt;Kimi K2 è un modello linguistico di grandi dimensioni in tutti i sensi. L&#39;esecuzione della versione completa richiede ~2 TB di VRAM (FP8: ~1 TB). Per ovvie ragioni, non è una cosa che si può fare a casa e nemmeno molti server con GPU sono in grado di gestirla. Il modello necessita di almeno 8 acceleratori NVIDIA® H200. Le versioni quantizzate possono essere d&#39;aiuto, ma a un costo notevole per la precisione.&lt;/p&gt;
&lt;h2&gt;Codificatore Qwen3&lt;/h2&gt;
&lt;p&gt;Visto il successo di Moonshot AI, Alibaba ha sviluppato un proprio modello simile a Kimi K2, ma con vantaggi significativi di cui parleremo tra poco. Inizialmente è stato rilasciato in due versioni:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-480B-A35B-Instruct&lt;/a&gt; (~250 GB VRAM)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-480B-A35B-Instruct-FP8&lt;/a&gt; (~120 GB di VRAM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pochi giorni dopo sono apparsi modelli più piccoli senza il meccanismo di ragionamento, che richiedevano una quantità di VRAM molto inferiore:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-30B-A3B-Instruct&lt;/a&gt; (~32 GB VRAM)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-30B-A3B-Instruct-FP8&lt;/a&gt; (~18 GB VRAM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qwen3-Coder è stato progettato per l&#39;integrazione con gli strumenti di sviluppo. Include uno speciale parser per le chiamate di funzione (qwen3coder_tool_parser.py, analogo alle chiamate di funzione di OpenAI). Insieme al modello, è stata rilasciata un&#39;utilità per la console, in grado di svolgere funzioni che vanno dalla compilazione del codice all&#39;interrogazione di una base di conoscenza. L&#39;idea non è nuova, si tratta essenzialmente di un&#39;estensione pesantemente rielaborata dell&#39;applicazione di codice Gemini di Anthropic.&lt;/p&gt;
&lt;p&gt;Il modello è compatibile con le API di OpenAI, consentendo di distribuirlo localmente o su un server remoto e di collegarlo alla maggior parte dei sistemi che supportano tali API. Ciò include sia applicazioni client già pronte che librerie di apprendimento automatico. Ciò lo rende utilizzabile non solo per il segmento B2C ma anche per quello B2B, offrendo una sostituzione senza soluzione di continuità del prodotto di OpenAI senza alcuna modifica della logica applicativa.&lt;/p&gt;
&lt;p&gt;Una delle sue caratteristiche più richieste è l&#39;estensione della lunghezza del contesto. Per impostazione predefinita, supporta 256k token, ma può essere aumentata fino a 1M utilizzando il meccanismo &lt;b translate=&quot;no&quot;&gt;YaRN&lt;/b&gt; (Yet another RoPe extensioN). I moderni LLM sono in genere addestrati su insiemi di dati brevi (2k-8k token) e una lunghezza del contesto elevata può far perdere le tracce dei contenuti precedenti.&lt;/p&gt;
&lt;p&gt;YaRN è un elegante &quot;trucco&quot; che fa credere al modello di lavorare con le solite sequenze brevi, mentre in realtà ne elabora di molto più lunghe. L&#39;idea chiave è quella di &quot;allungare&quot; o &quot;dilatare&quot; lo spazio posizionale preservando la struttura matematica che il modello si aspetta. In questo modo è possibile elaborare efficacemente sequenze lunghe decine di migliaia di token senza dover ricorrere alla riqualificazione o alla memoria supplementare richiesta dai metodi tradizionali di estensione del contesto.&lt;/p&gt;
&lt;h2&gt;Scaricare ed eseguire l&#39;inferenza&lt;/h2&gt;
&lt;p&gt;Assicurarsi di aver installato CUDA® in precedenza, utilizzando le istruzioni ufficiali di NVIDIA® o la guida &lt;a href=&quot;https://www.leadergpu.it/articles/615-installare-il-toolkit-cuda-in-linux&quot; target=&quot;_blank&quot;&gt;Installare il toolkit CUDA® in Linux&lt;/a&gt;. Per verificare la presenza del compilatore richiesto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nvcc --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Risultato atteso:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Feb_27_16:19:38_PST_2024
Cuda compilation tools, release 12.4, V12.4.99
Build cuda_12.4.r12.4/compiler.33961263_0&lt;/pre&gt;
&lt;p&gt;Se si ottiene:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Command &#39;nvcc&#39; not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit&lt;/pre&gt;
&lt;p&gt;è necessario aggiungere i binari di CUDA® a $PATH del sistema.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PATH=/usr/local/cuda-12.4/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questa è una soluzione temporanea. Per una soluzione definitiva, modificare &lt;b translate=&quot;no&quot;&gt;~/.bashrc&lt;/b&gt; e aggiungere le stesse due righe alla fine.&lt;/p&gt;
&lt;p&gt;Ora, preparate il vostro sistema per gestire gli ambienti virtuali. Si può usare il venv integrato in Python o il più avanzato Miniforge. Supponendo che Miniforge sia installato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create -n venv python=3.10&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare PyTorch con il supporto CUDA® corrispondente al sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare quindi le librerie essenziali:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Transformers&lt;/b&gt; - La libreria di modelli principale di Hugging Face&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Accelerate&lt;/b&gt; - consente l&#39;inferenza multi-GPU&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;HuggingFace Hub&lt;/b&gt; - per il download/upload di modelli e set di dati&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Safetensors&lt;/b&gt; - formato sicuro per i pesi dei modelli&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;vLLM&lt;/b&gt; - libreria di inferenza raccomandata per Qwen&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install transformers accelerate huggingface_hub safetensors vllm&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare il modello:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;hf download Qwen/Qwen3-Coder-30B-A3B-Instruct --local-dir ./Qwen3-30B&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire l&#39;inferenza con il parallelismo dei tensori (dividendo i tensori degli strati tra le GPU, ad esempio 8):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python -m vllm.entrypoints.openai.api_server \
--model /home/usergpu/Qwen3-30B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.9 \
--dtype auto \
--host 0.0.0.0 \
--port 8000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avvia il server API OpenAI di vLLM.&lt;/p&gt;
&lt;h2&gt;Test e integrazione&lt;/h2&gt;
&lt;h3&gt;cURL&lt;/h3&gt;
&lt;p&gt;Installare &lt;b translate=&quot;no&quot;&gt;jq&lt;/b&gt; per la stampa di JSON:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;sudo apt -y install jq&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Testare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;curl -s http://127.0.0.1:8000/v1/chat/completions -H &quot;Content-Type: application/json&quot; -d &#39;{
  &quot;model&quot;: &quot;/home/usergpu/Qwen3-30B&quot;,
  &quot;messages&quot;: [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;You are a helpful assistant.&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello! What can you do?&quot;}
  ],
  &quot;max_tokens&quot;: 180
}&#39; | jq -r &#39;.choices[0].message.content&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;VSCode&lt;/h3&gt;
&lt;p&gt;Per integrarsi con &lt;b translate=&quot;no&quot;&gt;Visual Studio Code&lt;/b&gt;, installare l&#39;estensione &lt;b translate=&quot;no&quot;&gt;Continue&lt;/b&gt; e aggiungerla a &lt;b translate=&quot;no&quot;&gt;config.yaml&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;- name: Qwen3-Coder 30B
  provider: openai
  apiBase: http://[server_IP_address]:8000/v1
  apiKey: none
  model: /home/usergpu/Qwen3-30B
  roles:
    - chat
    - edit
    - apply&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/183/original/sh_qwen3_coder_a_broken_paradigm_1.png?1755000294&quot; alt=&quot;Continue extension&quot;&gt;
&lt;h3&gt;Qwen-Agent&lt;/h3&gt;
&lt;p&gt;Per una configurazione basata su GUI con Qwen-Agent (compresi RAG, MCP e interprete di codice):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install -U &quot;qwen-agent[gui,rag,code_interpreter,mcp]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire l&#39;editor nano:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;nano script.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esempio di script Python per lanciare Qwen-Agent con una WebUI Gradio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI

llm_cfg = {
    &#39;model&#39;: &#39;/home/usergpu/Qwen3-30B&#39;,
    &#39;model_server&#39;: &#39;http://localhost:8000/v1&#39;,
    &#39;api_key&#39;: &#39;EMPTY&#39;,
    &#39;generate_cfg&#39;: {&#39;top_p&#39;: 0.8},
}

tools = [&#39;code_interpreter&#39;]

bot = Assistant(
    llm=llm_cfg,
    system_message=&quot;You are a helpful coding assistant.&quot;,
    function_list=tools
)

WebUI(bot).run()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python script.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il server sarà disponibile all&#39;indirizzo: http://127.0.0.1:7860&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/184/original/sh_qwen3_coder_a_broken_paradigm_2.png?1755000323&quot; alt=&quot;Qwen-Agent with tools&quot;&gt;
&lt;p&gt;È anche possibile integrare Qwen3-Coder in framework di agenti come CrewAI per automatizzare compiti complessi con set di strumenti come la ricerca sul web o la memoria di database vettoriali.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/627-come-installare-crewai-con-la-gui&quot;&gt;Come installare CrewAI con la GUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/602-come-monitorare-l-applicazione-langflow&quot;&gt;Come monitorare l&#39;applicazione LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/182/original/il_qwen3_coder_a_broken_paradigm.png?1755000263"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 12 Aug 2025 14:11:06 +0200</pubDate>
      <guid isPermaLink="false">628</guid>
      <dc:date>2025-08-12 14:11:06 +0200</dc:date>
    </item>
    <item>
      <title>Come installare CrewAI con la GUI</title>
      <link>https://www.leadergpu.it/catalog/627-come-installare-crewai-con-la-gui</link>
      <description>&lt;p&gt;Le capacità dei modelli di reti neurali crescono di giorno in giorno. Ricercatori e aziende commerciali investono sempre di più nella loro formazione. Ma da soli, questi modelli non possono agire in modo autonomo. Per risolvere compiti specifici, hanno bisogno di una guida: estensione del contesto e definizione della direzione. Questo approccio non è sempre efficiente, soprattutto per problemi complessi.&lt;/p&gt;
&lt;p&gt;Ma cosa succederebbe se permettessimo a una rete neurale di agire autonomamente? E se le fornissimo molti strumenti per interagire con il mondo esterno? Si otterrebbe un agente AI in grado di risolvere compiti determinando autonomamente quali strumenti utilizzare. Sembra complicato, ma funziona molto bene. Tuttavia, anche per un utente avanzato, creare un agente AI da zero può essere un compito non banale.&lt;/p&gt;
&lt;p&gt;Il motivo è che le librerie più diffuse non dispongono di un&#39;interfaccia grafica. Richiedono l&#39;interazione attraverso un linguaggio di programmazione come Python. Questo innalza drasticamente la soglia di ingresso e rende gli agenti di intelligenza artificiale troppo complessi per un&#39;implementazione indipendente. Questo è esattamente il caso di CrewAI.&lt;/p&gt;
&lt;h2&gt;Cos&#39;è CrewAI&lt;/h2&gt;
&lt;p&gt;CrewAI è una libreria molto popolare e comoda, ma non è dotata di un&#39;interfaccia grafica predefinita. Questo ha spinto gli sviluppatori indipendenti a creare un&#39;interfaccia non ufficiale. La natura open source di CrewAI ha reso il compito molto più facile e presto la comunità ha rilasciato il progetto CrewAI Studio.&lt;/p&gt;
&lt;p&gt;Sviluppatori e appassionati hanno acquisito una conoscenza più approfondita dell&#39;architettura del sistema e hanno potuto creare strumenti su misura per compiti specifici. Gli utenti abituali potevano creare agenti AI senza scrivere una sola riga di codice. È diventato più facile assegnare compiti e gestire l&#39;accesso alle reti neurali e agli strumenti. È stato inoltre possibile esportare e importare agenti da un server all&#39;altro e condividerli con amici, colleghi o con la comunità open source.&lt;/p&gt;
&lt;p&gt;Un altro vantaggio di CrewAI Studio è la sua flessibilità di distribuzione. Può essere installato come una normale applicazione o come un contenitore Docker, il metodo preferito in quanto include tutte le librerie e i componenti necessari per l&#39;esecuzione del sistema.&lt;/p&gt;
&lt;h2&gt;Installazione&lt;/h2&gt;
&lt;p&gt;Aggiornare i pacchetti del sistema operativo e le applicazioni installate alle versioni più recenti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Utilizzare lo script di installazione automatica dei driver o seguire la nostra guida &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot; target=&quot;_blank&quot;&gt;Installa i driver NVIDIA® in Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server per rendere effettive le modifiche:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown - r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo la riconnessione via SSH, installare le utility del server web Apache 2, che consentiranno di accedere al generatore di file &lt;b translate=&quot;no&quot;&gt;.htpasswd&lt;/b&gt; utilizzato per l&#39;autenticazione di base degli utenti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y apache2-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare Docker Engine utilizzando lo script di shell ufficiale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere Docker Compose al sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonare il repository:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/strnad/CrewAI-Studio.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigare nella directory scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd CrewAI-Studio&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un file &lt;b translate=&quot;no&quot;&gt;.htpasswd&lt;/b&gt; per l&#39;utente &lt;b translate=&quot;no&quot;&gt;usergpu&lt;/b&gt;. Verrà richiesto di inserire la password due volte:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;htpasswd -c .htpasswd usergpu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora modificare il file di distribuzione del contenitore. Per impostazione predefinita, ci sono due contenitori:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano docker-compose.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cancellare la sezione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;ports:
  - &quot;5432:5432&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E aggiungere il seguente servizio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;
nginx:
  image: nginx:latest
  container_name: crewai_nginx
  ports:
    - &quot;80:80&quot;
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
    - ./.htpasswd:/etc/nginx/.htpasswd:ro
  depends_on:
    - web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nginx avrà bisogno di un file di configurazione, quindi crearne uno:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano nginx.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Incollare quanto segue:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;events {}

http {
  server {
    listen 80;

    location / {
      proxy_pass http://web:8501;

      # WebSocket headers
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection &quot;upgrade&quot;;

      # Forward headers
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      auth_basic &quot;Restricted Content&quot;;
      auth_basic_user_file /etc/nginx/.htpasswd;
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tutte le variabili di servizio importanti per CrewAI sono definite nel file &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt;. Aprire il file &lt;b translate=&quot;no&quot;&gt;.env_example&lt;/b&gt; per modificarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .env_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere le seguenti righe:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;OLLAMA_HOST=&quot;http://open-webui:11434&quot;
OLLAMA_MODELS=&quot;ollama/llama3.2:latest&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E aggiungere la configurazione di Postgres:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;POSTGRES_USER=&quot;admin&quot;
POSTGRES_PASSWORD=&quot;your_password&quot;
POSTGRES_DB=&quot;crewai_db&quot;
AGENTOPS_ENABLED=&quot;False&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora copiare il file di esempio e rinominarlo in &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt;, in modo che il sistema possa leggerlo durante la distribuzione del contenitore:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp .env_example .env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In questo esempio, utilizzeremo modelli locali con inferenza gestita da Ollama. Si consiglia la nostra guida &lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot; target=&quot;_blank&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt;, e durante la distribuzione aggiungere &lt;b translate=&quot;no&quot;&gt;-e OLLAMA_HOST=0.0.0.0&lt;/b&gt; per consentire a CrewAI di connettersi direttamente al contenitore Ollama. Scaricare il modello desiderato (per esempio, llama3.2:latest) tramite WebUI o collegandosi alla console del contenitore ed eseguendo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;ollama pull llama3.2:latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una volta che tutto è stato configurato, lanciare il deployment:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d --build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A questo punto, visitando &lt;b translate=&quot;no&quot;&gt;http://[your_server_ip]/&lt;/b&gt; verranno richieste le credenziali di accesso. Una volta inserite correttamente, apparirà l&#39;interfaccia CrewAI.&lt;/p&gt;
&lt;h2&gt;Caratteristiche&lt;/h2&gt;
&lt;p&gt;Esploriamo le entità chiave utilizzate da CrewAI. Questo aiuterà a capire come configurare i flussi di lavoro. L&#39;entità centrale di &lt;b translate=&quot;no&quot;&gt;Agent&lt;/b&gt; è un task executor autonomo. Ogni agente ha degli attributi che lo aiutano a svolgere i propri compiti:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Role&lt;/b&gt;. Una breve descrizione del lavoro, di 2-3 parole.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Backstory&lt;/b&gt;. Opzionale; aiuta il modello linguistico a capire come l&#39;agente deve comportarsi e su quali esperienze basarsi.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Goal&lt;/b&gt;. L&#39;obiettivo che l&#39;agente deve perseguire.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Allow delegation&lt;/b&gt;. Consente all&#39;agente di delegare compiti (o parti di essi) ad altri.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Verbose&lt;/b&gt;. Indica all&#39;agente di registrare azioni dettagliate.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;LLM Provider and Model&lt;/b&gt;. Specifica il modello e il provider da utilizzare.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Temperature&lt;/b&gt;. Determina la creatività della risposta. Più alto = più creativo.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Max iterations&lt;/b&gt;. Numero di tentativi che l&#39;agente ha a disposizione per avere successo, agendo come una salvaguardia (ad esempio, contro i loop infiniti).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gli agenti operano analizzando iterativamente gli input, ragionando e traendo conclusioni utilizzando gli strumenti disponibili.&lt;/p&gt;
&lt;p&gt;L&#39;input è definito da un&#39;entità &lt;b translate=&quot;no&quot;&gt;Task&lt;/b&gt;. Ogni compito include una descrizione, un agente assegnato e, facoltativamente, un risultato atteso. Per impostazione predefinita, i compiti vengono eseguiti in modo sequenziale, ma possono essere parallelizzati usando il flag &lt;b translate=&quot;no&quot;&gt;Async execution&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Il lavoro autonomo degli agenti è supportato da &lt;b translate=&quot;no&quot;&gt;Tools&lt;/b&gt; che consente l&#39;interazione con il mondo reale. CrewAI include strumenti per la ricerca sul web, il parsing dei siti, le chiamate API e la gestione dei file, migliorando il contesto e aiutando gli agenti a raggiungere gli obiettivi.&lt;/p&gt;
&lt;p&gt;Infine, c&#39;è &lt;b translate=&quot;no&quot;&gt;Crew entity&lt;/b&gt; che unisce agenti con ruoli diversi in una squadra per affrontare problemi complessi. Possono comunicare, delegare, rivedere e correggere l&#39;un l&#39;altro, formando essenzialmente un&#39;intelligenza collettiva.&lt;/p&gt;
&lt;h2&gt;Utilizzando&lt;/h2&gt;
&lt;p&gt;Ora che si ha familiarità con le entità, costruiamo ed eseguiamo un flusso di lavoro minimo di CrewAI. In questo esempio, seguiremo i progressi globali nello sviluppo di farmaci contro il cancro.&lt;/p&gt;
&lt;p&gt;Utilizzeremo tre agenti:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Oncology Drug Pipeline Analyst&lt;/b&gt; - segue i nuovi sviluppi dalle fasi iniziali alla sperimentazione clinica.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Regulatory and Approval Watchdog&lt;/b&gt; - monitora le approvazioni di nuovi farmaci e le modifiche normative.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Scientific Literature and Innovation Scout&lt;/b&gt; - analizza le pubblicazioni scientifiche e i brevetti relativi all&#39;oncologia.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Aprire la sezione Agenti e creare il primo agente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/174/original/sh_how_to_install_crewai_with_gui_1.png?1753263006&quot; alt=&quot;Agent creation&quot;&gt;
&lt;p&gt;Per ora, utilizziamo il modello &lt;b translate=&quot;no&quot;&gt;llama3.2:latest&lt;/b&gt; scaricato in precedenza, ma in uno scenario reale, scegliete quello che meglio si adatta all&#39;attività. Ripetere la procedura per gli altri agenti e passare alla creazione dell&#39;attività.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/175/original/sh_how_to_install_crewai_with_gui_2.png?1753263034&quot; alt=&quot;Task creation&quot;&gt;
&lt;p&gt;Riunire tutti gli agenti in una squadra e assegnare loro il compito preparato:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/176/original/sh_how_to_install_crewai_with_gui_3.png?1753263057&quot; alt=&quot;Crew creation&quot;&gt;
&lt;p&gt;Attivare gli strumenti necessari dall&#39;elenco:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/177/original/sh_how_to_install_crewai_with_gui_4.png?1753263096&quot; alt=&quot;Tools selection&quot;&gt;
&lt;p&gt;Infine, andare alla pagina &lt;b translate=&quot;no&quot;&gt;Kickoff!&lt;/b&gt; e fare clic su &lt;b translate=&quot;no&quot;&gt;Run Crew!&lt;/b&gt; Dopo alcune iterazioni, il sistema restituirà un risultato, ad esempio:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/178/original/sh_how_to_install_crewai_with_gui_5.png?1753263118&quot; alt=&quot;Example CrewAI result&quot;&gt;
&lt;p&gt;Prima di concludere, controlliamo la sezione &lt;b translate=&quot;no&quot;&gt;Import/export&lt;/b&gt;. Il flusso di lavoro o l&#39;equipaggio possono essere esportati come JSON per essere trasferiti a un altro server CrewAI. È anche possibile creare un&#39;applicazione a pagina singola (SPA) con un solo clic, perfetta per la distribuzione in produzione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/179/original/sh_how_to_install_crewai_with_gui_6.png?1753263147&quot; alt=&quot;Import and export settings&quot;&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;CrewAI semplifica notevolmente la creazione di agenti AI, consentendo l&#39;integrazione in qualsiasi applicazione o l&#39;utilizzo autonomo. La libreria si basa sull&#39;idea di intelligenza distribuita, in cui ogni agente è un esperto di dominio e la squadra combinata supera un singolo agente generalista.&lt;/p&gt;
&lt;p&gt;Essendo scritta in Python, CrewAI si integra facilmente con piattaforme e strumenti di ML. La sua natura open source consente l&#39;estensione attraverso moduli di terze parti. La comunicazione tra agenti riduce l&#39;uso di token distribuendo l&#39;elaborazione del contesto.&lt;/p&gt;
&lt;p&gt;Di conseguenza, le attività complesse vengono completate in modo più rapido ed efficiente. La barriera d&#39;ingresso più bassa fornita da CrewAI Studio espande la portata degli agenti AI e dei sistemi multi-agente. Il supporto per i modelli locali garantisce un migliore controllo dei dati sensibili.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/622-come-installare-n8n&quot;&gt;Come installare N8N&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/623-server-mcp-basato-su-n8n&quot;&gt;Server MCP basato su N8N&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/180/original/il_how_to_install_crewai_with_gui.png?1753275220"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 23 Jul 2025 15:05:43 +0200</pubDate>
      <guid isPermaLink="false">627</guid>
      <dc:date>2025-07-23 15:05:43 +0200</dc:date>
    </item>
    <item>
      <title>Cosa c&#39;è di nuovo in Qwen 3</title>
      <link>https://www.leadergpu.it/catalog/624-cosa-c-di-nuovo-in-qwen-3</link>
      <description>&lt;p&gt;La corsa globale all&#39;intelligenza artificiale sta accelerando. Istituti di ricerca, aziende private e persino intere nazioni sono in competizione per la leadership nel settore dell&#39;IA. In linea di massima, questa corsa può essere suddivisa in diverse fasi. La prima fase ha riguardato la creazione di IA ristretta. I modelli di rete neurale esistenti, come GPT, MidJourney e AlphaFold, dimostrano che questa fase è stata raggiunta con successo.&lt;/p&gt;
&lt;p&gt;La fase successiva prevede l&#39;evoluzione dell&#39;IA in AGI (Artificial General Intelligence). L&#39;AGI dovrebbe eguagliare l&#39;intelligenza umana nella risoluzione di un&#39;ampia gamma di compiti, dalla scrittura di storie all&#39;esecuzione di calcoli scientifici, dalla comprensione di situazioni sociali all&#39;apprendimento autonomo. Al momento in cui scriviamo, questo livello non è ancora stato raggiunto.&lt;/p&gt;
&lt;p&gt;Lo stadio finale dello sviluppo dell&#39;intelligenza artificiale viene definito ASI (Artificial Super Intelligence). Essa supererebbe di gran lunga le capacità umane in tutti i settori. Ciò consentirebbe di sviluppare tecnologie che oggi non possiamo nemmeno immaginare e di gestire sistemi globali con una precisione superiore alle capacità umane. Tuttavia, questo potrebbe diventare realtà solo dopo decenni (o addirittura secoli) di continui progressi.&lt;/p&gt;
&lt;p&gt;Di conseguenza, la maggior parte dei partecipanti alla corsa all&#39;intelligenza artificiale si concentra sul raggiungimento dell&#39;AGI mantenendo il controllo su di essa. Lo sviluppo dell&#39;intelligenza artificiale è strettamente legato a una serie di complesse sfide tecniche, etiche e legali. Tuttavia, i potenziali vantaggi superano di gran lunga i costi, ed è per questo che aziende come Alibaba Group stanno investendo molto in questo settore.&lt;/p&gt;
&lt;p&gt;Il rilascio di &lt;a href=&quot;https://github.com/QwenLM/Qwen3&quot; target=&quot;_blank&quot;&gt;Qwen 3&lt;/a&gt; segna una pietra miliare significativa non solo per le reti neurali di un&#39;azienda, ma anche a livello globale. Rispetto al suo predecessore, il modello introduce diverse importanti innovazioni.&lt;/p&gt;
&lt;h2&gt;Caratteristiche&lt;/h2&gt;
&lt;p&gt;Qwen 2.5 è stato preaddestrato su un set di dati di 18 miliardi di token, mentre il nuovo modello ha raddoppiato questa quantità a 36 miliardi di token. Il set di dati più grande ha migliorato significativamente l&#39;accuratezza del modello di base. È interessante notare che, oltre ai dati Internet disponibili pubblicamente e raccolti attraverso il parsing, il sistema è stato addestrato anche su documenti PDF. Questi sono tipicamente ben strutturati e densi di conoscenza, il che aiuta il modello a fornire risposte più accurate e a comprendere meglio formulazioni complesse.&lt;/p&gt;
&lt;p&gt;Una delle direzioni più promettenti nello sviluppo dell&#39;IA è la costruzione di modelli capaci di ragionare, in grado di espandere il contesto del compito attraverso un processo iterativo. Da un lato, ciò consente una risoluzione dei problemi più completa, ma dall&#39;altro il ragionamento tende a rallentare notevolmente il processo. Per questo motivo, gli sviluppatori di Qwen 3 hanno introdotto due modalità operative:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Thinking mode.&lt;/b&gt; Il modello costruisce il contesto passo dopo passo prima di fornire una risposta finale. Questo permette di affrontare problemi complessi che richiedono una comprensione profonda.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Non-thinking mode.&lt;/b&gt; Il modello risponde quasi istantaneamente, ma può produrre risposte più superficiali senza un&#39;analisi approfondita.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questo controllo manuale sul comportamento del modello migliora l&#39;esperienza dell&#39;utente nella gestione di molti compiti di routine. Ridurre l&#39;uso della modalità di riflessione riduce anche in modo significativo il carico della GPU, consentendo di elaborare un maggior numero di token nello stesso lasso di tempo.&lt;/p&gt;
&lt;p&gt;Oltre a questa scelta binaria, esiste anche un meccanismo di commutazione morbida. Questo comportamento ibrido consente al modello di adattarsi al contesto utilizzando meccanismi di ponderazione interni. Se il modello ritiene che un compito sia difficile, innesca automaticamente un ragionamento o addirittura un&#39;autoverifica. Può anche rispondere a indicazioni dell&#39;utente come &quot;Pensiamo passo dopo passo&quot;.&lt;/p&gt;
&lt;p&gt;Un altro miglioramento significativo è l&#39;ampliamento del supporto multilingue. Mentre Qwen 2.5 supportava solo 29 lingue, la versione 3 è ora in grado di comprendere e generare testo in 119 lingue e dialetti. Questo ha migliorato notevolmente la capacità di seguire le istruzioni e la comprensione del contesto. Di conseguenza, Qwen 3 può ora essere utilizzato efficacemente in ambienti non inglesi.&lt;/p&gt;
&lt;p&gt;Inoltre, Qwen 3 è ora significativamente meglio integrato con i server MCP, fornendo al modello gli strumenti per approfondire la risoluzione dei problemi ed eseguire le azioni. Ora può interagire con fonti esterne e gestire direttamente processi complessi.&lt;/p&gt;
&lt;h2&gt;Formazione del modello&lt;/h2&gt;
&lt;h3&gt;Formazione preliminare&lt;/h3&gt;
&lt;p&gt;Un salto di qualità così sostanziale non sarebbe stato possibile senza un sistema di formazione in più fasi. Inizialmente, il modello è stato preaddestrato su 30B token con una lunghezza del contesto di 4K, consentendogli di acquisire conoscenze generali e competenze linguistiche di base.&lt;/p&gt;
&lt;p&gt;È seguita una fase di affinamento con dati più scientifici e ben strutturati. Durante questa fase, il modello ha acquisito anche la capacità di scrivere efficacemente applicazioni in più linguaggi di programmazione.&lt;/p&gt;
&lt;p&gt;Infine, è stato addestrato su un set di dati di alta qualità con un contesto esteso. Di conseguenza, Qwen 3 supporta ora una lunghezza effettiva del contesto di 128K tokens, pari a circa 350 pagine di testo digitato, a seconda della lingua. Ad esempio, le lingue basate sul cirillico hanno spesso token più corti a causa della morfologia e dell&#39;uso di prefissi, suffissi, ecc.&lt;/p&gt;
&lt;h3&gt;Pipeline di ragionamento&lt;/h3&gt;
&lt;p&gt;La costruzione di modelli in grado di ragionare è un processo affascinante ma che richiede molto lavoro e che combina varie tecniche esistenti volte a simulare il pensiero umano. Sulla base delle informazioni disponibili pubblicamente, possiamo ipotizzare che l&#39;addestramento al ragionamento di Qwen 3 abbia coinvolto quattro fasi principali:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Cold start for long chains of thought.&lt;/b&gt; Addestramento del modello a suddividere i problemi in più fasi senza un precedente adattamento. Questo lo aiuta ad apprendere il pensiero iterativo e a sviluppare un livello base di capacità di ragionamento.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Reinforcement learning based on reasoning.&lt;/b&gt; In questa fase, i premi non dipendono solo dalla risposta finale, ma anche dalla capacità del modello di costruire catene di ragionamento logiche, interpretabili e strutturate. Viene valutata anche l&#39;assenza di errori e allucinazioni.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Merging reasoning modes.&lt;/b&gt; Gli esseri umani si basano tipicamente su due stili di pensiero: veloce (intuitivo) e lento (analitico). A seconda del tipo di compito, il modello neurale deve imparare a passare da uno stile all&#39;altro e a integrarli. Questo viene solitamente fatto utilizzando esempi che mescolano entrambi gli stili o attraverso token speciali che indicano quale stile applicare.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;General reinforcement learning.&lt;/b&gt; Questa fase finale assomiglia a un ambiente sandbox in cui il modello impara a interagire con gli strumenti, a eseguire compiti a più fasi e a sviluppare un comportamento adattivo. Qui, inoltre, si sintonizza con le preferenze dell&#39;utente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Qwen 3 è una pietra miliare per Alibaba Group. La sua qualità di formazione e la sua metodologia lo rendono un serio concorrente di attori affermati come OpenAI e Anthropic. I miglioramenti rispetto alla versione precedente sono sostanziali.&lt;/p&gt;
&lt;p&gt;Un ulteriore vantaggio è la sua natura open-source, con la base di codice pubblicamente disponibile su GitHub sotto la licenza Apache 2.0.&lt;/p&gt;
&lt;p&gt;L&#39;ulteriore sviluppo della famiglia di modelli Qwen contribuirà a rafforzare la sua posizione nell&#39;arena globale dell&#39;intelligenza artificiale e a ridurre il divario con i modelli commerciali a codice chiuso. E tutti i risultati attuali sono, in un modo o nell&#39;altro, passi avanti verso il progresso dell&#39;umanità nella costruzione dell&#39;IA.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/168/original/il_whats_new_in_qwen_3.png?1752240562"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 14 Jul 2025 08:05:08 +0200</pubDate>
      <guid isPermaLink="false">624</guid>
      <dc:date>2025-07-14 08:05:08 +0200</dc:date>
    </item>
    <item>
      <title>Server MCP basato su N8N</title>
      <link>https://www.leadergpu.it/catalog/623-server-mcp-basato-su-n8n</link>
      <description>&lt;p&gt;Lo sviluppo delle reti neurali generative ha subito una notevole accelerazione negli ultimi anni. Sono diventate notevolmente più veloci e precise nelle risposte e hanno imparato a ragionare. Tuttavia, le loro capacità sono ancora fondamentalmente limitate dalla loro architettura. Per esempio, ogni LLM esistente al momento in cui scriviamo ha una data di scadenza della conoscenza. Ciò significa che ogni giorno che passa, un LLM di questo tipo ha sempre più probabilità di produrre risposte errate, semplicemente perché manca di informazioni sugli eventi che si sono verificati dopo quella data.&lt;/p&gt;
&lt;p&gt;Questa limitazione impone di riqualificare il modello interamente su dati più freschi, il che è costoso e richiede molto tempo. Ma c&#39;è un altro modo. Se si consente al modello di interagire con il mondo esterno, può trovare e aggiornare autonomamente le informazioni richieste durante una conversazione con l&#39;utente, senza bisogno di riqualificarsi.&lt;/p&gt;
&lt;p&gt;Questo è più o meno il funzionamento del meccanismo RAG (Retrieval Augmented Generation). Quando risponde a una domanda, il modello interroga prima un database vettoriale preparato in precedenza e, se trova informazioni rilevanti, le incorpora nella domanda. In questo modo, spiegando e aggiornando il DB vettoriale, la qualità delle risposte LLM può essere notevolmente migliorata.&lt;/p&gt;
&lt;p&gt;Ma c&#39;è un altro modo, ancora più interessante, per incorporare un contesto aggiornato nei prompt. Si chiama MCP, che sta per Model Context Protocol. È stato originariamente sviluppato da Anthropic per il suo modello Claude. Il momento chiave è stato quando il codice sorgente di MCP è stato reso open-source, consentendo a migliaia di ricercatori di intelligenza artificiale di costruire server personalizzati per vari scopi.&lt;/p&gt;
&lt;p&gt;L&#39;essenza di MCP consiste nel dare a un modello di rete neurale l&#39;accesso a strumenti con cui può aggiornare in modo indipendente le proprie conoscenze ed eseguire varie azioni per risolvere in modo efficiente determinati compiti. È il modello stesso a decidere quale strumento utilizzare e se è appropriato in ogni situazione.&lt;/p&gt;
&lt;p&gt;Il supporto per MCP è apparso presto in vari IDE come Cursor e in piattaforme di automazione come N8N. Quest&#39;ultima è particolarmente intuitiva, in quanto i flussi di lavoro vengono creati visivamente, rendendo più facile la comprensione. In N8N è possibile collegarsi a un server MCP esistente o crearne uno proprio. Inoltre, è possibile organizzare una connessione diretta all&#39;interno di un singolo flusso di lavoro. Ma andiamo per gradi.&lt;/p&gt;
&lt;h2&gt;Creazione di un semplice agente AI&lt;/h2&gt;
&lt;p&gt;Prima di iniziare, assicuratevi che il requisito principale sia soddisfatto: avete un LLM pronto per le connessioni. Può trattarsi di un modello in esecuzione locale con Ollama o di un servizio esterno come ChatGPT di OpenAI. Nel primo caso, è necessario conoscere l&#39;indirizzo dell&#39;API locale di Ollama (e facoltativamente la sua autenticazione), mentre nel secondo caso è necessario un account OpenAI attivo con crediti sufficienti.&lt;/p&gt;
&lt;p&gt;La creazione di un agente inizia con il nodo chiave AI Agent. Come minimo, deve essere collegato ad altri due nodi, uno per agire come trigger e l&#39;altro per connettersi all&#39;LLM. Se non si specifica un trigger, il sistema ne creerà uno automaticamente, attivando l&#39;agente alla ricezione di qualsiasi messaggio nella chat interna:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/158/original/sh_mcp_server_based_on_n8n_1.png?1751458377&quot; alt=&quot;AI Agent only&quot;&gt;
&lt;p&gt;L&#39;unico pezzo mancante è l&#39;LLM. Ad esempio, è possibile utilizzare la nostra &lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt; per configurare Ollama con un&#39;interfaccia web. L&#39;unica modifica richiesta è che i contenitori per N8N e Open WebUI devono trovarsi sulla stessa rete. Ad esempio, se il contenitore N8N si trova su una rete denominata &lt;b translate=&quot;no&quot;&gt;web&lt;/b&gt;, nel comando di installazione per Open WebUI, sostituire &lt;b translate=&quot;no&quot;&gt;--network=host&lt;/b&gt; con &lt;b translate=&quot;no&quot;&gt;--network=web&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;In alcuni casi, è necessario impostare manualmente la variabile d&#39;ambiente &lt;b translate=&quot;no&quot;&gt;OLLAMA_HOST&lt;/b&gt;, ad esempio: &lt;b translate=&quot;no&quot;&gt;-e OLLAMA_HOST=0.0.0.0&lt;/b&gt;. Questo permette di collegarsi all&#39;API di Ollama non solo da localhost, ma anche da altri contenitori. Supponiamo che Ollama sia distribuito in un contenitore chiamato &lt;b translate=&quot;no&quot;&gt;ollama-webui&lt;/b&gt;. Allora l&#39;URL di base per la connessione da N8N sarà:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;http://open-webui:11434&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prima di collegare il nodo Ollama Chat Model, non dimenticate di scaricare almeno un modello. È possibile farlo dall&#39;interfaccia web o tramite la CLI del contenitore. Il comando seguente scarica il modello Llama 3.1 con 8 miliardi di parametri:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama pull llama3.1:8b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una volta scaricato e installato, il modello apparirà automaticamente nell&#39;elenco di quelli disponibili:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/159/original/sh_mcp_server_based_on_n8n_2.png?1751458416&quot; alt=&quot;Model select&quot;&gt;
&lt;p&gt;Un flusso di lavoro minimo di un agente AI funzionante si presenta come segue:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/160/original/sh_mcp_server_based_on_n8n_3.png?1751458451&quot; alt=&quot;Minimal working AI Agent&quot;&gt;
&lt;p&gt;In questa forma, l&#39;agente può usare solo un modello e non memorizza i dati di input o migliora i prompt usando strumenti esterni. Quindi ha senso aggiungere almeno il nodo &lt;b translate=&quot;no&quot;&gt;Simple Memory&lt;/b&gt;. Per carichi leggeri, è sufficiente memorizzare richieste e risposte.&lt;/p&gt;
&lt;p&gt;Ma torniamo a MCP. Per iniziare, creare un server utilizzando il nodo speciale &lt;b translate=&quot;no&quot;&gt;MCP Server Trigger&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/161/original/sh_mcp_server_based_on_n8n_4.png?1751458483&quot; alt=&quot;MCP Server Trigger only&quot;&gt;
&lt;p&gt;Questo nodo è completamente autonomo e non richiede un&#39;attivazione esterna. Viene attivato esclusivamente da una richiesta esterna in arrivo al suo indirizzo webhook. Per impostazione predefinita, ci sono due URL: &lt;b translate=&quot;no&quot;&gt;Test URL&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Production URL&lt;/b&gt;. Il primo viene usato durante lo sviluppo, mentre il secondo funziona solo quando il flusso di lavoro viene salvato e attivato.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/162/original/sh_mcp_server_based_on_n8n_5.png?1751458569&quot; alt=&quot;MCP Server Trigger settings&quot;&gt;
&lt;p&gt;Il trigger è inutile da solo, ha bisogno di strumenti collegati. Ad esempio, colleghiamo uno degli strumenti più semplici: una calcolatrice. Questa si aspetta un&#39;espressione matematica come input. I nodi comunicano utilizzando un semplice JSON, quindi per far sì che la calcolatrice calcoli 2 + 2, l&#39;input dovrebbe essere:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;[
  {
    &quot;query&quot;: {
      &quot;input&quot;: &quot;2 + 2&quot;
    }
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gli LLM possono facilmente generare tali JSON dalle descrizioni dei task in testo semplice e inviarli al nodo, che esegue i calcoli e restituisce il risultato. Colleghiamo il client MCP all&#39;agente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/163/original/sh_mcp_server_based_on_n8n_6.png?1751458623&quot; alt=&quot;AI Agent with tools&quot;&gt;
&lt;p&gt;Vale la pena notare che questo nodo non ha bisogno di connessioni aggiuntive. Nelle sue impostazioni, è sufficiente specificare l&#39;indirizzo dell&#39;endpoint a cui invierà i dati dall&#39;agente AI. Nel nostro esempio, questo indirizzo punta al contenitore chiamato &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/164/original/sh_mcp_server_based_on_n8n_7.png?1751458735&quot; alt=&quot;MCP Client Settings&quot;&gt;
&lt;p&gt;Naturalmente, in questa fase è possibile specificare qualsiasi indirizzo di server MCP esterno disponibile. Ma per questo articolo, utilizzeremo un&#39;istanza locale in esecuzione all&#39;interno di N8N. Vediamo come si comportano il client e il server quando all&#39;agente AI viene chiesto di eseguire una semplice operazione matematica:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/165/original/sh_mcp_server_based_on_n8n_8.png?1751458808&quot; alt=&quot;MCP Client calculations example&quot;&gt;
&lt;p&gt;Dopo aver ricevuto la richiesta, l&#39;Agente AI:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Cerca nella memoria semplice per vedere se l&#39;utente l&#39;ha già chiesta in precedenza o se è possibile riutilizzare un contesto.&lt;/li&gt;
    &lt;li&gt;Invia la richiesta all&#39;LLM, che scompone correttamente l&#39;espressione matematica e prepara il JSON corrispondente.&lt;/li&gt;
    &lt;li&gt;Inviare il JSON allo strumento Calcolatrice e ricevere il risultato.&lt;/li&gt;
    &lt;li&gt;Utilizzare l&#39;LLM per generare la risposta finale e inserire il risultato nella risposta.&lt;/li&gt;
    &lt;li&gt;Memorizzare il risultato in Simple Memory.&lt;/li&gt;
    &lt;li&gt;Emettere il messaggio nella chat.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/166/original/sh_mcp_server_based_on_n8n_9.png?1751458859&quot; alt=&quot;MCP Client calculations JSON&quot;&gt;
&lt;p&gt;Allo stesso modo, gli agenti possono lavorare con altri strumenti sul server MCP. Invece di Simple Memory, è possibile utilizzare opzioni più avanzate come MongoDB, Postgres, Redis o persino qualcosa come Zep. Naturalmente, queste opzioni richiedono una manutenzione minima del database, ma le prestazioni complessive aumenteranno in modo significativo.&lt;/p&gt;
&lt;p&gt;Ci sono anche molte più opzioni per la selezione degli strumenti. Il nodo &lt;b translate=&quot;no&quot;&gt;MCP Server Trigger&lt;/b&gt; supporta oltre 200 strumenti. Questi possono essere di qualsiasi tipo, da semplici richieste HTTP a integrazioni precostituite con servizi Internet pubblici. All&#39;interno di un singolo flusso di lavoro, è possibile creare sia un server che un client. Una cosa importante da notare: questi nodi non possono essere collegati visivamente nell&#39;editor, e questo è un comportamento previsto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/167/original/sh_mcp_server_based_on_n8n_10.png?1751458939&quot; alt=&quot;MCP Server and Client with tools&quot;&gt;
&lt;p&gt;Al posto del trigger predefinito, è possibile utilizzare altre opzioni, come la ricezione di un messaggio tramite messenger, l&#39;invio di un modulo di un sito web o l&#39;esecuzione in base a una pianificazione. In questo modo è possibile impostare flussi di lavoro che reagiscono a eventi o eseguono operazioni di routine, come l&#39;esportazione quotidiana di dati da Google Ads.&lt;/p&gt;
&lt;p&gt;E le possibilità offerte dagli agenti di intelligenza artificiale non finiscono qui. È possibile costruire sistemi multi-agente utilizzando diversi modelli di rete neurale che lavorano insieme per risolvere i compiti con maggiore precisione, considerando molti più fattori di influenza nel processo.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/622-come-installare-n8n&quot;&gt;Come installare N8N&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/602-come-monitorare-l-applicazione-langflow&quot;&gt;Come monitorare l&#39;applicazione LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/157/original/il_mcp_server_based_on_n8n.png?1751457996"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 02 Jul 2025 15:28:18 +0200</pubDate>
      <guid isPermaLink="false">623</guid>
      <dc:date>2025-07-02 15:28:18 +0200</dc:date>
    </item>
    <item>
      <title>Come installare N8N</title>
      <link>https://www.leadergpu.it/catalog/622-come-installare-n8n</link>
      <description>&lt;p&gt;Gli agenti di intelligenza artificiale nel 2025 rimangono uno degli approcci più promettenti per risolvere compiti complessi utilizzando modelli linguistici di grandi dimensioni. Questi agenti sono autonomi e in grado di selezionare da soli vari strumenti per svolgere i compiti assegnati. Questo approccio consente di ottenere risultati con un minore coinvolgimento umano e una qualità superiore. Inoltre, apre la possibilità di scoprire modi più originali ed efficaci di affrontare i problemi.&lt;/p&gt;
&lt;p&gt;Anziché limitarsi a formulare un compito, si incarica la rete neurale di risolverlo autonomamente, in base alle risorse assegnatele. Tuttavia, perché questo schema funzioni, è necessario un meccanismo che colleghi le interfacce delle reti neurali con vari strumenti, che si tratti di una ricerca sul Web o di un database vettoriale per la memorizzazione dei risultati intermedi.&lt;/p&gt;
&lt;p&gt;n8n è una piattaforma di automazione che supporta l&#39;integrazione con varie reti neurali e servizi pubblici. Gli utenti possono progettare visivamente le modalità di elaborazione dei dati e i risultati finali da ottenere. A differenza delle classiche soluzioni no-code, n8n consente di includere codice arbitrario in qualsiasi fase del processo, il che è particolarmente utile quando le funzionalità integrate non sono sufficienti.&lt;/p&gt;
&lt;p&gt;Il risultato è un sistema che unisce la semplicità del no-code alla flessibilità della programmazione tradizionale. Tuttavia, per comprenderlo appieno, è necessario dedicare un po&#39; di tempo all&#39;esplorazione e alla revisione di esempi di flussi di lavoro per una migliore comprensione. In questo articolo vi spiegheremo come implementare n8n sui server LeaderGPU.&lt;/p&gt;
&lt;h2&gt;Preparazione del server&lt;/h2&gt;
&lt;h3&gt;Aggiornare il sistema&lt;/h3&gt;
&lt;p&gt;Aggiornare l&#39;elenco dei pacchetti e aggiornare tutti i pacchetti installati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare automaticamente il driver NVIDIA® consigliato (proprietario) o utilizzare la nostra guida passo-passo &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot; target=&quot;_blank&quot;&gt;Installa i driver NVIDIA® in Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare Docker&lt;/h3&gt;
&lt;p&gt;È possibile utilizzare lo script di installazione ufficiale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungiamo la chiave GPG e il repository di NVIDIA® container toolkit per l&#39;integrazione di Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare l&#39;elenco dei pacchetti e installare NVIDIA® container toolkit:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare Docker per applicare le modifiche e abilitare il toolkit installato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare n8n&lt;/h3&gt;
&lt;p&gt;Per consentire al sistema di memorizzare i dati, è necessario creare un volume prima di lanciare il contenitore:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker volume create n8n_data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviamo ora un contenitore che aprirà la porta 5678 per le connessioni esterne e monterà il volume &lt;b translate=&quot;no&quot;&gt;n8n_data&lt;/b&gt; creato nella directory &lt;b translate=&quot;no&quot;&gt;/home/node/.n8n&lt;/b&gt; all&#39;interno del contenitore:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La prima volta che si lancia l&#39;applicazione, si potrebbe rimanere perplessi di fronte al seguente messaggio di errore:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/152/original/sh_how_to_install_n8n_1.png?1750667132&quot; alt=&quot;TLS-error N8N&quot;&gt;
&lt;p&gt;Non si tratta esattamente di un errore, ma piuttosto di un avvertimento su come configurare correttamente il sistema per l&#39;accesso. Il problema è che, per impostazione predefinita, il sistema non dispone di un certificato TLS/HTTPS. Senza di esso, la connessione non sarà sicura. Quindi, avete tre opzioni:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Connect your own certificate&lt;/b&gt;. È possibile farlo specificando i percorsi dei file dei certificati tramite variabili d&#39;ambiente o configurando un server proxy inverso.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Create an SSH tunnel and forward port 5678&lt;/b&gt; a localhost sul computer da cui ci si connette. In questo modo, si otterrà immediatamente una connessione personale sicura. Tuttavia, nessun altro potrà accedere al server dall&#39;esterno.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Bypass the warning&lt;/b&gt;. Se si tratta di un server di prova non destinato alla produzione e non ci si preoccupa della sicurezza, si può disabilitare l&#39;avviso impostando la variabile d&#39;ambiente &lt;b translate=&quot;no&quot;&gt;N8N_SECURE_COOKIE&lt;/b&gt; su &lt;b translate=&quot;no&quot;&gt;FALSE&lt;/b&gt;. Questo è fortemente sconsigliato perché rende il server vulnerabile a potenziali attacchi. Tuttavia, potrebbe essere accettabile in scenari specifici.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questo articolo analizzerà in dettaglio ogni opzione, in modo da poter scegliere quella giusta.&lt;/p&gt;
&lt;h2&gt;Connessione al server&lt;/h2&gt;
&lt;p&gt;Se non avete ancora un certificato SSL, vi consigliamo di ordinarne uno da &lt;a href=&quot;https://www.leaderssl.com/&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;LeaderSSL. Può essere utilizzato per qualsiasi sito web, negozio online o per verificare l&#39;autenticità di un&#39;e-mail.&lt;/p&gt;
&lt;h3&gt;Uso delle variabili d&#39;ambiente&lt;/h3&gt;
&lt;p&gt;Il modo più semplice per configurare l&#39;HTTPS è caricare il certificato sul server e specificarlo tramite le variabili d&#39;ambiente di Docker. Si inizia creando una cartella per i file del certificato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir ~/n8n-certs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È possibile caricare questi file (tipicamente cert.crt e privkey.key) in questa directory utilizzando qualsiasi metodo. Per informazioni più dettagliate, vedere:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/495-scambio-di-file-da-windows&quot;&gt;Scambio di file da Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/494-scambio-di-file-da-linux&quot;&gt;Scambio di file da Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/496-scambio-di-file-da-macos&quot;&gt;Scambio di file da macOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ora lanciamo il contenitore con un comando completo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-v ~/n8n-certs:/certs \
-e N8N_PROTOCOL=https \
-e N8N_SSL_CERT=&quot;/certs/cert.crt&quot; \
-e N8N_SSL_KEY=&quot;/certs/privkey.key&quot; \
docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ecco la ripartizione di ogni argomento:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;sudo docker run -d&lt;/b&gt; lancia il contenitore Docker in modalità daemon (in background)&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--name n8n&lt;/b&gt; assegna il nome al contenitore &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p 5678:5678&lt;/b&gt; inoltra la porta &lt;b translate=&quot;no&quot;&gt;5678&lt;/b&gt; al contenitore&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v n8n_data:/home/node/.n8n&lt;/b&gt; crea e monta un volume chiamato &lt;b translate=&quot;no&quot;&gt;n8n_data&lt;/b&gt; nella directory nascosta &lt;b translate=&quot;no&quot;&gt;/home/node/.n8n&lt;/b&gt; all&#39;interno del contenitore&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v ~/n8n-certs:/certs&lt;/b&gt; monta la directory dei certificati&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_PROTOCOL=https&lt;/b&gt; obbliga N8N a utilizzare il protocollo HTTPS&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_SSL_CERT=&quot;/certs/cert.crt&quot;&lt;/b&gt; imposta il percorso del file del certificato&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_SSL_KEY=&quot;/certs/privkey.key&quot;&lt;/b&gt; imposta il percorso della chiave del certificato&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;docker.n8n.io/n8nio/n8n&lt;/b&gt; sorgente dell&#39;immagine del contenitore&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Traefik&lt;/h3&gt;
&lt;p&gt;Una configurazione leggermente più complessa ma flessibile prevede l&#39;utilizzo del server reverse proxy Traefik per proteggere la connessione a N8N. Il file di configurazione si basa sul metodo ufficiale specificato nella documentazione. Innanzitutto, installare lo strumento &lt;b translate=&quot;no&quot;&gt;docker-compose&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traefik e N8N verranno distribuiti insieme e devono trovarsi sulla stessa rete. Creare una rete chiamata &lt;b translate=&quot;no&quot;&gt;web&lt;/b&gt;.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker network create web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora, creare un file &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; per definire ed eseguire entrambi i contenitori:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;services:
  traefik:
    image: &quot;traefik&quot;
    container_name: &quot;proxy&quot;
    restart: always
    command:
      - &quot;--api.insecure=true&quot;
      - &quot;--providers.docker=true&quot;
      - &quot;--providers.docker.exposedbydefault=false&quot;
      - &quot;--entrypoints.web.address=:80&quot;
      - &quot;--entrypoints.web.http.redirections.entryPoint.to=websecure&quot;
      - &quot;--entrypoints.web.http.redirections.entrypoint.scheme=https&quot;
      - &quot;--entrypoints.websecure.address=:443&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.tlschallenge=true&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json&quot;
    ports:
      - &quot;80:80&quot;
      - &quot;443:443&quot;
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: &quot;n8n&quot;
    restart: always
    ports:
      - &quot;127.0.0.1:5678:5678&quot;
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files
    networks:
      - web

volumes:
  n8n_data:
  traefik_data:

networks:
  web:
    name: web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oltre al file &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt;, creeremo un altro file chiamato &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt;. Questo file conterrà variabili come il nome del dominio e l&#39;indirizzo e-mail usati per richiedere un certificato SSL a Let&#39;s Encrypt. Se dovessimo cambiare qualcosa, come il nome del dominio, basterà aggiornarlo in questo file e poi ricreare il contenitore.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .env&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Amsterdam
SSL_EMAIL=user@example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, distribuire entrambi i contenitori:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
Ora, N8N è disponibile qui: &lt;b translate=&quot;no&quot;&gt;https://n8n.example.com&lt;/b&gt;.&lt;h3&gt;Gestore del proxy Nginx&lt;/h3&gt;
&lt;p&gt;A differenza di Traefik, che si configura tramite file, Nginx Proxy Manager offre un&#39;interfaccia web di facile utilizzo. Tuttavia, non rileva i servizi in modo dinamico, è necessario aggiungerli manualmente. Tuttavia, funziona bene per servizi statici come N8N.&lt;/p&gt;
&lt;p&gt;Creare un altro file &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; in una cartella separata con il seguente contenuto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;services:
  app:
    image: &#39;jc21/nginx-proxy-manager:latest&#39;
    container_name: proxy
    restart: unless-stopped
    ports:
      - &#39;80:80&#39;
      - &#39;443:443&#39;
      - &#39;81:81&#39;
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - web

volumes:
  n8n_data:

networks:
  web:
    external: true&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Distribuire con:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire quindi l&#39;interfaccia web a: &lt;b translate=&quot;no&quot;&gt;http://your_hostname_or_ip:81&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Nome utente: &lt;b translate=&quot;no&quot;&gt;admin@example.com&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;Password: &lt;b translate=&quot;no&quot;&gt;changeme&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verrà richiesto di aggiornare le credenziali. Successivamente, aprite &lt;b translate=&quot;no&quot;&gt;Hosts → Proxy Hosts → Add Proxy Host&lt;/b&gt; e inserite il vostro nome di dominio (ad esempio, &lt;b translate=&quot;no&quot;&gt;n8n.example.com&lt;/b&gt;):&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/153/original/sh_how_to_install_n8n_2.png?1750667229&quot; alt=&quot;Add domain N8N&quot;&gt;
&lt;p&gt;Compilare i campi necessari:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Impostare &lt;b translate=&quot;no&quot;&gt;Destination/IP&lt;/b&gt; su &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Impostare &lt;b translate=&quot;no&quot;&gt;Port&lt;/b&gt; su &lt;b translate=&quot;no&quot;&gt;5678&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Nella scheda &lt;b translate=&quot;no&quot;&gt;SSL&lt;/b&gt;, scegliere &lt;b translate=&quot;no&quot;&gt;Request a new SSL certificate with Let’s Encrypt&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Inserite il vostro indirizzo e-mail e accettate i termini.&lt;/li&gt;
    &lt;li&gt;Fare clic su &lt;b&gt;Websockets support&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Cliccare facoltativamente su &lt;b translate=&quot;no&quot;&gt;Force SSL&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dopo aver premuto il pulsante &lt;b translate=&quot;no&quot;&gt;Save&lt;/b&gt;, il certificato verrà richiesto e installato:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/154/original/sh_how_to_install_n8n_3.png?1750667362&quot; alt=&quot;Nginx Proxy Manager ready&quot;&gt;
&lt;p&gt;Una volta fatto, aprendo il dominio si accederà all&#39;interfaccia N8N.&lt;/p&gt;
&lt;h3&gt;Tunnel SSH&lt;/h3&gt;
&lt;p&gt;Se non si ha bisogno di accedere all&#39;N8N dall&#39;esterno, è possibile inoltrare la porta 5678 tramite SSH. In questo modo si cripta tutto il traffico e l&#39;N8N sarà disponibile all&#39;indirizzo &lt;b translate=&quot;no&quot;&gt;http://localhost:5678/&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nota: questa configurazione non funziona per le integrazioni con servizi esterni come i messenger che richiedono un accesso pubblico HTTPS.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Il modo più semplice per inoltrare la porta è il popolare client SSH &lt;a href=&quot;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&quot; target=&quot;_blank&quot;&gt;PuTTY&lt;/a&gt;. Una volta installato, aprire &lt;b translate=&quot;no&quot;&gt;SSH → Tunnels&lt;/b&gt; e impostare &lt;b translate=&quot;no&quot;&gt;Source port - 5678&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Destination&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;localhost:5678&lt;/b&gt;. Quindi fare clic su &lt;b translate=&quot;no&quot;&gt;Add&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/155/original/sh_how_to_install_n8n_4.png?1750667446&quot; alt=&quot;PuTTY port forwarding&quot;&gt;
&lt;p&gt;Tornare a &lt;b translate=&quot;no&quot;&gt;Session&lt;/b&gt;, inserire l&#39;IP del server e fare clic su &lt;b translate=&quot;no&quot;&gt;Open&lt;/b&gt;. Una volta autenticati, il tunnel è attivo. Aprire &lt;b translate=&quot;no&quot;&gt;http://localhost:5678&lt;/b&gt; in un browser per accedere a N8N.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nota: la connessione funziona solo quando la sessione SSH è attiva. La chiusura di PuTTY interromperà il tunnel.&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Bypassare&lt;/h3&gt;
&lt;p&gt;Questo metodo non è consigliato per l&#39;uso su reti pubbliche. Se si lancia il contenitore con la variabile d&#39;ambiente &lt;b translate=&quot;no&quot;&gt;N8N_SECURE_COOKIE=false&lt;/b&gt;, l&#39;avviso scomparirà e si potrà accedere via HTTP:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --name n8n -p 5678:5678 -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Warning:&lt;/b&gt; Questo espone il pannello di amministrazione di N8N tramite HTTP non criptato, rendendolo vulnerabile agli attacchi MITM (Man-In-The-Middle) e consentendo potenzialmente a un aggressore di prendere il controllo del server.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/602-come-monitorare-l-applicazione-langflow&quot;&gt;Come monitorare l&#39;applicazione LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/151/original/il_how_to_install_n8n.png?1750667003"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 23 Jun 2025 14:30:26 +0200</pubDate>
      <guid isPermaLink="false">622</guid>
      <dc:date>2025-06-23 14:30:26 +0200</dc:date>
    </item>
    <item>
      <title>Triton™ Inference Server</title>
      <link>https://www.leadergpu.it/catalog/614-triton-inference-server</link>
      <description>&lt;p&gt;I requisiti aziendali possono variare, ma tutti condividono un principio fondamentale: i sistemi devono funzionare rapidamente e fornire la massima qualità possibile. Quando si tratta di inferenza di reti neurali, l&#39;uso efficiente delle risorse di calcolo diventa fondamentale. Qualsiasi sottoutilizzo della GPU o tempo di inattività si traduce direttamente in perdite finanziarie.&lt;/p&gt;
&lt;p&gt;Consideriamo un mercato come esempio. Queste piattaforme ospitano numerosi prodotti, ciascuno con diversi attributi: descrizioni testuali, specifiche tecniche, categorie e contenuti multimediali come foto e video. Tutti i contenuti richiedono una moderazione per mantenere condizioni eque per i venditori ed evitare che merci vietate o contenuti illegali appaiano sulla piattaforma.&lt;/p&gt;
&lt;p&gt;La moderazione manuale è possibile, ma è lenta e inefficiente. Nell&#39;ambiente competitivo di oggi, i venditori hanno bisogno di espandere rapidamente la propria gamma di prodotti: più velocemente gli articoli appaiono sul marketplace, maggiori sono le possibilità di essere scoperti e acquistati. La moderazione manuale è inoltre costosa e soggetta a errori umani, che potrebbero consentire il passaggio di contenuti inappropriati.&lt;/p&gt;
&lt;p&gt;La moderazione automatica, che utilizza reti neurali appositamente addestrate, offre una soluzione. Questo approccio offre molteplici vantaggi: riduce sostanzialmente i costi di moderazione, migliorando al contempo la qualità. Le reti neurali elaborano i contenuti molto più velocemente degli esseri umani, consentendo ai venditori di superare più rapidamente la fase di moderazione, soprattutto quando si gestiscono grandi volumi di prodotti.&lt;/p&gt;
&lt;p&gt;L&#39;approccio ha le sue sfide. L&#39;implementazione di una moderazione automatizzata richiede lo sviluppo e l&#39;addestramento di modelli di reti neurali, che richiedono personale qualificato e notevoli risorse informatiche. Tuttavia, i vantaggi diventano evidenti subito dopo l&#39;implementazione iniziale. L&#39;aggiunta dell&#39;implementazione automatica dei modelli può snellire in modo significativo le operazioni in corso.&lt;/p&gt;
&lt;h2&gt;Inferenza&lt;/h2&gt;
&lt;p&gt;Supponiamo di aver capito le procedure di apprendimento automatico. Il passo successivo è determinare come eseguire l&#39;inferenza del modello su un server in affitto. Per un singolo modello, di solito si sceglie uno strumento che funziona bene con il framework specifico su cui è stato costruito. Tuttavia, quando si ha a che fare con più modelli creati in framework diversi, si hanno due opzioni.&lt;/p&gt;
&lt;p&gt;Si possono convertire tutti i modelli in un unico formato, oppure scegliere uno strumento che supporti più framework. Triton™ Inference Server si adatta perfettamente al secondo approccio. Supporta i seguenti backend:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;TensorRT™&lt;/li&gt;
    &lt;li&gt;TensorRT-LLM&lt;/li&gt;
    &lt;li&gt;vLLM&lt;/li&gt;
    &lt;li&gt;Pitone&lt;/li&gt;
    &lt;li&gt;PyTorch (LibTorch)&lt;/li&gt;
    &lt;li&gt;Runtime ONNX&lt;/li&gt;
    &lt;li&gt;Tensorflow&lt;/li&gt;
    &lt;li&gt;FIL&lt;/li&gt;
    &lt;li&gt;DALI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inoltre, è possibile utilizzare qualsiasi applicazione come backend. Ad esempio, se avete bisogno di una post-elaborazione con un&#39;applicazione C/C++, potete integrarla senza problemi.&lt;/p&gt;
&lt;h2&gt;Scalare&lt;/h2&gt;
&lt;p&gt;Triton™ Inference Server gestisce in modo efficiente le risorse di calcolo su un singolo server eseguendo più modelli contemporaneamente e distribuendo il carico di lavoro sulle GPU.&lt;/p&gt;
&lt;p&gt;L&#39;installazione avviene tramite un container Docker. Gli ingegneri DevOps possono controllare l&#39;allocazione delle GPU all&#39;avvio, scegliendo di utilizzare tutte le GPU o di limitarne il numero. Sebbene il software non gestisca direttamente lo scaling orizzontale, è possibile utilizzare bilanciatori di carico tradizionali come HAproxy o distribuire le applicazioni in un cluster Kubernetes.&lt;/p&gt;
&lt;h2&gt;Preparazione del sistema&lt;/h2&gt;
&lt;p&gt;Per configurare Triton™ su un server LeaderGPU con Ubuntu 22.04, aggiornare prima il sistema con questo comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Innanzitutto, installare i driver NVIDIA® utilizzando lo script di autoinstallazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server per applicare le modifiche:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una Volta™ che il server è di nuovo online, installare Docker utilizzando il seguente script di installazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Poiché Docker non è in grado di passare le GPU ai container per impostazione predefinita, è necessario NVIDIA® Container Toolkit. Aggiungere il repository NVIDIA® scaricando e registrando la sua chiave GPG:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare la cache dei pacchetti e installare il toolkit:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare Docker per abilitare le nuove funzionalità:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il sistema operativo è ora pronto all&#39;uso.&lt;/p&gt;
&lt;h2&gt;Installazione del server di inferenza Triton™&lt;/h2&gt;
&lt;p&gt;Scarichiamo il repository del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/triton-inference-server/server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo repository contiene esempi di reti neurali preconfigurate e uno script per il download del modello. Navigare nella directory examples:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd server/docs/examples&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare i modelli eseguendo il seguente script, che li salverà in &lt;b translate=&quot;no&quot;&gt;~/server/docs/examples/model_repository&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./fetch_models.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;architettura di Triton™ Inference Server richiede che i modelli siano memorizzati separatamente. È possibile memorizzarli localmente in una qualsiasi directory del server o su una memoria di rete. Quando si avvia il server, è necessario montare questa directory nel contenitore nel punto di montaggio /models. Questo serve come repository per tutte le versioni dei modelli.&lt;/p&gt;
&lt;p&gt;Avviare il contenitore con questo comando&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --gpus=all --rm -p8000:8000 -p8001:8001 -p8002:8002 -v ~/server/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:25.01-py3 tritonserver --model-repository=/models&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ecco cosa fa ogni parametro:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gpus=all&lt;/b&gt; specifica che tutte le GPU disponibili saranno utilizzate nel server;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--rm&lt;/b&gt; distrugge il contenitore dopo il completamento o l&#39;arresto del processo;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8000:8000&lt;/b&gt; inoltra la porta 8000 per ricevere le richieste HTTP;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8001:8001&lt;/b&gt; inoltra la porta 8001 per ricevere le richieste gRPC;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8002:8002&lt;/b&gt; inoltra la porta 8002 per richiedere le metriche;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v ~/server/docs/examples/model_repository:/models&lt;/b&gt; inoltra la directory con i modelli;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;nvcr.io/nvidia/tritonserver:25.01-py3&lt;/b&gt; indirizzo del contenitore dal catalogo NGC;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;tritonserver --model-repository=/models&lt;/b&gt; lancia il Triton™ Inference Server con la posizione del repository dei modelli a /models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&#39;output del comando mostrerà tutti i modelli disponibili nel repository, ognuno pronto ad accettare richieste:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;+----------------------+---------+--------+
| Model                | Version | Status |
+----------------------+---------+--------+
| densenet_onnx        | 1       | READY  |
| inception_graphdef   | 1       | READY  |
| simple               | 1       | READY  |
| simple_dyna_sequence | 1       | READY  |
| simple_identity      | 1       | READY  |
| simple_int8          | 1       | READY  |
| simple_sequence      | 1       | READY  |
| simple_string        | 1       | READY  |
+----------------------+---------+--------+&lt;/pre&gt;
&lt;p&gt;I tre servizi sono stati lanciati con successo sulle porte 8000, 8001 e 8002:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;I0217 08:00:34.930188 1 grpc_server.cc:2466] Started GRPCInferenceService at 0.0.0.0:8001
I0217 08:00:34.930393 1 http_server.cc:4636] Started HTTPService at 0.0.0.0:8000
I0217 08:00:34.972340 1 http_server.cc:320] Started Metrics Service at 0.0.0.0:8002&lt;/pre&gt;
&lt;p&gt;Utilizzando l&#39;utilità nvtop, possiamo verificare che tutte le GPU sono pronte ad accettare il carico:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/132/original/sh_triton_inference_server_1.png?1740580538&quot; alt=&quot;8 x A6000 Triton Inference Server examples&quot;&gt;
&lt;h2&gt;Installazione del client&lt;/h2&gt;
&lt;p&gt;Per accedere al nostro server, dobbiamo generare una richiesta appropriata usando il client incluso nell&#39;SDK. Possiamo scaricare questo SDK come contenitore Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker pull nvcr.io/nvidia/tritonserver:25.01-py3-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire il contenitore in modalità interattiva per accedere alla console:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -it --gpus=all --rm --net=host nvcr.io/nvidia/tritonserver:25.01-py3-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verifichiamo questo con il modello DenseNet in formato ONNX, utilizzando il metodo INCEPTION per preelaborare e analizzare l&#39;immagine &lt;b translate=&quot;no&quot;&gt;mug.jpg&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;/workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il client contatterà il server, che creerà un batch e lo elaborerà utilizzando le GPU disponibili nel container. Ecco l&#39;output:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;Request 0, batch size 1
Image &#39;/workspace/images/mug.jpg&#39;:
   15.349562 (504) = COFFEE MUG
   13.227461 (968) = CUP
   10.424891 (505) = COFFEEPOT&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Preparazione del repository&lt;/h2&gt;
&lt;p&gt;Affinché Triton™ gestisca correttamente i modelli, è necessario preparare il repository in un modo specifico. Ecco la struttura della directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;model_repository/ 
        └── your_model/ 
                ├── config.pbtxt 
                └── 1/
                    └── model.*&lt;/pre&gt;
&lt;p&gt;Ogni modello ha bisogno di una propria directory contenente un file di configurazione &lt;b translate=&quot;no&quot;&gt;config.pbtxt&lt;/b&gt; con la sua descrizione. Ecco un esempio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;name: &quot;Test&quot;
platform: &quot;pytorch_libtorch&quot;
max_batch_size: 8
input [
  {
    name: &quot;INPUT_0&quot;
    data_type: TYPE_FP32
    dims: [ 3, 224, 224 ]
  }
]
output [
  {
    name: &quot;OUTPUT_0&quot;
    data_type: TYPE_FP32
    dims: [ 1000 ]
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In questo esempio, un modello chiamato &lt;b translate=&quot;no&quot;&gt;Test&lt;/b&gt; verrà eseguito sul backend PyTorch. Il parametro &lt;b translate=&quot;no&quot;&gt;max_batch_size&lt;/b&gt; imposta il numero massimo di elementi che possono essere elaborati simultaneamente, consentendo un efficiente bilanciamento del carico tra le risorse. L&#39;impostazione di questo valore a zero disabilita il batching, facendo sì che il modello elabori le richieste in modo sequenziale.&lt;/p&gt;
&lt;p&gt;Il modello accetta un ingresso e produce un&#39;uscita, entrambi utilizzando il tipo di numero FP32. I parametri devono corrispondere esattamente ai requisiti del modello. Per l&#39;elaborazione delle immagini, una tipica specifica di dimensione è &lt;b translate=&quot;no&quot;&gt;dims: [ 3, 224, 224 ]&lt;/b&gt;, dove:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;3&lt;/b&gt; - numero di canali di colore (RGB);&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;224&lt;/b&gt; - altezza dell&#39;immagine in pixel;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;224&lt;/b&gt; - larghezza dell&#39;immagine in pixel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&#39;output &lt;b translate=&quot;no&quot;&gt;dims: [ 1000 ]&lt;/b&gt; rappresenta un vettore unidimensionale di 1000 elementi, adatto alle attività di classificazione delle immagini. Per determinare la dimensione corretta del modello, consultare la relativa documentazione. Se il file di configurazione è incompleto, Triton™ cercherà di generare automaticamente i parametri mancanti.&lt;/p&gt;
&lt;h2&gt;Avvio di un modello personalizzato&lt;/h2&gt;
&lt;p&gt;Avviamo l&#39;inferenza del modello DeepSeek-R1 distillato di cui abbiamo &lt;a href=&quot;https://www.leadergpu.it/catalog/613-deepseek-r1-il-futuro-dei-llm&quot;&gt;parlato&lt;/a&gt; in precedenza. Per prima cosa, creeremo la struttura di directory necessaria:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir ~/model_repository &amp;&amp; mkdir ~/model_repository/deepseek &amp;&amp; mkdir ~/model_repository/deepseek/1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigare nella directory del modello:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/model_repository/deepseek&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un file di configurazione &lt;b translate=&quot;no&quot;&gt;config.pbtxt&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano config.pbtxt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Incollare quanto segue:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;# Copyright 2023, NVIDIA CORPORATION &amp; AFFILIATES. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#  * Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  * Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#  * Neither the name of NVIDIA CORPORATION nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS&#39;&#39; AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
# Note: You do not need to change any fields in this configuration.
    
backend: &quot;vllm&quot;
    
# The usage of device is deferred to the vLLM engine
instance_group [
  {
    count: 1
    kind: KIND_MODEL
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file premendo &lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt;, poi l&#39;editor con &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;. Navigare nella directory &lt;b translate=&quot;no&quot;&gt;1&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un file di configurazione del modello &lt;b translate=&quot;no&quot;&gt;model.json&lt;/b&gt; con i seguenti parametri:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;{
    &quot;model&quot;:&quot;deepseek-ai/DeepSeek-R1-Distill-Llama-8B&quot;,
    &quot;disable_log_requests&quot;: true,
    &quot;gpu_memory_utilization&quot;: 0.9,
    &quot;enforce_eager&quot;: true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si noti che il valore di &lt;b translate=&quot;no&quot;&gt;gpu_memory_utilization&lt;/b&gt; varia a seconda della GPU e deve essere determinato sperimentalmente. Per questa guida, useremo &lt;b translate=&quot;no&quot;&gt;0.9&lt;/b&gt;. La struttura della directory all&#39;interno di &lt;b translate=&quot;no&quot;&gt;~/model_repository&lt;/b&gt; dovrebbe ora apparire come segue:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;└── deepseek
        ├── 1
        │   └── model.json
        └── config.pbtxt&lt;/pre&gt;
&lt;p&gt;Impostare la variabile &lt;b translate=&quot;no&quot;&gt;LOCAL_MODEL_REPOSITORY&lt;/b&gt; per comodità:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;LOCAL_MODEL_REPOSITORY=~/model_repository/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare il server di inferenza con questo comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --rm -it --net host --shm-size=2g  --ulimit memlock=-1 --ulimit stack=67108864 --gpus all -v $LOCAL_MODEL_REPOSITORY:/opt/tritonserver/model_repository  nvcr.io/nvidia/tritonserver:25.01-vllm-python-py3 tritonserver --model-repository=model_repository/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ecco cosa fa ogni parametro:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--rm&lt;/b&gt; rimuove automaticamente il contenitore dopo l&#39;arresto;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-it&lt;/b&gt; esegue il contenitore in modalità interattiva con output da terminale;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--net&lt;/b&gt; utilizza lo stack di rete dell&#39;host invece dell&#39;isolamento del contenitore;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--shm-size=2g&lt;/b&gt; imposta la memoria condivisa a 2 GB;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--ulimit memlock=-1&lt;/b&gt; rimuove il limite di blocco della memoria;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--ulimit stack=67108864&lt;/b&gt; imposta la dimensione dello stack a 64 MB;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gpus all&lt;/b&gt; abilita l&#39;accesso a tutte le GPU del server;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v $LOCAL_MODEL_REPOSITORY:/opt/tritonserver/model_repository&lt;/b&gt; monta la directory locale del modello nel contenitore;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;nvcr.io/nvidia/tritonserver:25.01-vllm-python-py3&lt;/b&gt; specifica il contenitore con il supporto del backend vLLM;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;tritonserver --model-repository=model_repository/&lt;/b&gt; lancia il Triton™ Inference Server con la posizione del repository dei modelli in model_repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Testare il server inviando una richiesta con &lt;b translate=&quot;no&quot;&gt;curl&lt;/b&gt;, utilizzando un semplice prompt e un limite di risposta di 4096 token:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -X POST localhost:8000/v2/models/deepseek/generate -d &#39;{&quot;text_input&quot;: &quot;Tell me about the Netherlands?&quot;, &quot;max_tokens&quot;: 4096}&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il server riceve ed elabora con successo la richiesta.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/133/original/sh_triton_inference_server_2.png?1740580601&quot; alt=&quot;Triton Inference Server processed the test request&quot;&gt;
&lt;p&gt;Il task scheduler interno di Triton™ gestisce tutte le richieste in arrivo quando il server è sotto carico.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Triton™ Inference Server eccelle nell&#39;implementazione di modelli di apprendimento automatico in produzione, distribuendo in modo efficiente le richieste sulle GPU disponibili. Questo massimizza l&#39;uso delle risorse del server in affitto e riduce i costi dell&#39;infrastruttura di calcolo. Il software funziona con diversi backend, tra cui vLLM per modelli linguistici di grandi dimensioni.&lt;/p&gt;
&lt;p&gt;Poiché si installa come contenitore Docker, è possibile integrarlo facilmente in qualsiasi pipeline CI/CD moderna. Provatelo voi stessi &lt;a href=&quot;https://www.leadergpu.it/it#chose-best&quot;&gt;noleggiando un server&lt;/a&gt; da LeaderGPU.&lt;/p&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/134/original/il_triton_inference_server.png?1740583888"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 26 Feb 2025 16:40:21 +0100</pubDate>
      <guid isPermaLink="false">614</guid>
      <dc:date>2025-02-26 16:40:21 +0100</dc:date>
    </item>
    <item>
      <title>DeepSeek-R1: il futuro dei LLM</title>
      <link>https://www.leadergpu.it/catalog/613-deepseek-r1-il-futuro-dei-llm</link>
      <description>&lt;p&gt;Sebbene le reti neurali generative si siano sviluppate rapidamente, negli ultimi anni i loro progressi sono rimasti piuttosto costanti. La situazione è cambiata con l&#39;arrivo di DeepSeek, una rete neurale cinese che non solo ha avuto un impatto sul mercato azionario, ma ha anche catturato l&#39;attenzione di sviluppatori e ricercatori di tutto il mondo. A differenza di altri grandi progetti, il codice di DeepSeek è stato rilasciato con la licenza MIT. Questo passaggio all&#39;open source si è guadagnato il plauso della comunità, che ha iniziato a esplorare le capacità del nuovo modello.&lt;/p&gt;
&lt;p&gt;L&#39;aspetto più impressionante è che l&#39;addestramento di questa nuova rete neurale è costato 20 volte meno rispetto ai concorrenti che offrono una qualità simile. L&#39;addestramento del modello ha richiesto solo 55 giorni e 5,6 milioni di dollari. Quando DeepSeek è stato rilasciato, ha innescato uno dei più grandi cali di un giorno nella storia del mercato azionario statunitense. Anche se alla fine i mercati si sono stabilizzati, l&#39;impatto è stato significativo.&lt;/p&gt;
&lt;p&gt;Questo articolo esaminerà la precisione con cui i titoli dei media riflettono la realtà ed esplorerà quali configurazioni di LeaderGPU sono adatte per installare questa rete neurale.&lt;/p&gt;
&lt;h2&gt;Caratteristiche architettoniche&lt;/h2&gt;
&lt;p&gt;DeepSeek ha scelto un percorso di massima ottimizzazione, che non sorprende viste le restrizioni all&#39;esportazione della Cina negli Stati Uniti. Queste restrizioni impediscono al Paese di utilizzare ufficialmente i modelli di GPU più avanzati per lo sviluppo dell&#39;intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;Il modello impiega la tecnologia Multi Token Prediction (MTP), che prevede più token in una singola fase di inferenza invece di uno solo. Questo funziona grazie alla decodifica parallela dei token combinata con speciali strati mascherati che mantengono l&#39;autoregressività.&lt;/p&gt;
&lt;p&gt;I test MTP hanno dato risultati notevoli, aumentando la velocità di generazione di 2-4 volte rispetto ai metodi tradizionali. L&#39;eccellente scalabilità della tecnologia la rende preziosa per le applicazioni di elaborazione del linguaggio naturale attuali e future.&lt;/p&gt;
&lt;p&gt;Il modello Multi-Head Latent Attention (MLA) presenta un meccanismo di attenzione potenziato. Quando il modello costruisce lunghe catene di ragionamenti, mantiene l&#39;attenzione sul contesto in ogni fase. Questa miglioria migliora la gestione dei concetti astratti e delle dipendenze dal testo.&lt;/p&gt;
&lt;p&gt;La caratteristica principale di MLA è la capacità di regolare dinamicamente i pesi dell&#39;attenzione su diversi livelli di astrazione. Quando elabora query complesse, MLA esamina i dati da più prospettive: il significato delle parole, la struttura delle frasi e il contesto generale. Queste prospettive formano livelli distinti che influenzano l&#39;output finale. Per mantenere la chiarezza, MLA bilancia attentamente l&#39;impatto di ogni livello, rimanendo concentrato sul compito principale.&lt;/p&gt;
&lt;p&gt;Gli sviluppatori di DeepSeek hanno incorporato la tecnologia Mixture of Experts (MoE) nel modello. Essa contiene 256 reti neurali esperte pre-addestrate, ognuna specializzata per compiti diversi. Il sistema attiva 8 di queste reti per ogni input di token, consentendo un&#39;elaborazione efficiente dei dati senza aumentare i costi di calcolo.&lt;/p&gt;
&lt;p&gt;Nel modello completo con 671 parametri, solo 37 sono attivati per ogni token. Il modello seleziona in modo intelligente i parametri più rilevanti per l&#39;elaborazione di ciascun token in ingresso. Questa efficiente ottimizzazione consente di risparmiare risorse computazionali mantenendo alte le prestazioni.&lt;/p&gt;
&lt;p&gt;Una caratteristica fondamentale di qualsiasi chatbot a rete neurale è la lunghezza della finestra di contesto. Llama 2 ha un limite di contesto di 4.096 token, GPT-3.5 gestisce 16.284 token, mentre GPT-4 e DeepSeek possono elaborare fino a 128.000 token (circa 100.000 parole, equivalenti a 300 pagine di testo dattiloscritto).&lt;/p&gt;
&lt;h2&gt;R - sta per Ragionamento&lt;/h2&gt;
&lt;p&gt;DeepSeek-R1 ha acquisito un meccanismo di ragionamento simile a quello di OpenAI o1, che gli consente di gestire compiti complessi in modo più efficiente e accurato. Invece di fornire risposte immediate, il modello espande il contesto generando ragionamenti passo-passo in piccoli paragrafi. Questo approccio migliora la capacità della rete neurale di identificare relazioni complesse tra i dati, ottenendo risposte più complete e precise.&lt;/p&gt;
&lt;p&gt;Quando si trova di fronte a un compito complesso, DeepSeek utilizza il suo meccanismo di ragionamento per scomporre il problema in componenti e analizzare ciascuno di essi separatamente. Il modello sintetizza poi questi risultati per generare una risposta per l&#39;utente. Sebbene questo sembri essere l&#39;approccio ideale per le reti neurali, comporta sfide significative.&lt;/p&gt;
&lt;p&gt;Tutti i moderni LLM condividono un tratto preoccupante: le allucinazioni artificiali. Quando gli viene posta una domanda a cui non può rispondere, invece di riconoscere i propri limiti, il modello potrebbe generare risposte fittizie supportate da fatti inventati.&lt;/p&gt;
&lt;p&gt;Se applicate a una rete neurale di ragionamento, queste allucinazioni potrebbero compromettere il processo di pensiero, basando le conclusioni su informazioni fittizie anziché reali. Ciò potrebbe portare a conclusioni errate, una sfida che i ricercatori e gli sviluppatori di reti neurali dovranno affrontare in futuro.&lt;/p&gt;
&lt;h2&gt;Consumo di VRAM&lt;/h2&gt;
&lt;p&gt;Vediamo come eseguire e testare DeepSeek R1 su un server dedicato, concentrandoci sui requisiti di memoria video della GPU.&lt;/p&gt;
&lt;table style=&quot;margin: auto;&quot; width=&quot;50%&quot;&gt;
    &lt;th&gt;Modello&lt;/th&gt;
    &lt;th&gt;VRAM (Mb)&lt;/th&gt;
    &lt;th&gt;Dimensione del modello (Gb)&lt;/th&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:1.5b&lt;/td&gt;
        &lt;td&gt;1,952&lt;/td&gt;
        &lt;td&gt;1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:7b&lt;/td&gt;
        &lt;td&gt;5,604&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:8b&lt;/td&gt;
        &lt;td&gt;6,482&lt;/td&gt;
        &lt;td&gt;4.9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:14b&lt;/td&gt;
        &lt;td&gt;10,880&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:32b&lt;/td&gt;
        &lt;td&gt;21,758&lt;/td&gt;
        &lt;td&gt;20&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:70b&lt;/td&gt;
        &lt;td&gt;39,284&lt;/td&gt;
        &lt;td&gt;43&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:671b&lt;/td&gt;
        &lt;td&gt;470,091&lt;/td&gt;
        &lt;td&gt;404&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Le prime tre opzioni (1.5b, 7b, 8b) sono modelli di base in grado di gestire in modo efficiente la maggior parte dei compiti. Questi modelli funzionano senza problemi su qualsiasi GPU consumer con 6-8 GB di memoria video. Le versioni di medio livello (14b e 32b) sono ideali per le attività professionali, ma richiedono più VRAM. I modelli più grandi (70b e 671b) richiedono GPU specializzate e sono utilizzati principalmente per la ricerca e le applicazioni industriali.&lt;/p&gt;
&lt;h2&gt;Selezione del server&lt;/h2&gt;
&lt;p&gt;Per aiutarvi a scegliere un server per l&#39;inferenza DeepSeek, ecco le configurazioni ideali di LeaderGPU per ogni gruppo di modelli:&lt;/p&gt;
&lt;h3&gt;1,5b / 7b / 8b / 14b / 32b / 70b&lt;/h3&gt;
&lt;p&gt;Per questo gruppo, qualsiasi server con i seguenti tipi di GPU sarà adatto. La maggior parte dei server LeaderGPU è in grado di eseguire queste reti neurali senza problemi. Le prestazioni dipendono principalmente dal numero di core CUDA®. Si consigliano server con più GPU, come ad esempio:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/?fltr_type%5B%5D=a40#filter_block&quot;&gt;A40&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/?fltr_type%5B%5D=l20#filter_block&quot;&gt;L20&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;671b&lt;/h3&gt;
&lt;p&gt;Ora il caso più impegnativo: come si fa a eseguire l&#39;inferenza su un modello con una dimensione di base di 404 GB? Ciò significa che saranno necessari circa 470 GB di memoria video. LeaderGPU offre diverse configurazioni con le seguenti GPU in grado di gestire questo carico:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/?fltr_type%5B%5D=a100#filter_block&quot;&gt;A100&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/?fltr_type%5B%5D=h100#filter_block&quot;&gt;H100&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entrambe le configurazioni gestiscono il carico del modello in modo efficiente, distribuendolo uniformemente su più GPU. Ad esempio, ecco come appare un server con 8xH100 dopo aver caricato il modello deepseek-r1:671b:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/126/original/sh_deepseek-r1_future_of_LLMs_1.png?1739199426&quot; alt=&quot;deepseek-r1:671b on 8xH100&quot;&gt;
&lt;p&gt;Il carico di calcolo viene bilanciato dinamicamente tra le GPU, mentre le interconnessioni NVLink® ad alta velocità impediscono i colli di bottiglia nello scambio di dati, garantendo le massime prestazioni.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;DeepSeek-R1 combina molte tecnologie innovative come Multi Token Prediction, Multi-Head Latent Attention e Mixture of Experts in un unico modello significativo. Questo software open-source dimostra che gli LLM possono essere sviluppati in modo più efficiente con meno risorse computazionali. Il modello ha diverse versioni, dalla più piccola di 1,5b alla più grande di 671b, che richiedono hardware specializzato con più GPU di fascia alta che lavorano in parallelo.&lt;/p&gt;
&lt;p&gt;Noleggiando un server di LeaderGPU per l&#39;inferenza di DeepSeek-R1, avrete a disposizione un&#39;ampia gamma di configurazioni, affidabilità e tolleranza ai guasti. Il nostro team di supporto tecnico vi aiuterà a risolvere qualsiasi problema o domanda, mentre l&#39;installazione automatica del sistema operativo riduce i tempi di implementazione.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leadergpu.it/#chose-best&quot;&gt;Scegliete il vostro server LeaderGPU&lt;/a&gt; e scoprite le possibilità che si aprono utilizzando i moderni modelli di reti neurali. Se avete domande, non esitate a farle nella nostra chat o &lt;a href=&quot;mailto:info@leadergpu.com&quot;&gt;via e-mail&lt;/a&gt;.&lt;/p&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/125/original/il_deepseek-r1_future_of_LLMs.png?1739198303"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 19 Feb 2025 15:10:33 +0100</pubDate>
      <guid isPermaLink="false">613</guid>
      <dc:date>2025-02-19 15:10:33 +0100</dc:date>
    </item>
    <item>
      <title>Intel Habana Gaudi 2: installazione e test</title>
      <link>https://www.leadergpu.it/catalog/611-intel-habana-gaudi-2-installazione-e-test</link>
      <description>&lt;p&gt;Prima di iniziare l&#39;installazione del software degli acceleratori Gaudi 2, c&#39;è una caratteristica importante che vale la pena menzionare. Siamo abituati al fatto che l&#39;addestramento e l&#39;inferenza delle reti neurali possono essere eseguiti utilizzando le GPU. Tuttavia, Intel Habana Gaudi 2 è molto diverso dalle GPU e rappresenta un&#39;altra classe di dispositivi progettati esclusivamente per accelerare le attività di intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;Molte applicazioni e framework già noti non funzioneranno senza aver prima preparato il sistema operativo e, in alcuni casi, senza uno speciale &lt;a href=&quot;https://docs.habana.ai/en/latest/PyTorch/PyTorch_Model_Porting/GPU_Migration_Toolkit/GPU_Migration_Toolkit.html&quot;&gt;GPU Migration Toolkit&lt;/a&gt;. Questo spiega il gran numero di passaggi preparatori che descriviamo in questo articolo. Iniziamo con ordine.&lt;/p&gt;
&lt;h2&gt;Passo 1. Installare lo stack software SynapseAI&lt;/h2&gt;
&lt;p&gt;Per iniziare a lavorare con gli acceleratori Intel Habana Gaudi 2, è necessario installare lo stack SynapseAI. Esso comprende uno speciale compilatore di grafi che trasforma la topologia del modello di rete neurale per ottimizzare efficacemente l&#39;esecuzione sull&#39;architettura Gaudi, librerie API per la scalabilità orizzontale e un SDK separato per la creazione di algoritmi e modelli di apprendimento automatico ad alte prestazioni.&lt;/p&gt;
&lt;p&gt;Separatamente, notiamo che SynapseAI è la parte che permette di creare un ponte tra framework popolari come PyTorch/TensorFlow e gli acceleratori di intelligenza artificiale Gaudi 2. Questo permette di lavorare con astrazioni familiari. Ciò consente di lavorare con astrazioni già note e Gaudi 2 ottimizza autonomamente i calcoli Gli operatori specifici per i quali gli acceleratori non dispongono di supporto hardware vengono eseguiti sulla CPU.&lt;/p&gt;
&lt;p&gt;Per semplificare l&#39;installazione dei singoli componenti di SynapseAI, è stato creato un comodo script di shell. Scarichiamolo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget -nv https://vault.habana.ai/artifactory/gaudi-installer/latest/habanalabs-installer.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rendere il file eseguibile:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x habanalabs-installer.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install --type base&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seguire le indicazioni del sistema durante l&#39;installazione. Il file di registro contiene un rapporto dettagliato. È possibile vedere quali pacchetti sono stati installati e se gli acceleratori sono stati trovati e inizializzati con successo.&lt;/p&gt;
&lt;p&gt;I registri sono qui: /var/log/habana_logs/install-YYY-MM-DD-HH-MM-SS.log&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;[  +3.881647] habanalabs hl5: Found GAUDI2 device with 96GB DRAM
[  +0.008145] habanalabs hl0: Found GAUDI2 device with 96GB DRAM
[  +0.032034] habanalabs hl3: Found GAUDI2 device with 96GB DRAM
[  +0.002376] habanalabs hl4: Found GAUDI2 device with 96GB DRAM
[  +0.005174] habanalabs hl1: Found GAUDI2 device with 96GB DRAM
[  +0.000390] habanalabs hl2: Found GAUDI2 device with 96GB DRAM
[  +0.007065] habanalabs hl7: Found GAUDI2 device with 96GB DRAM
[  +0.006256] habanalabs hl6: Found GAUDI2 device with 96GB DRAM&lt;/pre&gt;
&lt;p&gt;Proprio come l&#39;utility nvidia-smi fornisce informazioni sulle GPU installate e sui processi di calcolo in esecuzione, SynapseAI ha un programma simile. È possibile eseguirlo per ottenere un rapporto sullo stato attuale degli acceleratori Gaudi 2 AI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;hl-smi&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/981/original/sh_intel_habana_gaudi_2_install_and_test_1.png?1714555709&quot; alt=&quot;hl-smi screenshot&quot;&gt;
&lt;h2&gt;Passo 2. Test di TensorFlow&lt;/h2&gt;
&lt;p&gt;TensorFlow è una delle piattaforme più popolari per l&#39;apprendimento automatico. Utilizzando lo stesso script di installazione, è possibile installare una versione pre-costruita di TensorFlow con il supporto per gli acceleratori Gaudi 2. Iniziamo installando le dipendenze generali:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install -t dependencies&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Successivamente, installeremo le dipendenze per TensorFlow:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install -t dependencies-tensorflow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare la piattaforma TensorFlow all&#39;interno di un ambiente virtuale implementato utilizzando il meccanismo Python Virtual Environment (venv):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install --type tensorflow --venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Attiviamo l&#39;ambiente virtuale creato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source habanalabs-venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un semplice esempio di codice Python che utilizzi le capacità dell&#39;acceleratore Gaudi 2:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;nano example.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
import os
# Import Habana Torch Library
import habana_frameworks.torch.core as htcore
class SimpleModel(nn.Module):
   def __init__(self):
       super(SimpleModel, self).__init__()
       self.fc1   = nn.Linear(784, 256)
       self.fc2   = nn.Linear(256, 64)
       self.fc3   = nn.Linear(64, 10)
   def forward(self, x):
       out = x.view(-1,28*28)
       out = F.relu(self.fc1(out))
       out = F.relu(self.fc2(out))
       out = self.fc3(out)
       return out
def train(net,criterion,optimizer,trainloader,device):
   net.train()
   train_loss = 0.0
   correct = 0
   total = 0
   for batch_idx, (data, targets) in enumerate(trainloader):
       data, targets = data.to(device), targets.to(device)
       optimizer.zero_grad()
       outputs = net(data)
       loss = criterion(outputs, targets)
       loss.backward()
       # API call to trigger execution
       htcore.mark_step()
       optimizer.step()
       # API call to trigger execution
       htcore.mark_step()
       train_loss += loss.item()
       _, predicted = outputs.max(1)
       total += targets.size(0)
       correct += predicted.eq(targets).sum().item()
   train_loss = train_loss/(batch_idx+1)
   train_acc = 100.0*(correct/total)
   print(&quot;Training loss is {} and training accuracy is {}&quot;.format(train_loss,train_acc))
def test(net,criterion,testloader,device):
   net.eval()
   test_loss = 0
   correct = 0
   total = 0
   with torch.no_grad():
       for batch_idx, (data, targets) in enumerate(testloader):
           data, targets = data.to(device), targets.to(device)
           outputs = net(data)
           loss = criterion(outputs, targets)
           # API call to trigger execution
           htcore.mark_step()
           test_loss += loss.item()
           _, predicted = outputs.max(1)
           total += targets.size(0)
           correct += predicted.eq(targets).sum().item()
   test_loss = test_loss/(batch_idx+1)
   test_acc = 100.0*(correct/total)
   print(&quot;Testing loss is {} and testing accuracy is {}&quot;.format(test_loss,test_acc))
def main():
   epochs = 20
   batch_size = 128
   lr = 0.01
   milestones = [10,15]
   load_path = &#39;./data&#39;
   save_path = &#39;./checkpoints&#39;
   if(not os.path.exists(save_path)):
       os.makedirs(save_path)
   # Target the Gaudi HPU device
   device = torch.device(&quot;hpu&quot;)
   # Data
   transform = transforms.Compose([
       transforms.ToTensor(),
   ])
   trainset = torchvision.datasets.MNIST(root=load_path, train=True,
                                           download=True, transform=transform)
   trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                           shuffle=True, num_workers=2)
   testset = torchvision.datasets.MNIST(root=load_path, train=False,
                                       download=True, transform=transform)
   testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                           shuffle=False, num_workers=2)
   net = SimpleModel()
   net.to(device)
   criterion = nn.CrossEntropyLoss()
   optimizer = optim.SGD(net.parameters(), lr=lr,
                       momentum=0.9, weight_decay=5e-4)
   scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=milestones, gamma=0.1)
   for epoch in range(1, epochs+1):
       print(&quot;=====================================================================&quot;)
       print(&quot;Epoch : {}&quot;.format(epoch))
       train(net,criterion,optimizer,trainloader,device)
       test(net,criterion,testloader,device)
       torch.save(net.state_dict(), os.path.join(save_path,&#39;epoch_{}.pth&#39;.format(epoch)))
       scheduler.step()
if __name__ == &#39;__main__&#39;:
   main()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, eseguite l&#39;applicazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python3 example.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per uscire dall&#39;ambiente virtuale, eseguire il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 3. Clonare il repository di formazione&lt;/h2&gt;
&lt;p&gt;Clonare il repository con il codice MLperf:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/mlcommons/training_results_v3.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare una cartella separata che sarà utilizzata dal contenitore Docker con MLperf:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiare la directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esportiamo alcune variabili d&#39;ambiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export MLPERF_DIR=/home/usergpu/mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export SCRATCH_DIR=/home/usergpu/mlperf/scratch&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export DATASETS_DIR=/home/usergpu/mlperf/datasets&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare nuove directory utilizzando le variabili create:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $MLPERF_DIR/Habana&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $SCRATCH_DIR&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $DATASETS_DIR&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare l&#39;applicazione di benchmark in $MLPERF_DIR/Habana:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp -R training_results_v3.0/Intel-HabanaLabs/benchmarks/ $MLPERF_DIR/Habana&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esportare un&#39;altra variabile che memorizzerà un link per scaricare la versione desiderata del contenitore Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export MLPERF_DOCKER_IMAGE=vault.habana.ai/gaudi-docker-mlperf/ver3.1/pytorch-installer-2.0.1:1.13.99-41&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 4. Installare Docker&lt;/h2&gt;
&lt;p&gt;La nostra istanza esegue Ubuntu Linux 22.04 LTS e non supporta Docker per impostazione predefinita. Quindi, prima di scaricare ed eseguire i container, è necessario installare il supporto per Docker. Aggiorniamo la cache dei pacchetti e installiamo alcuni pacchetti di base che ci serviranno in seguito:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per installare Docker, è necessario aggiungere un repository di progetto con firma digitale. Scaricare la chiave di firma digitale e aggiungerla all&#39;archivio chiavi del sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Docker può essere eseguito su piattaforme con diverse architetture. Il comando seguente rileverà l&#39;architettura del server e aggiungerà la riga del repository corrispondente all&#39;elenco del gestore di pacchetti APT:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare la cache dei pacchetti e le policy e installare docker-ce (Docker Community Edition):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; apt-cache policy docker-ce &amp;&amp; sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, verificare che il demone Docker sia attivo e funzionante:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 5. Eseguire il contenitore Docker&lt;/h2&gt;
&lt;p&gt;Avviamo il contenitore in modalità privilegiata utilizzando le variabili precedentemente specificate:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --privileged --security-opt seccomp=unconfined \
  --name mlperf3.0 -td                    \
  -v /dev:/dev                            \
  --device=/dev:/dev                      \
  -e LOG_LEVEL_ALL=6                      \
  -v /sys/kernel/debug:/sys/kernel/debug  \
  -v /tmp:/tmp                            \
  -v $MLPERF_DIR:/root/MLPERF             \
  -v $SCRATCH_DIR:/root/scratch           \
  -v $DATASETS_DIR:/root/datasets/        \
  --cap-add=sys_nice --cap-add=SYS_PTRACE \
  --user root --workdir=/root --net=host  \
  --ulimit memlock=-1:-1 $MLPERF_DOCKER_IMAGE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per comodità, è possibile accedere al terminale all&#39;interno del contenitore tramite SSH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker exec mlperf3.0 bash -c &quot;service ssh start&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per aprire una shell di comando (bash) nella sessione corrente, eseguire il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker exec -it mlperf3.0 bash&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 6. Preparare un set di dati&lt;/h2&gt;
&lt;p&gt;Per eseguire i test di implementazione di Bert da MLperf, è necessario un set di dati preparato. Il metodo ottimale è quello di generare un set di dati da dati precaricati. Il repository MLperf include uno script speciale, prepare_data.sh, che richiede un insieme specifico di pacchetti per funzionare. Passiamo alla seguente directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /root/MLPERF/Habana/benchmarks/bert/implementations/PyTorch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare tutti i pacchetti necessari utilizzando l&#39;elenco pre-generato e il gestore di pacchetti pip:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impostare la variabile PYTORCH_BERT_DATA per indicare allo script dove memorizzare i dati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PYTORCH_BERT_DATA=/root/datasets/pytorch_bert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash input_preprocessing/prepare_data.sh -o $PYTORCH_BERT_DATA&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La procedura di generazione è piuttosto lunga e può richiedere diverse ore. Si prega di essere pazienti e di non interrompere il processo. Se si prevede di disconnettersi dalla sessione SSH, si consiglia di utilizzare l&#39;utilità &lt;a href=&quot;https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/&quot;&gt;schermo&lt;/a&gt; immediatamente prima di avviare il contenitore Docker.&lt;/p&gt;
&lt;h2&gt;Passo 7. Impacchettare il set di dati&lt;/h2&gt;
&lt;p&gt;Il passo successivo consiste nel &quot;tagliare&quot; il dataset in pezzi uguali per il successivo lancio di MLperf. Creiamo una cartella separata per i dati impacchettati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir $PYTORCH_BERT_DATA/packed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script di impacchettamento:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 pack_pretraining_data_pytorch.py \
  --input_dir=$PYTORCH_BERT_DATA/hdf5/training-4320/hdf5_4320_shards_uncompressed \
  --output_dir=$PYTORCH_BERT_DATA/packed \
  --max_predictions_per_seq=76&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 8. Eseguire un test&lt;/h2&gt;
&lt;p&gt;Ora che il set di dati è stato preparato, è il momento di eseguire il test. Tuttavia, è impossibile farlo senza una preparazione preliminare. Gli autori del test Bert hanno lasciato alcuni valori codificati nello script, che interferiranno con l&#39;esecuzione del test. Innanzitutto, rinominare la seguente directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mv $PYTORCH_BERT_DATA/packed $PYTORCH_BERT_DATA/packed_data_500_pt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiare la directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /root/MLPERF/Habana/benchmarks/bert/implementations/HLS-Gaudi2-PT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Poiché l&#39;editor GNU Nano non è installato all&#39;interno del contenitore, deve essere installato separatamente. In alternativa, si può usare l&#39;editor Vi integrato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt update &amp;&amp; apt -y install nano&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora, modificate lo script di lancio del test:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano launch_bert_pytorch.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Individuare la prima riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;DATA_ROOT=/mnt/weka/data/pytorch/bert_mlperf/packed_data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sostituire con la seguente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;DATA_ROOT=/root/datasets/pytorch_bert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trovare la seconda riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;INPUT_DIR=$DATA_ROOT/packed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sostituire con la seguente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;INPUT_DIR=$DATA_ROOT/packed_data_500_pt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e uscire.&lt;/p&gt;
&lt;p&gt;Il codice del test include una funzione di limitazione che impedisce al gradiente di superare determinati valori, impedendo una potenziale crescita esponenziale. Per ragioni a noi sconosciute, questa funzione è assente nella versione di PyTorch utilizzata nel contenitore, causando l&#39;interruzione anomala del test durante la fase di riscaldamento.&lt;/p&gt;
&lt;p&gt;Una possibile soluzione potrebbe essere quella di rimuovere temporaneamente questa funzione dal codice del file fastddp.py. Per farlo, aprire il file:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano ../PyTorch/fastddp.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trovate e commentate le seguenti tre righe di codice usando il simbolo # (shebang), in modo che appaiano così:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;#from habana_frameworks.torch import _hpex_C
#    clip_global_grad_norm = _hpex_C.fused_lamb_norm(grads, 1.0)
#    _fusion_buffer.div_((clip_global_grad_norm * _all_reduce_group_size).to(_fusion_buffer.dtype))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inoltre, salvare il file e uscire. Cambiare la directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ../HLS-Gaudi2-PT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, eseguire lo script. Ci vorranno circa 20 minuti per completarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./launch_bert_pytorch.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/606-che-cos-la-distillazione-della-conoscenza&quot;&gt;Che cos&#39;è la distillazione della conoscenza&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/607-vantaggi-e-svantaggi-della-condivisione-della-gpu&quot;&gt;Vantaggi e svantaggi della condivisione della GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/609-nvidia-rtx-50-aspettative-e-realt&quot;&gt;NVIDIA® RTX™ 50: aspettative e realtà&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/980/original/il_intel_habana_gaudi_2_install_and_test.png?1714555676"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:41:09 +0100</pubDate>
      <guid isPermaLink="false">611</guid>
      <dc:date>2025-01-23 13:41:09 +0100</dc:date>
    </item>
    <item>
      <title>NVIDIA® RTX™ 50: aspettative e realtà</title>
      <link>https://www.leadergpu.it/catalog/609-nvidia-rtx-50-aspettative-e-realt</link>
      <description>&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;The highlight of CES 2025 was NVIDIA® CEO Jensen Huang’s speech. The revelation of new GPU specifications within minutes caught many off guard. In this article, we’ll examine how expert predictions matched the actual announcements.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Diamo prima un&#39;occhiata alla linea di prodotti. La serie RTX™ 40 è stata lanciata con 6 modelli, dalla RTX™ 4060 alla RTX™ 4090. Sebbene molti si aspettassero una gamma simile per la serie RTX™ 50, ciò non è avvenuto. Invece, la famiglia RTX™ 50 comprende solo 4 modelli: RTX™ 5070, RTX™ 5070 Ti, RTX™ 5080 e RTX™ 5090. Potremmo vedere sia la RTX™ 5050 che la RTX5060 in futuro, ma nessuna fonte ufficiale ha ancora verificato queste schede grafiche.&lt;/p&gt;
&lt;h2&gt;Processo tecnologico&lt;/h2&gt;
&lt;p&gt;La legge di Moore, l&#39;osservazione empirica secondo cui &quot;il numero di transistor in un circuito integrato raddoppia ogni due anni circa&quot;, viene spesso definita non più rilevante per le prestazioni dei chip. Dal 2022, Jensen Huang ha ripetutamente dichiarato morta la legge di Moore. Ha invece proposto un nuovo concetto che enfatizza lo sviluppo simultaneo di architettura, microchip, librerie software e algoritmi.&lt;/p&gt;
&lt;p&gt;Insieme, questo cambiamento ci permette di concentrarci sulle prestazioni complessive del sistema piuttosto che sul solo numero di transistor. Il concetto di efficienza di calcolo ha suscitato discussioni continue nella comunità tecnologica. Sebbene i punti di vista sull&#39;argomento siano diversi, è chiaro che il settore si trova ad affrontare barriere fisiche ed economiche che impediscono un&#39;ulteriore miniaturizzazione.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/098/original/sh_nvidia_rtx_50_expectation_and_reality_1.png?1736938750&quot; alt=&quot;RTX 5090 vs RTX 4090 - Core clock and boost clock&quot;&gt;
&lt;p&gt;Diamo un&#39;occhiata alla tecnologia di processo delle GPU di nuova generazione. La presentazione non ne ha parlato in modo specifico, ma tutte le schede della generazione precedente sono state costruite con il processo 4N. &lt;b translate=&quot;no&quot;&gt;The RTX™ 50 series uses a different 4NP process technology&lt;/b&gt;. Allo stesso tempo, è importante capire che 4N e 4NP sono solo nomi di marketing. I transistor stessi rimangono di dimensioni pari a 5 nm.&lt;/p&gt;
&lt;p&gt;La tecnologia di processo 4NP migliorata consente principalmente una maggiore densità di transistor sul chip e velocità di clock più elevate. Sebbene gli esperti avessero previsto che l&#39;RTX™ 50 avrebbe utilizzato la stessa tecnologia di processo dell&#39;RTX™ 40, si sono sbagliati tecnicamente, anche se non di molto, poiché le dimensioni dei transistor rimangono invariate e TSMC continua a essere il produttore.&lt;/p&gt;
&lt;h2&gt;Numero di core&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/099/original/sh_nvidia_rtx_50_expectation_and_reality_2.png?1736938790&quot; alt=&quot;RTX 5090 vs RTX 4090 - CUDA cores count&quot;&gt;
&lt;p&gt;Prima del rilascio della serie RTX™ 50, numerose fughe di dati hanno rivelato le caratteristiche di base della GPU. I rapporti iniziali degli insider del luglio 2024 suggerivano che l&#39;ammiraglia sarebbe stata dotata di 24.576 core, 192 core Ray-tracing e 768 core Tensor. Tuttavia, le fughe di notizie successive hanno corretto questi numeri a valori più realistici.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/100/original/sh_nvidia_rtx_50_expectation_and_reality_3.png?1736938814&quot; alt=&quot;RTX 5090 vs RTX 4090 - AI cores count&quot;&gt;
&lt;p&gt;La RTX™ 5090 finale è stata fornita con &lt;b translate=&quot;no&quot;&gt;21,760 CUDA® cores&lt;/b&gt; (rispetto ai 16.384 della RTX™ 4090), &lt;b translate=&quot;no&quot;&gt;170 Ray-tracing cores&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;680 Tensor cores&lt;/b&gt;. Questo è in linea con la recente strategia dell&#39;azienda di aumentare le prestazioni non solo attraverso l&#39;aumento del numero di transistor, ma anche attraverso un&#39;ottimizzazione architettonica completa.&lt;/p&gt;
&lt;h2&gt;Memoria&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/101/original/sh_nvidia_rtx_50_expectation_and_reality_4.png?1736938865&quot; alt=&quot;RTX 5090 vs RTX 4090 - Memory capacity&quot;&gt;
&lt;p&gt;L&#39;uso della memoria GDDR7 da parte delle nuove GPU non è una sorpresa. Gli esperti del settore avevano previsto questa mossa nel 2024, dopo che i tre principali produttori (Samsung, Micron e SK hynix) avevano presentato in successione i loro prototipi GDDR7. NVIDIA® è stata generosa nella distribuzione della memoria: il modello base &lt;b translate=&quot;no&quot;&gt;RTX™ 5070&lt;/b&gt; presenta &lt;b translate=&quot;no&quot;&gt;12 GB GDDR7&lt;/b&gt; su un bus &lt;b translate=&quot;no&quot;&gt;192-bit&lt;/b&gt;, mentre i modelli &lt;b translate=&quot;no&quot;&gt;RTX™ 5070 Ti and RTX™ 5080&lt;/b&gt; portano entrambi &lt;b translate=&quot;no&quot;&gt;16 GB GDDR7&lt;/b&gt; su un bus &lt;b translate=&quot;no&quot;&gt;256-bit&lt;/b&gt;. Il modello di punta &lt;b translate=&quot;no&quot;&gt;RTX™ 5090&lt;/b&gt; è dotato di un enorme &lt;b translate=&quot;no&quot;&gt;32 GB GDDR7&lt;/b&gt; su un bus &lt;b translate=&quot;no&quot;&gt;512-bit&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/102/original/sh_nvidia_rtx_50_expectation_and_reality_5.png?1736938884&quot; alt=&quot;RTX 5090 vs RTX 4090 - Memory throughput&quot;&gt;
&lt;p&gt;Inizialmente gli esperti avevano previsto che il throughput massimo di questa configurazione di memoria sarebbe stato di 1,5 Tbps. Tuttavia, la realtà ha superato queste aspettative, &lt;b translate=&quot;no&quot;&gt;achieving a throughput of 1,7 Tbps&lt;/b&gt;. Questo netto miglioramento va principalmente a vantaggio delle capacità di elaborazione dell&#39;intelligenza artificiale della GPU piuttosto che delle prestazioni di gioco. La combinazione di memoria ad alta capacità e velocità della nuova generazione è particolarmente preziosa per i modelli linguistici e le reti neurali generative di grandi dimensioni.&lt;/p&gt;
&lt;h2&gt;Tecnologie&lt;/h2&gt;
&lt;h3&gt;Per i giocatori&lt;/h3&gt;
&lt;p&gt;Il ray-tracing in tempo reale è diventato una delle tecnologie più rivoluzionarie per le GPU, segnando l&#39;inizio della linea RTX™. Per molti consumatori, questa caratteristica è stata un fattore chiave nelle loro decisioni di acquisto. Nelle schede della serie RTX™ 50, la versione 4 del DLSS (Deep Learning Super Sampling) può svolgere un ruolo altrettanto importante. Questa tecnologia aumenta in modo significativo le prestazioni della GPU nei giochi grazie al suo approccio di rendering ibrido dei fotogrammi.&lt;/p&gt;
&lt;p&gt;Con DLSS abilitato, invece di renderizzare ogni fotogramma in modo convenzionale, alcuni fotogrammi vengono generati in tempo reale utilizzando l&#39;intelligenza artificiale. Mentre le prime versioni di questa tecnologia potevano solo eseguire l&#39;upscaling dei fotogrammi a risoluzioni più elevate, DLSS 3 ha introdotto una capacità più avanzata: per ogni fotogramma renderizzato in modo convenzionale, può generare un fotogramma aggiuntivo creato dall&#39;intelligenza artificiale.&lt;/p&gt;
&lt;p&gt;Il DLSS 4 genererà tre fotogrammi alimentati dall&#39;intelligenza artificiale per ogni fotogramma renderizzato in modo tradizionale. &lt;b translate=&quot;no&quot;&gt;This significantly increases the frame per second (FPS) without putting heavy load on the GPU.&lt;/b&gt; L&#39;intelligenza artificiale analizza il movimento degli oggetti e della scena per garantire che i fotogrammi generati corrispondano perfettamente a quelli renderizzati in modo tradizionale.&lt;/p&gt;
&lt;p&gt;Ciò solleva una questione importante: come gestire l&#39;input lag? Poiché la generazione dei fotogrammi richiede tempo, ogni iterazione aumenta il tempo di risposta. Un&#39;immagine fluida con una risposta lenta alle azioni del giocatore può influire pesantemente sull&#39;esperienza di gioco. &lt;b translate=&quot;no&quot;&gt;To address this, NVIDIA® has improved their Reflex 2 technology alongside DLSS to minimize latency.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;In particolare, nel sistema è stato integrato il Frame Warp. Questa tecnologia riduce la latenza del gioco aggiornando i fotogrammi renderizzati con l&#39;ultimo input del mouse appena prima della visualizzazione. Questo migliora sia la competizione multigiocatore che la reattività del giocatore singolo.&lt;/p&gt;
&lt;h3&gt;Per i creatori di contenuti&lt;/h3&gt;
&lt;p&gt;La serie RTX™ 50 non è solo per i giochi. I creatori di contenuti video troveranno un valore significativo in queste nuove GPU. Il modello di punta RTX™ 5090 è dotato di 3 codificatori e 2 decodificatori, rispetto ai 2 codificatori e 1 decodificatore della RTX™ 4090. Questi componenti sono stati migliorati grazie alla collaborazione con i leader del settore: Adobe, Blackmagic Design, ByteDance e Wondershare. &lt;b translate=&quot;no&quot;&gt;As a result, the RTX™ 5090 renders video 60% faster than the RTX™ 4090 and four times faster than the RTX™ 3090.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Oltre ai miglioramenti della velocità, è stata migliorata anche la qualità. &lt;b translate=&quot;no&quot;&gt;The 9th generation NVENC encoder delivers 5% better quality in HEVC and AV1 tasks. The AV1 Ultra Quality mode achieves better data compression while maintaining image quality, reducing file sizes by 5%.&lt;/b&gt; Ciò si traduce in un rendering video più rapido su RTX™ 5090 e in una riduzione dei tempi tra l&#39;editing e la produzione.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Guardando indietro di sei mesi, le previsioni e le aspettative degli esperti si sono rivelate eccessivamente ottimistiche. Con l&#39;avvicinarsi della data di uscita, è apparso evidente che le nuove GPU avrebbero offerto molto di più di semplici unità di calcolo aggiuntive. &lt;b translate=&quot;no&quot;&gt;The key innovation would be new optimization and AI technologies enhancing existing frame rendering systems.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Al CES 2025, durante la presentazione della serie GPU 50, è stata svelata una nuova era dell&#39;intelligenza artificiale. Questa visione ritraeva un mondo in cui gli assistenti digitali e i robot gestiscono compiti complessi. Al centro ci sarebbe un ecosistema che combina supercomputer per l&#39;addestramento dell&#39;IA, acceleratori di inferenza a prezzi accessibili per i dispositivi di consumo e software versatile che opera sia a livello locale che nel cloud. Anche se la portata di questo futuro rimane incerta, una cosa è chiara: siamo sulla soglia di trasformare la fantascienza in realtà.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;LeaderGPU remains committed to providing reliable access to these cutting-edge technologies. Order your first GPU server today and begin transforming your ideas into reality.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/606-che-cos-la-distillazione-della-conoscenza&quot;&gt;Che cos&#39;è la distillazione della conoscenza&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/607-vantaggi-e-svantaggi-della-condivisione-della-gpu&quot;&gt;Vantaggi e svantaggi della condivisione della GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/611-intel-habana-gaudi-2-installazione-e-test&quot;&gt;Intel Habana Gaudi 2: installazione e test&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/098/original/sh_nvidia_rtx_50_expectation_and_reality_1.png?1736938750"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:34:30 +0100</pubDate>
      <guid isPermaLink="false">609</guid>
      <dc:date>2025-01-23 13:34:30 +0100</dc:date>
    </item>
    <item>
      <title>Vantaggi e svantaggi della condivisione della GPU</title>
      <link>https://www.leadergpu.it/catalog/607-vantaggi-e-svantaggi-della-condivisione-della-gpu</link>
      <description>&lt;p&gt;La legge di Moore è rimasta attuale per quasi mezzo secolo. I chip dei processori continuano a contenere un numero sempre maggiore di transistor e le tecnologie progrediscono ogni giorno. Con l&#39;evoluzione della tecnologia, si evolve anche il nostro approccio all&#39;informatica. L&#39;aumento di alcune attività di calcolo ha influenzato in modo significativo lo sviluppo dell&#39;hardware. Per esempio, i dispositivi originariamente progettati per l&#39;elaborazione grafica sono ora strumenti fondamentali e accessibili per le moderne reti neurali.&lt;/p&gt;
&lt;p&gt;Anche la gestione delle risorse informatiche si è trasformata. I servizi di massa utilizzano raramente i mainframe, come negli anni Settanta e Ottanta. Preferiscono invece i servizi cloud o la costruzione di infrastrutture proprie. Questo cambiamento ha modificato le richieste dei clienti, che si concentrano su una scalabilità rapida e on-demand e sulla massimizzazione dell&#39;uso delle risorse informatiche allocate.&lt;/p&gt;
&lt;p&gt;Le tecnologie di virtualizzazione e containerizzazione sono emerse come soluzioni. Le applicazioni sono ora confezionate in container con tutte le librerie necessarie, semplificando la distribuzione e la scalabilità. Tuttavia, la gestione manuale è diventata impraticabile man mano che il numero di container saliva a migliaia. Orchestratori specializzati come Kubernetes si occupano ora della gestione e della scalabilità. Questi strumenti sono diventati una parte essenziale di qualsiasi infrastruttura IT moderna.&lt;/p&gt;
&lt;h2&gt;Virtualizzazione dei server&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/075/original/sh_advantages_and_disadvantages_of_gpu_sharing_1.png?1731504150&quot; alt=&quot;Server virtualization&quot;&gt;
&lt;p&gt;Contemporaneamente, le tecnologie di virtualizzazione si sono evolute, consentendo la creazione di ambienti isolati all&#39;interno di un singolo server fisico. Le macchine virtuali si comportano in modo identico ai normali server fisici, consentendo l&#39;uso di strumenti di gestione standard. A seconda dell&#39;hypervisor, spesso è inclusa un&#39;API specializzata che facilita l&#39;automazione delle procedure di routine.&lt;/p&gt;
&lt;p&gt;Tuttavia, questa flessibilità comporta una riduzione della sicurezza. Gli aggressori hanno spostato la loro attenzione dal colpire le singole macchine virtuali allo sfruttare le vulnerabilità dell&#39;hypervisor. Ottenendo il controllo di un hypervisor, gli aggressori possono accedere a tutte le macchine virtuali associate a piacimento. Nonostante i continui miglioramenti della sicurezza, i moderni hypervisor rimangono obiettivi interessanti.&lt;/p&gt;
&lt;p&gt;La virtualizzazione tradizionale affronta due questioni fondamentali. Il primo: garantisce l&#39;isolamento delle macchine virtuali l&#39;una dall&#39;altra. Le soluzioni bare-metal evitano questo problema, poiché i clienti affittano interi server fisici sotto il loro controllo. Ma per le macchine virtuali l&#39;isolamento è basato sul software a livello di hypervisor. Un errore di codice o un bug casuale può compromettere questo isolamento, con il rischio di perdita o corruzione dei dati.&lt;/p&gt;
&lt;p&gt;Il secondo problema riguarda la gestione delle risorse. Mentre è possibile garantire l&#39;allocazione delle risorse a macchine virtuali specifiche, la gestione di numerose macchine presenta un dilemma. Le risorse possono essere sottoutilizzate, con conseguente riduzione del numero di macchine virtuali per server fisico. Questo scenario non è redditizio per l&#39;infrastruttura e porta inevitabilmente a un aumento dei prezzi.&lt;/p&gt;
&lt;p&gt;In alternativa, è possibile utilizzare meccanismi di gestione automatica delle risorse. Sebbene a una macchina virtuale vengano assegnate specifiche caratteristiche dichiarate, in realtà viene fornito solo il minimo richiesto entro questi limiti. Se la macchina ha bisogno di più tempo di processore o di RAM, l&#39;hypervisor cercherà di fornirlo, ma non può garantirlo. Questa situazione è simile all&#39;overbooking degli aerei, quando le compagnie aeree vendono più biglietti di quanti posti siano disponibili.&lt;/p&gt;
&lt;p&gt;La logica è identica. Se le statistiche mostrano che circa il 10% dei passeggeri non arriva in tempo per il volo, le compagnie aeree possono vendere il 10% di biglietti in più con un rischio minimo. Se tutti i passeggeri arrivano, alcuni non troveranno posto a bordo. La compagnia aerea dovrà affrontare conseguenze minori sotto forma di risarcimento, ma probabilmente continuerà a seguire questa pratica.&lt;/p&gt;
&lt;p&gt;Molti fornitori di infrastrutture adottano una strategia simile. Alcuni sono trasparenti al riguardo, dichiarando di non garantire la disponibilità costante di risorse informatiche ma di offrire prezzi significativamente ridotti. Altri utilizzano meccanismi simili senza pubblicizzarli. Scommettono che non tutti i clienti utilizzeranno costantemente il 100% delle risorse dei loro server e che, anche se alcuni lo faranno, saranno una minoranza. Nel frattempo, le risorse inattive generano profitto.&lt;/p&gt;
&lt;p&gt;In questo contesto, le soluzioni bare-metal hanno un vantaggio. Garantiscono che le risorse allocate siano completamente gestite dal cliente e non condivise con altri utenti del fornitore dell&#39;infrastruttura. In questo modo si eliminano gli scenari in cui il carico elevato di un utente di un server vicino influisce negativamente sulle prestazioni.&lt;/p&gt;
&lt;h2&gt;Virtualizzazione delle GPU&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/076/original/sh_advantages_and_disadvantages_of_gpu_sharing_2.png?1731504219&quot; alt=&quot;GPU virtualization&quot;&gt;
&lt;p&gt;La virtualizzazione classica deve inevitabilmente affrontare la sfida dell&#39;emulazione dei dispositivi fisici. Per ridurre i costi generali, sono state sviluppate tecnologie speciali che consentono alle macchine virtuali di accedere direttamente ai dispositivi fisici del server. Questo approccio funziona bene in molti casi, ma quando viene applicato ai processori grafici, crea limitazioni immediate. Ad esempio, se un server ha 8 GPU installate, solo 8 macchine virtuali possono accedervi.&lt;/p&gt;
&lt;p&gt;Per superare questa limitazione è stata inventata la tecnologia vGPU. Essa divide una GPU in più GPU logiche, che possono essere assegnate alle macchine virtuali. Questo permette a ogni macchina virtuale di avere la sua &quot;fetta di torta&quot; e il loro numero totale non è più limitato dal numero di schede video installate nel server.&lt;/p&gt;
&lt;p&gt;Le GPU virtuali sono più comunemente utilizzate nella creazione di VDI (Virtual Desktop Infrastructure) in aree in cui le macchine virtuali richiedono l&#39;accelerazione 3D. Ad esempio, una postazione di lavoro virtuale per un designer o un pianificatore comporta tipicamente l&#39;elaborazione grafica. La maggior parte delle applicazioni in questi campi esegue i calcoli sia sul processore centrale che sulla GPU. Questo approccio ibrido aumenta significativamente la produttività e garantisce un uso ottimale delle risorse di elaborazione disponibili.&lt;/p&gt;
&lt;p&gt;Tuttavia, questa tecnologia presenta diversi svantaggi. Non è supportata da tutte le GPU ed è disponibile solo nel segmento dei server. Il supporto dipende anche dalla versione installata del sistema operativo e dal driver della GPU. vGPU ha un meccanismo di licenza separato, che aumenta notevolmente i costi operativi. Inoltre, i suoi componenti software possono potenzialmente fungere da vettori di attacco.&lt;/p&gt;
&lt;p&gt;Recentemente sono state &lt;a href=&quot;https://www.tomshardware.com/pc-components/gpu-drivers/nvidia-gpu-driver-addresses-eight-major-high-severity-vulnerabilities-nvidia-gpu-owners-should-update-asap&quot;&gt;pubblicate&lt;/a&gt; informazioni su otto vulnerabilità che interessano tutti gli utenti di GPU NVIDIA®. Sei vulnerabilità sono state identificate nei driver delle GPU e due nel software vGPU. Questi problemi sono stati rapidamente risolti, ma ciò serve a ricordare che i meccanismi di isolamento in questi sistemi non sono impeccabili. Il monitoraggio costante e l&#39;installazione tempestiva degli aggiornamenti restano i metodi principali per garantire la sicurezza.&lt;/p&gt;
&lt;p&gt;Quando si costruisce un&#39;infrastruttura per elaborare dati riservati e sensibili degli utenti, qualsiasi virtualizzazione diventa un potenziale fattore di rischio. In questi casi, un approccio bare-metal può offrire una qualità e una sicurezza migliori.&lt;/p&gt;
&lt;h2&gt;Conclusioni&lt;/h2&gt;
&lt;p&gt;La costruzione di un&#39;infrastruttura informatica richiede sempre una valutazione dei rischi. Le domande chiave da considerare sono: I dati dei clienti sono protetti in modo sicuro? Le tecnologie scelte creano ulteriori vettori di attacco? Come si possono isolare ed eliminare le potenziali vulnerabilità? Rispondere a queste domande aiuta a fare scelte informate e a prevenire problemi futuri.&lt;/p&gt;
&lt;p&gt;Noi di LeaderGPU siamo giunti a una conclusione chiara: attualmente la tecnologia bare-metal è superiore nel garantire la sicurezza dei dati degli utenti e al tempo stesso costituisce un&#39;ottima base per la creazione di un cloud bare-metal. Questo approccio consente ai nostri clienti di mantenere la flessibilità senza assumersi i rischi aggiuntivi associati alla virtualizzazione delle GPU.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/606-che-cos-la-distillazione-della-conoscenza&quot;&gt;Che cos&#39;è la distillazione della conoscenza&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/609-nvidia-rtx-50-aspettative-e-realt&quot;&gt;NVIDIA® RTX™ 50: aspettative e realtà&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/611-intel-habana-gaudi-2-installazione-e-test&quot;&gt;Intel Habana Gaudi 2: installazione e test&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/076/original/sh_advantages_and_disadvantages_of_gpu_sharing_2.png?1731504219"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:24:12 +0100</pubDate>
      <guid isPermaLink="false">607</guid>
      <dc:date>2025-01-23 13:24:12 +0100</dc:date>
    </item>
    <item>
      <title>Che cos&#39;è la distillazione della conoscenza</title>
      <link>https://www.leadergpu.it/catalog/606-che-cos-la-distillazione-della-conoscenza</link>
      <description>&lt;p&gt;I Large Language Models (LLM) sono diventati parte integrante della nostra vita grazie alle loro capacità uniche. Comprendono il contesto e generano testi coerenti ed estesi sulla base di esso. Possono elaborare e rispondere in qualsiasi lingua, tenendo conto delle sfumature culturali di ciascuna.&lt;/p&gt;
&lt;p&gt;I LLM eccellono nella risoluzione di problemi complessi, nella programmazione, nella gestione di conversazioni e altro ancora. Questa versatilità deriva dall&#39;elaborazione di grandi quantità di dati di addestramento, da cui il termine &quot;grandi&quot;. Questi modelli possono contenere decine o centinaia di miliardi di parametri, il che li rende molto impegnativi per l&#39;uso quotidiano.&lt;/p&gt;
&lt;p&gt;L&#39;addestramento è il processo più impegnativo. I modelli di rete neurale imparano elaborando enormi serie di dati, regolando i loro &quot;pesi&quot; interni per formare connessioni stabili tra i neuroni. Queste connessioni memorizzano le conoscenze che la rete neurale addestrata può utilizzare in seguito sui dispositivi finali.&lt;/p&gt;
&lt;p&gt;Tuttavia, la maggior parte dei dispositivi finali non dispone della potenza di calcolo necessaria per eseguire questi modelli. Per esempio, l&#39;esecuzione della versione completa di Llama 2 (70B parametri) richiede una GPU con 48 GB di memoria video, hardware che pochi utenti hanno a casa, figuriamoci sui dispositivi mobili.&lt;/p&gt;
&lt;p&gt;Di conseguenza, la maggior parte delle reti neurali moderne opera in infrastrutture cloud piuttosto che su dispositivi portatili, che vi accedono tramite API. Tuttavia, i produttori di dispositivi stanno facendo progressi in due modi: dotando i dispositivi di unità di calcolo specializzate come le NPU e sviluppando metodi per migliorare le prestazioni dei modelli di rete neurale compatti.&lt;/p&gt;
&lt;h2&gt;Ridurre le dimensioni&lt;/h2&gt;
&lt;h3&gt;Tagliare l&#39;eccesso&lt;/h3&gt;
&lt;p&gt;La quantizzazione è il primo e più efficace metodo per ridurre le dimensioni della rete neurale. I pesi delle reti neurali utilizzano in genere numeri in virgola mobile a 32 bit, ma è possibile ridurli cambiando il formato. L&#39;uso di valori a 8 bit (o addirittura binari in alcuni casi) può ridurre le dimensioni della rete di dieci volte, anche se questo riduce significativamente l&#39;accuratezza delle risposte.&lt;/p&gt;
&lt;p&gt;Un altro approccio è la potatura, che rimuove le connessioni non importanti nella rete neurale. Questo processo funziona sia durante l&#39;addestramento sia con le reti completate. Oltre alle semplici connessioni, il pruning può rimuovere neuroni o interi strati. Questa riduzione dei parametri e delle connessioni porta a una riduzione dei requisiti di memoria.&lt;/p&gt;
&lt;p&gt;La decomposizione di matrici o tensori è la terza tecnica comune di riduzione delle dimensioni. La scomposizione di una matrice di grandi dimensioni in un prodotto di tre matrici più piccole riduce i parametri totali mantenendo la qualità. Questo può ridurre le dimensioni della rete di decine di volte. La decomposizione tensoriale offre risultati ancora migliori, ma richiede più iperparametri.&lt;/p&gt;
&lt;p&gt;Sebbene questi metodi riducano efficacemente le dimensioni, tutti devono affrontare il problema della perdita di qualità. I modelli compressi di grandi dimensioni superano le loro controparti più piccole e non compresse, ma ogni compressione rischia di ridurre l&#39;accuratezza delle risposte. La distillazione della conoscenza rappresenta un interessante tentativo di bilanciare qualità e dimensioni.&lt;/p&gt;
&lt;h3&gt;Proviamo insieme&lt;/h3&gt;
&lt;p&gt;La distillazione della conoscenza si spiega meglio con l&#39;analogia tra studente e insegnante. Mentre gli studenti imparano, gli insegnanti insegnano e aggiornano continuamente le loro conoscenze. Quando entrambi si imbattono in nuove conoscenze, l&#39;insegnante è avvantaggiato: può attingere alle sue ampie conoscenze in altri settori, mentre lo studente non ha ancora queste basi.&lt;/p&gt;
&lt;p&gt;Questo principio si applica alle reti neurali. Quando si addestrano due reti neurali dello stesso tipo ma di dimensioni diverse su dati identici, la rete più grande di solito ottiene risultati migliori. La sua maggiore capacità di &quot;conoscenza&quot; consente di ottenere risposte più precise rispetto alla sua controparte più piccola. Ciò solleva una possibilità interessante: perché non addestrare la rete più piccola non solo sul set di dati, ma anche sulle uscite più accurate della rete più grande?&lt;/p&gt;
&lt;p&gt;Questo processo è la distillazione della conoscenza: una forma di apprendimento supervisionato in cui un modello più piccolo impara a replicare le previsioni di uno più grande. Se da un lato questa tecnica aiuta a compensare la perdita di qualità dovuta alla riduzione delle dimensioni della rete neurale, dall&#39;altro richiede risorse computazionali e tempo di addestramento aggiuntivi.&lt;/p&gt;
&lt;h2&gt;Software e logica&lt;/h2&gt;
&lt;p&gt;Chiarite le basi teoriche, esaminiamo il processo da un punto di vista tecnico. Inizieremo con gli strumenti software che possono guidare l&#39;utente attraverso le fasi di formazione e di distillazione della conoscenza.&lt;/p&gt;
&lt;p&gt;Python, insieme alla libreria &lt;a href=&quot;https://pytorch.org/torchtune/stable/index.html&quot;&gt;TorchTune&lt;/a&gt; dell&#39;ecosistema &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt;, offre l&#39;approccio più semplice per lo studio e la messa a punto di modelli linguistici di grandi dimensioni. Ecco come funziona l&#39;applicazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/092/original/il_what_is_knowledge_distillation.png?1733302736&quot; alt=&quot;What is Knowledge Distillation main illustration&quot;&gt;
&lt;p&gt;Vengono caricati due modelli: un modello completo (insegnante) e un modello ridotto (studente). Durante ogni iterazione di addestramento, il modello insegnante genera previsioni ad alta temperatura, mentre il modello studente elabora il set di dati per fare le proprie previsioni.&lt;/p&gt;
&lt;p&gt;I valori di output grezzi (logit) di entrambi i modelli vengono valutati attraverso una funzione di perdita (una misura numerica di quanto una previsione si discosta dal valore corretto). Gli aggiustamenti del peso vengono quindi applicati al modello studente attraverso la retropropagazione. Ciò consente al modello più piccolo di apprendere e replicare le previsioni del modello insegnante.&lt;/p&gt;
&lt;p&gt;Il file di configurazione principale nel codice dell&#39;applicazione è chiamato ricetta. Questo file memorizza tutti i parametri e le impostazioni della distillazione, rendendo gli esperimenti riproducibili e consentendo ai ricercatori di monitorare l&#39;influenza dei diversi parametri sul risultato finale.&lt;/p&gt;
&lt;p&gt;Quando si selezionano i valori dei parametri e il numero di iterazioni, è fondamentale mantenere l&#39;equilibrio. Un modello troppo distillato può perdere la sua capacità di riconoscere i dettagli più sottili e il contesto, passando a risposte predefinite. Anche se un equilibrio perfetto è quasi impossibile da raggiungere, un attento monitoraggio del processo di distillazione può migliorare sostanzialmente la qualità di previsione anche di modelli di reti neurali modesti.&lt;/p&gt;
&lt;p&gt;Vale la pena di prestare attenzione anche al monitoraggio durante il processo di addestramento. Questo aiuterà a identificare in tempo i problemi e a correggerli tempestivamente. A tale scopo, è possibile utilizzare lo strumento &lt;a href=&quot;https://www.tensorflow.org/tensorboard&quot;&gt;TensorBoard&lt;/a&gt;. Si integra perfettamente nei progetti PyTorch e consente di valutare visivamente molte metriche, come l&#39;accuratezza e le perdite. Inoltre, consente di costruire un grafico del modello, di tenere traccia dell&#39;utilizzo della memoria e del tempo di esecuzione delle operazioni.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;La distillazione della conoscenza è un metodo efficace per ottimizzare le reti neurali e migliorare i modelli compatti. Funziona meglio quando è essenziale bilanciare le prestazioni con la qualità delle risposte.&lt;/p&gt;
&lt;p&gt;Sebbene la distillazione della conoscenza richieda un attento monitoraggio, i suoi risultati possono essere notevoli. I modelli diventano molto più piccoli, pur mantenendo la qualità della previsione, e funzionano meglio con meno risorse di calcolo.&lt;/p&gt;
&lt;p&gt;Se ben pianificata con parametri adeguati, la distillazione della conoscenza è uno strumento fondamentale per creare reti neurali compatte senza sacrificare la qualità.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/607-vantaggi-e-svantaggi-della-condivisione-della-gpu&quot;&gt;Vantaggi e svantaggi della condivisione della GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/609-nvidia-rtx-50-aspettative-e-realt&quot;&gt;NVIDIA® RTX™ 50: aspettative e realtà&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/611-intel-habana-gaudi-2-installazione-e-test&quot;&gt;Intel Habana Gaudi 2: installazione e test&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/092/original/il_what_is_knowledge_distillation.png?1733302736"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:21:29 +0100</pubDate>
      <guid isPermaLink="false">606</guid>
      <dc:date>2025-01-23 13:21:29 +0100</dc:date>
    </item>
    <item>
      <title>AudioCraft di MetaAI: creare musica per descrizione</title>
      <link>https://www.leadergpu.it/catalog/604-audiocraft-di-metaai-creare-musica-per-descrizione</link>
      <description>&lt;p&gt;Le moderne reti neurali generative stanno diventando sempre più intelligenti. Scrivono storie, dialogano con le persone e creano immagini ultra-realistiche. Ora possono produrre semplici brani musicali senza bisogno di artisti professionisti. Questo futuro è diventato realtà oggi. È previsto, poiché le armonie e i ritmi musicali sono radicati in principi matematici.&lt;/p&gt;
&lt;p&gt;Meta ha dimostrato il suo impegno nel mondo del software open-source. Ha reso disponibili al pubblico tre modelli di reti neurali che consentono di creare suoni e musica a partire da descrizioni testuali:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://musicgen.com/&quot;&gt;MusicGen&lt;/a&gt; - genera musica dal testo.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://audiocraft.metademolab.com/audiogen.html&quot;&gt;AudioGen&lt;/a&gt; - genera audio dal testo.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/facebookresearch/encodec&quot;&gt;EnCodec&lt;/a&gt; - compressore audio neurale di alta qualità.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;MusicGen è stato addestrato su 20.000 ore di musica. È possibile utilizzarlo localmente tramite i server dedicati di LeaderGPU come piattaforma.&lt;/p&gt;
&lt;h2&gt;Installazione standard&lt;/h2&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare il gestore di pacchetti Python, pip, e le librerie ffmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-pip ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare torch 2.0 o più recente usando pip:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install &#39;torch&gt;=2.0&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il prossimo comando installa automaticamente &lt;b translate=&quot;no&quot;&gt;audiocraft&lt;/b&gt; e tutte le dipendenze necessarie:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -U audiocraft&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scriviamo una semplice applicazione Python, utilizzando il &lt;a href=&quot;https://huggingface.co/facebook/musicgen-large&quot;&gt;modello MusicGen pre-addestrato&lt;/a&gt; con 3,3B parametri:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano generate.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained(&quot;facebook/musicgen-large&quot;)
model.set_generation_params(duration=30)  # generate a 30 seconds sample.
descriptions = [&quot;rock solo&quot;]
wav = model.generate(descriptions)  # generates sample.
for idx, one_wav in enumerate(wav):
    # Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
    audio_write(f&#39;{idx}&#39;, one_wav.cpu(), model.sample_rate, strategy=&quot;loudness&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire l&#39;applicazione creata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 generate.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo qualche secondo, il file generato (0.wav) apparirà nella directory.&lt;/p&gt;
&lt;h2&gt;Caffè Vampir 3&lt;/h2&gt;
&lt;p&gt;Clonare un repository di progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/CoffeeVampir3/audiocraft-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella clonata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd audiocraft-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire il comando che prepara il sistema e installa tutti i pacchetti necessari:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire quindi il server Coffee Vampire 3 con il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 webui.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Coffee Vampire 3 utilizza Flask come framework. Per impostazione predefinita, viene eseguito su localhost con la porta 5000. Se si desidera un accesso remoto, utilizzare la funzione di port forwarding nel proprio client SSH. Altrimenti, è possibile organizzare una connessione VPN al server.&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Attenzione! Si tratta di un&#39;azione potenzialmente pericolosa; utilizzatela a vostro rischio e pericolo:&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano webui.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scorrere fino alla fine e sostituire &lt;b translate=&quot;no&quot;&gt;socketio.run(app)&lt;/b&gt; con &lt;b translate=&quot;no&quot;&gt;socketio.run(app, host=’0.0.0.0’, port=5000)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Salvare il file ed eseguire il server con il comando precedente. Questo permette di accedere al server da Internet senza alcuna autenticazione.&lt;/p&gt;
&lt;p&gt;Non dimenticate &lt;b translate=&quot;no&quot;&gt;disable AdBlock software&lt;/b&gt;, perché può bloccare il lettore musicale sul lato destro della pagina web. Si può iniziare inserendo il prompt e confermando con il pulsante &lt;b translate=&quot;no&quot;&gt;Submit&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/902/original/sh_audiocraft_by_metaai_create_music_by_description_1.png?1713360831&quot; alt=&quot;Main page Audiocraft WebUI&quot;&gt;
&lt;h2&gt;Generazione TTS WebUI&lt;/h2&gt;
&lt;h3&gt;Passo 1. Driver&lt;/h3&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare i driver NVIDIA® utilizzando il programma di installazione automatica o la nostra guida &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;Installare i driver NVIDIA® in Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Passo 2. Docker&lt;/h3&gt;
&lt;p&gt;Il passo successivo è l&#39;installazione di Docker. Installiamo alcuni pacchetti che devono essere aggiunti al repository Docker: &lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https curl gnupg-agent ca-certificates software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare la chiave GPG di Docker e memorizzarla:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere il repository:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo add-apt-repository &quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare &lt;b translate=&quot;no&quot;&gt;Docker CE&lt;/b&gt; (Community Edition) con la CLI e il runtime &lt;b translate=&quot;no&quot;&gt;containerd&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install docker-ce docker-ce-cli containerd.io&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere l&#39;utente corrente al gruppo docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo usermod -aG docker $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Applicare le modifiche senza la procedura di logout e login:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;newgrp docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Passo 3. Passaggio della GPU&lt;/h3&gt;
&lt;p&gt;Abilitiamo il passthrough delle GPU NVIDIA® in Docker. Il comando seguente legge la versione corrente del sistema operativo nella variabile di distribuzione, che può essere utilizzata nel passaggio successivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;distribution=$(. /etc/os-release;echo $ID$VERSION_ID)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare la chiave GPG del repository NVIDIA® e memorizzarla:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare l&#39;elenco dei repository NVIDIA® e memorizzarlo per utilizzarlo nel gestore di pacchetti APT standard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti e installare il toolkit GPU Passthrough:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update &amp;&amp; sudo apt-get install -y nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il demone Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Passo 4. WebUI&lt;/h3&gt;
&lt;p&gt;Scaricate l&#39;archivio del repository:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://github.com/rsxdalv/tts-generation-webui/archive/refs/heads/main.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scompattarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;unzip main.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd tts-generation-webui-main&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare la costruzione dell&#39;immagine:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;docker build -t rsxdalv/tts-generation-webui .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire il contenitore creato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;docker compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile aprire &lt;b translate=&quot;no&quot;&gt;http://[server_ip]:7860&lt;/b&gt;, digitare il prompt, selezionare il modello necessario e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/903/original/sh_audiocraft_by_metaai_create_music_by_description_2.png?1713360865
&quot; alt=&quot;Audiocraft generated sound&quot;&gt;
&lt;p&gt;Il sistema scarica automaticamente il modello selezionato durante la prima generazione. Buon divertimento!&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion&quot;&gt;Stable Diffusion: Riffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/117/original/il_audiocraft_by_metaai_create_music_by_description.png?1737557205"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:51:35 +0100</pubDate>
      <guid isPermaLink="false">604</guid>
      <dc:date>2025-01-22 15:51:35 +0100</dc:date>
    </item>
    <item>
      <title>Come monitorare l&#39;applicazione LangFlow</title>
      <link>https://www.leadergpu.it/catalog/602-come-monitorare-l-applicazione-langflow</link>
      <description>&lt;p&gt;Nel nostro articolo sul &lt;a href=&quot;https://www.leadergpu.it/articles/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;costruttore di app AI low-code Langflow&lt;/a&gt; abbiamo spiegato come iniziare a utilizzare l&#39;ambiente di programmazione visuale di questo costruttore di app AI low-code. Permette a chiunque, anche a chi non ha conoscenze di programmazione, di creare applicazioni alimentate da grandi modelli di reti neurali. Si può trattare di chatbot AI o di applicazioni per l&#39;elaborazione di documenti in grado di analizzare e sintetizzare i contenuti.&lt;/p&gt;
&lt;p&gt;Langflow utilizza un approccio a blocchi, in cui gli utenti collegano componenti già pronti per creare l&#39;applicazione desiderata. Tuttavia, spesso si presentano due sfide fondamentali: la risoluzione dei problemi quando le reti neurali si comportano in modo inaspettato e la gestione dei costi. Le reti neurali richiedono notevoli risorse di calcolo, il che rende essenziale monitorare e prevedere le spese per l&#39;infrastruttura.&lt;/p&gt;
&lt;p&gt;LangWatch affronta entrambe le sfide. Questo strumento specializzato aiuta gli sviluppatori di Langflow a monitorare le richieste degli utenti, a tenere traccia dei costi e a rilevare le anomalie, ad esempio quando le applicazioni vengono utilizzate in modi non previsti.&lt;/p&gt;
&lt;p&gt;Questo strumento è stato originariamente progettato come servizio, ma può essere distribuito su qualsiasi server, anche a livello locale. Si integra con la maggior parte dei fornitori di LLM, siano essi basati su cloud o on-premise. Essendo open source, LangWatch può essere adattato a quasi tutti i progetti: aggiungendo nuove funzionalità o collegandosi ai sistemi interni.&lt;/p&gt;
&lt;p&gt;LangWatch consente di impostare avvisi quando determinate metriche superano soglie definite. Questo vi aiuta a rilevare rapidamente aumenti imprevisti dei costi delle richieste o ritardi insoliti nelle risposte. Il rilevamento precoce aiuta a prevenire spese non pianificate e potenziali attacchi al servizio.&lt;/p&gt;
&lt;p&gt;Per i ricercatori di reti neurali, questa applicazione consente di monitorare e ottimizzare le richieste più comuni degli utenti. Fornisce inoltre strumenti per valutare la qualità della risposta del modello e apportare le modifiche necessarie.&lt;/p&gt;
&lt;h2&gt;Avvio rapido&lt;/h2&gt;
&lt;h3&gt;Preparazione del sistema&lt;/h3&gt;
&lt;p&gt;Come per Langflow, il modo più semplice per eseguire l&#39;applicazione è attraverso un contenitore Docker. Prima di installare LangWatch, è necessario installare Docker Engine sul server. Per prima cosa, aggiornare la cache dei pacchetti e i pacchetti alle loro ultime versioni:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare i pacchetti aggiuntivi richiesti da Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare la chiave GPG per aggiungere il repository ufficiale di Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere il repository ad APT utilizzando la chiave scaricata e installata in precedenza:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare l&#39;elenco dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per assicurarsi che Docker venga installato dal nuovo repository aggiunto e non da quello di sistema, è possibile eseguire il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt-cache policy docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installa motore Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verificare che Docker sia stato installato correttamente e che il demone corrispondente sia in esecuzione e nello stato &lt;b translate=&quot;no&quot;&gt;active (running)&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset&gt;
    Active: active (running) since Mon 2024-11-18 08:26:35 UTC; 3h 27min ago
TriggeredBy: ● docker.socket
      Docs: https://docs.docker.com
  Main PID: 1842 (dockerd)
     Tasks: 29
    Memory: 1.8G
       CPU: 3min 15.715s
    CGroup: /system.slice/docker.service&lt;/pre&gt;
&lt;h3&gt;Costruire ed eseguire&lt;/h3&gt;
&lt;p&gt;Con Docker Engine installato e funzionante, è possibile scaricare il repository dell&#39;applicazione LangWatch:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/langwatch/langwatch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;applicazione include un file di configurazione di esempio con variabili di ambiente. Copiare questo file in modo che l&#39;utilità di creazione dell&#39;immagine possa elaborarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp langwatch/.env.example langwatch/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora si è pronti per il primo lancio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up --build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il sistema richiederà un momento per scaricare tutti i livelli di contenitore necessari per LangWatch. Una Volta™ completato, verrà visualizzato un messaggio di console che indica che l&#39;applicazione è disponibile all&#39;indirizzo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;http://[LeaderGPU_IP_address]:3000&lt;/pre&gt;
&lt;p&gt;Navigare a questa pagina nel browser, dove verrà richiesto di creare un account utente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/089/original/sh_how_to_monitor_langflow_application_1.png?1732712766&quot; alt=&quot;LangWatch login screen&quot;&gt;
&lt;p&gt;A differenza di Langflow, questo sistema ha l&#39;autenticazione abilitata per impostazione predefinita. Dopo aver effettuato l&#39;accesso, è necessario configurare il sistema per raccogliere i dati dal server Langflow.&lt;/p&gt;
&lt;h2&gt;Integrazione con Langflow&lt;/h2&gt;
&lt;p&gt;Per funzionare, LangWatch ha bisogno di una fonte di dati. Il server è in ascolto sulla porta 3000 e utilizza un&#39;API RESTful, che autentica i dati in arrivo attraverso una chiave API generata automaticamente.&lt;/p&gt;
&lt;p&gt;Per abilitare il trasferimento dei dati, è necessario impostare due variabili nei file di configurazione di Langflow: &lt;b translate=&quot;no&quot;&gt;LANGWATCH_ENDPOINT&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;LANGWATCH_API_KEY&lt;/b&gt;. Per prima cosa, stabilite una connessione SSH al vostro server Langflow (che dovrebbe essere offline durante questo processo).&lt;/p&gt;
&lt;p&gt;Navigare nella cartella con la configurazione di esempio per Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd langflow/docker_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire il file di configurazione per modificarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nella sezione &quot;ambiente:&quot;, aggiungere le seguenti variabili (senza parentesi [] o virgolette):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;- LANGWATCH_API_KEY= [YOUR_API_KEY]
- LANGWATCH_ENDPOINT=http://[IP_ADDRESS]:3000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il file YML richiede una formattazione specifica. Seguire queste due regole fondamentali:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Utilizzare spazi (2 o 4) per l&#39;indentazione, mai tabulazioni.&lt;/li&gt;
    &lt;li&gt;Mantenere una struttura gerarchica corretta con rientri coerenti.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Salvate il file con &lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt; e uscite dall&#39;editor con &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;, Langflow è ora pronto per essere lanciato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo il lancio, verificate che tutto funzioni correttamente. Create un nuovo progetto o apritene uno esistente, quindi avviate un dialogo attraverso Playground. Langflow invierà automaticamente i dati a LangWatch per il monitoraggio, che potrà essere visualizzato nell&#39;interfaccia web.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/090/original/sh_how_to_monitor_langflow_application_2.png?1732712788&quot; alt=&quot;LangWatch integration checks&quot;&gt;
&lt;p&gt;Nella sezione di verifica dell&#39;integrazione, alla voce &quot;Sincronizza il primo messaggio&quot; appare un segno di spunta. Questo indica che i dati di Langflow stanno confluendo con successo in LangWatch, confermando che la configurazione è corretta. Esaminiamo ciò che appare nella sezione &lt;b translate=&quot;no&quot;&gt;Messages&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/091/original/sh_how_to_monitor_langflow_application_3.png?1732712853&quot; alt=&quot;LangWatch messages lookup&quot;&gt;
&lt;p&gt;La sezione Messaggi visualizza i dati immessi nell&#39;applicazione, i parametri utilizzati per la generazione della risposta e la risposta stessa della rete neurale. È possibile valutare la qualità della risposta e utilizzare vari filtri per ordinare i dati, anche con centinaia o migliaia di messaggi.&lt;/p&gt;
&lt;p&gt;Dopo questa configurazione iniziale, è possibile esplorare sistematicamente le funzionalità dell&#39;applicazione. Nella sezione &lt;b translate=&quot;no&quot;&gt;Evaluations&lt;/b&gt; è possibile impostare algoritmi di verifica del dialogo per la moderazione o il riconoscimento dei dati, come ad esempio &lt;b translate=&quot;no&quot;&gt;PII Detection&lt;/b&gt;. Questa funzione analizza l&#39;input alla ricerca di informazioni sensibili come numeri di previdenza sociale o numeri di telefono.&lt;/p&gt;
&lt;p&gt;L&#39;applicazione offre sia opzioni locali che basate sul cloud attraverso fornitori come Azure o Cloudflare. Per utilizzare le funzioni cloud, è necessario disporre di account presso questi servizi, oltre che dei relativi indirizzi endpoint e chiavi API. Tenete presente che si tratta di fornitori di terze parti, quindi verificate direttamente i costi dei loro servizi.&lt;/p&gt;
&lt;p&gt;Per le opzioni locali, l&#39;applicazione dispone di sofisticate funzionalità RAG (Retrieval-augmented generation). È possibile misurare l&#39;accuratezza e la pertinenza dei contenuti generati da RAG e utilizzare le statistiche raccolte per ottimizzare il sistema RAG e ottenere risposte di rete neurale più accurate.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/586-fotogrammetria-con-meshroom&quot;&gt;Fotogrammetria con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/588-rendering-remoto-di-blender-con-flamenco&quot;&gt;Rendering remoto di Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/088/original/il_how_to_monitor_langflow_application.png?1732712732"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:14:55 +0100</pubDate>
      <guid isPermaLink="false">602</guid>
      <dc:date>2025-01-22 15:14:55 +0100</dc:date>
    </item>
    <item>
      <title>Costruttore di app AI a basso codice Langflow</title>
      <link>https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow</link>
      <description>&lt;p&gt;Negli ultimi anni lo sviluppo del software si è evoluto notevolmente. I programmatori moderni hanno ora accesso a centinaia di linguaggi e framework di programmazione. Oltre ai tradizionali approcci imperativi e dichiarativi, sta emergendo un nuovo ed entusiasmante metodo per creare applicazioni. Questo approccio innovativo sfrutta la potenza delle reti neurali, aprendo agli sviluppatori fantastiche possibilità.&lt;/p&gt;
&lt;p&gt;Le persone si sono abituate agli assistenti AI negli IDE che aiutano con l&#39;autocompletamento del codice e alle moderne reti neurali che generano facilmente codice per semplici giochi in Python. Tuttavia, stanno emergendo nuovi strumenti ibridi che potrebbero rivoluzionare il panorama dello sviluppo. Uno di questi strumenti è Langflow.&lt;/p&gt;
&lt;p&gt;Langflow ha molteplici scopi. Per gli sviluppatori professionisti, offre un migliore controllo su sistemi complessi come le reti neurali. Per coloro che non hanno familiarità con la programmazione, consente di creare applicazioni semplici ma pratiche. Questi obiettivi sono raggiunti con mezzi diversi, che analizzeremo in dettaglio.&lt;/p&gt;
&lt;h2&gt;Reti neurali&lt;/h2&gt;
&lt;p&gt;Il concetto di rete neurale può essere semplificato per gli utenti. Immaginate una scatola nera che riceve dati di input e parametri che influenzano il risultato finale. Questa scatola elabora i dati in ingresso utilizzando algoritmi complessi, spesso definiti &quot;magici&quot;, e produce dati in uscita che possono essere presentati all&#39;utente.&lt;/p&gt;
&lt;p&gt;Il funzionamento interno di questa scatola nera varia in base al progetto della rete neurale e ai dati di addestramento. È fondamentale capire che gli sviluppatori e gli utenti non possono mai ottenere risultati certi al 100%. A differenza della programmazione tradizionale, dove 2 + 2 è sempre uguale a 4, una rete neurale potrebbe dare una risposta con una certezza del 99%, mantenendo sempre un margine di errore.&lt;/p&gt;
&lt;p&gt;Il controllo sul processo di &quot;pensiero&quot; di una rete neurale è indiretto. Possiamo regolare solo alcuni parametri, come la &quot;temperatura&quot;. Questo parametro determina quanto la rete neurale possa essere creativa o vincolata nel suo approccio. Un valore basso di temperatura limita la rete a un approccio più formale e strutturato ai compiti e alle soluzioni. Al contrario, valori di temperatura elevati concedono alla rete una maggiore libertà, che può portare a fare affidamento su fatti meno affidabili o addirittura alla creazione di informazioni fittizie.&lt;/p&gt;
&lt;p&gt;Questo esempio illustra come gli utenti possano influenzare il risultato finale. Per la programmazione tradizionale, questa incertezza rappresenta una sfida significativa: gli errori possono comparire inaspettatamente e i risultati specifici diventano imprevedibili. Tuttavia, questa imprevedibilità è un problema principalmente dei computer, non degli esseri umani che possono adattarsi e interpretare risultati diversi.&lt;/p&gt;
&lt;p&gt;Se l&#39;output di una rete neurale è destinato a un essere umano, la formulazione specifica utilizzata per descriverlo è generalmente meno importante. Dato il contesto, le persone possono interpretare correttamente i vari risultati dal punto di vista della macchina. Mentre concetti come &quot;valore positivo&quot;, &quot;risultato raggiunto&quot; o &quot;decisione positiva&quot; possono avere più o meno lo stesso significato per una persona, la programmazione tradizionale avrebbe difficoltà a gestire questa flessibilità. Dovrebbe tenere conto di tutte le possibili varianti di risposta, il che è quasi impossibile.&lt;/p&gt;
&lt;p&gt;D&#39;altra parte, se l&#39;ulteriore elaborazione viene affidata a un&#39;altra rete neurale, questa può comprendere ed elaborare correttamente il risultato ottenuto. Su questa base, può formulare le proprie conclusioni con un certo grado di sicurezza, come già detto.&lt;/p&gt;
&lt;h2&gt;Codice basso&lt;/h2&gt;
&lt;p&gt;La maggior parte dei linguaggi di programmazione prevede la scrittura di codice. I programmatori creano la logica di ogni parte di un&#39;applicazione nella loro mente, quindi la descrivono utilizzando espressioni specifiche del linguaggio. Questo processo forma un algoritmo: una chiara sequenza di azioni che porta a un risultato specifico e predeterminato. È un compito complesso che richiede un notevole sforzo mentale e una profonda conoscenza delle capacità del linguaggio.&lt;/p&gt;
&lt;p&gt;Tuttavia, non è necessario reinventare la ruota. Molti problemi affrontati dagli sviluppatori moderni sono già stati risolti in vari modi. Su StackOverflow si possono &lt;a href=&quot;https://stackoverflow.com/&quot;&gt;trovare&lt;/a&gt; spesso frammenti di codice pertinenti. La programmazione moderna può essere paragonata all&#39;assemblaggio di un intero con parti di diversi set di costruzione. Il sistema Lego offre un modello di successo, avendo standardizzato diversi set di pezzi per garantire la compatibilità.&lt;/p&gt;
&lt;p&gt;Il metodo di programmazione low-code segue un principio simile. I vari pezzi di codice vengono modificati per adattarsi perfettamente l&#39;uno all&#39;altro e vengono presentati agli sviluppatori come blocchi già pronti. Ogni blocco può avere ingressi e uscite di dati. La documentazione specifica il compito che ogni tipo di blocco risolve e il formato in cui accetta o emette i dati.&lt;/p&gt;
&lt;p&gt;Collegando questi blocchi in una sequenza specifica, gli sviluppatori possono formare l&#39;algoritmo di un&#39;applicazione e visualizzarne chiaramente la logica operativa. Forse l&#39;esempio più noto di questo metodo di programmazione è il metodo della grafica a tartaruga, comunemente utilizzato in ambito didattico per introdurre i concetti di programmazione e sviluppare il pensiero algoritmico.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/078/original/sh_low-code_ai_app_builder_langflow_1.png?1732099423&quot; alt=&quot;Turtle graphics&quot;&gt;
&lt;p&gt;L&#39;essenza di questo metodo è semplice: disegnare immagini sullo schermo utilizzando una tartaruga virtuale che lascia una scia mentre striscia sulla tela. Utilizzando blocchi già pronti, come lo spostamento di un determinato numero di pixel, la rotazione ad angoli specifici o il sollevamento e l&#39;abbassamento della penna, gli sviluppatori possono creare programmi che disegnano le immagini desiderate. La creazione di applicazioni utilizzando un costruttore low-code è simile alla grafica delle tartarughe, ma consente agli utenti di risolvere un&#39;ampia gamma di problemi, non solo il disegno su una tela.&lt;/p&gt;
&lt;p&gt;Questo metodo è stato implementato al meglio nello strumento di programmazione Node-RED di IBM. È stato sviluppato come mezzo universale per garantire il funzionamento congiunto di diversi dispositivi, servizi online e API. L&#39;equivalente dei frammenti di codice erano i nodi della libreria standard (palette).&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/079/original/sh_low-code_ai_app_builder_langflow_2.png?1732099465&quot; alt=&quot;Node-RED canvas&quot;&gt;
&lt;p&gt;Le capacità di Node-RED possono essere ampliate installando componenti aggiuntivi o creando nodi personalizzati che eseguono azioni specifiche sui dati. Gli sviluppatori posizionano i nodi della tavolozza sul desktop e creano relazioni tra di essi. Questo processo crea la logica dell&#39;applicazione, mentre la visualizzazione aiuta a mantenere la chiarezza.&lt;/p&gt;
&lt;p&gt;Aggiungendo le reti neurali a questo concetto si ottiene un sistema intrigante. Invece di elaborare i dati con formule matematiche specifiche, è possibile inserirli in una rete neurale e specificare l&#39;output desiderato. Anche se i dati in ingresso possono variare leggermente ogni Volta™, i risultati rimangono adatti all&#39;interpretazione da parte dell&#39;uomo o di altre reti neurali.&lt;/p&gt;
&lt;h2&gt;Generazione aumentata di recupero (RAG)&lt;/h2&gt;
&lt;p&gt;L&#39;accuratezza dei dati nei modelli linguistici di grandi dimensioni è un problema urgente. Questi modelli si basano esclusivamente sulla conoscenza acquisita durante l&#39;addestramento, che dipende dalla rilevanza dei set di dati utilizzati. Di conseguenza, i modelli linguistici di grandi dimensioni possono non avere sufficienti dati rilevanti, portando potenzialmente a risultati errati.&lt;/p&gt;
&lt;p&gt;Per risolvere questo problema, sono necessari metodi di aggiornamento dei dati. Consentire alle reti neurali di estrarre il contesto da fonti aggiuntive, come i siti web, può migliorare significativamente la qualità delle risposte. È proprio così che funziona la RAG (Retrieval-Augmented Generation). I dati aggiuntivi vengono convertiti in rappresentazioni vettoriali e memorizzati in un database.&lt;/p&gt;
&lt;p&gt;In pratica, i modelli di rete neurale possono convertire le richieste degli utenti in rappresentazioni vettoriali e confrontarle con quelle memorizzate nel database. Quando vengono trovati vettori simili, i dati vengono estratti e utilizzati per formare una risposta. I database vettoriali sono sufficientemente veloci per supportare questo schema in tempo reale.&lt;/p&gt;
&lt;p&gt;Affinché questo sistema funzioni correttamente, è necessario stabilire un&#39;interazione tra l&#39;utente, il modello di rete neurale, le fonti di dati esterne e il database vettoriale. Langflow semplifica questa configurazione grazie alla sua componente visiva: gli utenti costruiscono semplicemente dei blocchi standard e li &quot;collegano&quot;, creando un percorso per il flusso dei dati.&lt;/p&gt;
&lt;p&gt;Il primo passo è quello di popolare il database vettoriale con le fonti pertinenti. Queste possono includere file da un computer locale o pagine web da Internet. Ecco un semplice esempio di caricamento dei dati nel database:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/080/original/sh_low-code_ai_app_builder_langflow_3.png?1732099495&quot; alt=&quot;RAG data load&quot;&gt;
&lt;p&gt;Ora che abbiamo un database vettoriale oltre all&#39;LLM addestrato, possiamo incorporarlo nello schema generale. Quando un utente invia una richiesta nella chat, il sistema forma contemporaneamente un prompt e interroga il database dei vettori. Se vengono trovati vettori simili, i dati estratti vengono analizzati e aggiunti come contesto alla richiesta formata. Il sistema invia quindi una richiesta alla rete neurale e invia la risposta ricevuta all&#39;utente nella chat.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/081/original/sh_low-code_ai_app_builder_langflow_4.png?1732099527&quot; alt=&quot;RAG scheme&quot;&gt;
&lt;p&gt;Sebbene l&#39;esempio citi servizi cloud come OpenAI e AstraDB, è possibile utilizzare qualsiasi servizio compatibile, compresi quelli distribuiti localmente sui server LeaderGPU. Se non riuscite a trovare l&#39;integrazione di cui avete bisogno nell&#39;elenco dei blocchi disponibili, potete scriverla voi stessi o aggiungerne una creata da qualcun altro.&lt;/p&gt;
&lt;h2&gt;Avvio rapido&lt;/h2&gt;
&lt;h3&gt;Preparazione del sistema&lt;/h3&gt;
&lt;p&gt;Il modo più semplice per distribuire Langflow è all&#39;interno di un contenitore Docker. Per configurare il server, iniziare con l&#39;installazione di Docker Engine. Quindi, aggiornate sia la cache dei pacchetti che i pacchetti alle loro ultime versioni:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare i pacchetti aggiuntivi richiesti da Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare la chiave GPG per aggiungere il repository ufficiale di Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere il repository ad APT utilizzando la chiave scaricata e installata in precedenza:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare l&#39;elenco dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per assicurarsi che Docker venga installato dal nuovo repository aggiunto e non da quello di sistema, è possibile eseguire il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt-cache policy docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installa motore Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verificare che Docker sia stato installato correttamente e che il demone corrispondente sia in esecuzione e nello stato &lt;b translate=&quot;no&quot;&gt;active (running)&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;● docker.service - Docker Application Container Engine
  Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset&gt;
  Active: active (running) since Mon 2024-11-18 08:26:35 UTC; 3h 27min ago
TriggeredBy: ● docker.socket
    Docs: https://docs.docker.com
Main PID: 1842 (dockerd)
   Tasks: 29
  Memory: 1.8G
     CPU: 3min 15.715s
  CGroup: /system.slice/docker.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Costruire ed eseguire&lt;/h3&gt;
&lt;p&gt;Tutto è pronto per costruire ed eseguire un contenitore Docker con Langflow. Tuttavia, c&#39;è un&#39;avvertenza: al momento della stesura di questa guida, l&#39;ultima versione (taggata v1.1.0) presenta un errore e non si avvia. Per evitare questo problema, useremo la versione precedente, v1.0.19.post2, che funziona perfettamente subito dopo il download.&lt;/p&gt;
&lt;p&gt;L&#39;approccio più semplice è quello di scaricare il repository del progetto da GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/langflow-ai/langflow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigare nella cartella contenente la configurazione di deployment di esempio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd langflow/docker_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è necessario fare due cose. Primo, cambiare il tag release, in modo da creare una versione funzionante (al momento della stesura di queste istruzioni). In secondo luogo, aggiungere una semplice autorizzazione, in modo che nessuno possa usare il sistema senza conoscere login e password.&lt;/p&gt;
&lt;p&gt;Aprire il file di configurazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;invece della riga seguente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;image: langflowai/langflow:latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;specificare la versione invece del tag &lt;b translate=&quot;no&quot;&gt;latest&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;image: langflowai/langflow:v1.0.19.post2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È inoltre necessario aggiungere tre variabili alla sezione &lt;b translate=&quot;no&quot;&gt;environment&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;  - LANGFLOW_AUTO_LOGIN=false
  - LANGFLOW_SUPERUSER=admin
  - LANGFLOW_SUPERUSER_PASSWORD=your_secure_password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La prima variabile disabilita l&#39;accesso all&#39;interfaccia web senza autorizzazione. La seconda aggiunge il nome utente che riceverà i diritti di amministratore del sistema. La terza aggiunge la password corrispondente.&lt;/p&gt;
&lt;p&gt;Se si intende memorizzare il file &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; in un sistema di controllo della versione, evitare di scrivere la password direttamente in questo file. Creare invece un file separato con estensione &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt; nella stessa directory e memorizzare lì il valore della variabile.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;LANGFLOW_SUPERUSER_PASSWORD=your_secure_password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nel file &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; è ora possibile fare riferimento a una variabile invece di specificare direttamente la password:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per evitare di esporre accidentalmente il file &lt;b translate=&quot;no&quot;&gt;*.env&lt;/b&gt; su GitHub, ricordarsi di aggiungerlo a &lt;b translate=&quot;no&quot;&gt;.gitignore&lt;/b&gt;. In questo modo la password rimarrà ragionevolmente al sicuro da accessi indesiderati.&lt;/p&gt;
&lt;p&gt;Ora non resta che costruire il nostro contenitore ed eseguirlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la pagina web all&#39;indirizzo &lt;b translate=&quot;no&quot;&gt;http://[LeaderGPU_IP_address]:7860&lt;/b&gt; e si vedrà il modulo di autorizzazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/082/original/sh_low-code_ai_app_builder_langflow_5.png?1732099559&quot; alt=&quot;Login screen&quot;&gt;
&lt;p&gt;Una Volta™ inseriti login e password, il sistema concede l&#39;accesso all&#39;interfaccia web dove è possibile creare le proprie applicazioni. Per una guida più approfondita, si consiglia di consultare &lt;a href=&quot;https://docs.langflow.org/&quot;&gt;la documentazione ufficiale&lt;/a&gt;. Essa fornisce dettagli su diverse variabili d&#39;ambiente che consentono una facile personalizzazione del sistema in base alle proprie esigenze.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/602-come-monitorare-l-applicazione-langflow&quot;&gt;Come monitorare l&#39;applicazione LangFlow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/586-fotogrammetria-con-meshroom&quot;&gt;Fotogrammetria con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/588-rendering-remoto-di-blender-con-flamenco&quot;&gt;Rendering remoto di Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/077/original/il_low-code_ai_app_builder_langflow.png?1732099387"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:11:30 +0100</pubDate>
      <guid isPermaLink="false">601</guid>
      <dc:date>2025-01-22 15:11:30 +0100</dc:date>
    </item>
    <item>
      <title>Easy Diffusion UI</title>
      <link>https://www.leadergpu.it/catalog/598-easy-diffusion-ui</link>
      <description>&lt;p&gt;Easy Diffusion UI è un software open source disponibile per il download su GitHub. Ecco come installarlo su Ubuntu 22.04 LTS. Se avete appena affittato un server, installate i driver della GPU ed estendete la vostra home directory. Quindi, scaricare l&#39;ultima versione di Easy Diffusion UI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://github.com/cmdr2/stable-diffusion-ui/releases/latest/download/Easy-Diffusion-Linux.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Decomprimere l&#39;archivio ZIP scaricato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;unzip Easy-Diffusion-Linux.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiare la directory in easy-diffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd easy-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare l&#39;installazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si tratta di una raccolta di script che scarica e installa automaticamente tutti i componenti necessari. Scarica anche il modello standard di Diffusione stabile in formato SafeTensors. Una Volta™ completati tutti i download e le installazioni, l&#39;interfaccia utente di Easy Diffusion si avvierà automaticamente.&lt;/p&gt;
&lt;h2&gt;Utilizzo di&lt;/h2&gt;
&lt;p&gt;L&#39;articolo precedente, &lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;, illustra un metodo per accettare connessioni da Internet pubblico e fornisce una semplice autorizzazione di login e password. In questo caso, vogliamo dimostrare un altro metodo universale per l&#39;inoltro delle porte attraverso una connessione SSH. Utilizziamo PuTTY per stabilire una connessione sicura al server remoto. Potete trovare maggiori informazioni al riguardo nella nostra guida &lt;a href=&quot;https://www.leadergpu.it/articles/488-connettiti-a-un-server-linux&quot;&gt;Connettersi a un server Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Per scegliere quali porte inoltrare, aprire &lt;b translate=&quot;no&quot;&gt;Connection &gt; SSH &gt; Tunnels&lt;/b&gt; nell&#39;albero delle opzioni a sinistra. Digitare &lt;b translate=&quot;no&quot;&gt;9000&lt;/b&gt; nel campo &lt;b translate=&quot;no&quot;&gt;Source Port&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;127.0.0.1:9000&lt;/b&gt; nel campo &lt;b translate=&quot;no&quot;&gt;Destination&lt;/b&gt;. Fare quindi clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Add&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/823/original/sh_easy_diffusion_ui_1.png?1712299445&quot; alt=&quot;Port forwarding in PuTTY&quot;&gt;
&lt;p&gt;Successivamente, è possibile tornare a &lt;b translate=&quot;no&quot;&gt;Session&lt;/b&gt; e salvarlo per un uso successivo. Collegarsi al server remoto come di consueto. Ora, tutti i dati inviati o ricevuti sulla porta 9000 dell&#39;indirizzo di loopback 127.0.0.1 saranno reindirizzati al server remoto. Questo metodo crea un tunnel virtuale sicuro che rimane attivo per tutta la durata della connessione.&lt;/p&gt;
&lt;p&gt;Una Volta™ avviata Easy Diffusion UI e attivato il port forwarding, si può aprire un browser web e navigare all&#39;indirizzo &lt;a href=&quot;http://127.0.0.1:9000&quot;&gt;http://127.0.0.1:9000.&lt;/a&gt; Si consiglia di scaricare e installare modelli personalizzati, come descritto in questo articolo, invece di affidarsi esclusivamente al modello standard per generare le immagini. Non dimenticate di aumentare il numero di passi di inferenza e di regolare la risoluzione dell&#39;immagine desiderata (contrassegnata da asterischi).&lt;/p&gt;
&lt;p&gt;Uno dei principali vantaggi dell&#39;interfaccia utente di Easy Diffusion è il supporto di più GPU. Quando si desidera creare un batch di immagini, è possibile scegliere il numero di immagini da creare in parallelo. Ad esempio, se si dispone di una configurazione a doppia GPU:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/824/original/sh_easy_diffusion_ui_2.png?1712299546&quot; alt=&quot;Easy Diffusion UI change threads number&quot;&gt;
&lt;p&gt;È possibile visualizzare il carico della GPU durante il processo di generazione dell&#39;immagine. Stabilire un&#39;altra connessione SSH ed eseguire un singolo comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 1 nvidia-smi&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/825/original/sh_easy_diffusion_ui_3.png?1712299806&quot; alt=&quot;nvidia-smi two threads&quot;&gt;
&lt;p&gt;Inoltre, Easy Diffusion UI semplifica la creazione dei prompt in quanto fornisce numerosi esempi di modificatori di immagine. È possibile mescolarli per ottenere risultati più accurati:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/826/original/sh_easy_diffusion_ui_4.png?1712299873&quot; alt=&quot;Image modifiers&quot;&gt;
&lt;p&gt;È una buona idea esplorare &lt;a href=&quot;https://openart.ai/promptbook&quot;&gt;PromptBook di OpenArt&lt;/a&gt;. Questa guida può migliorare notevolmente le vostre capacità di creazione dei prompt. Con l&#39;interfaccia utente Easy Diffusion, una Volta™ generata l&#39;immagine, è possibile scaricarla, utilizzarla come esempio per la generazione dell&#39;immagine successiva o apportare modifiche con un solo clic:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/827/original/sh_easy_diffusion_ui_5.png?1712299912&quot; alt=&quot;Control elements&quot;&gt;
&lt;p&gt;L&#39;uso più comune del pulsante &lt;b translate=&quot;no&quot;&gt;Upscale&lt;/b&gt; è quello di aumentare la risoluzione di un&#39;immagine. La rete neurale generativa utilizza l&#39;immagine originale come base e aggiunge pixel supplementari, interpolando così l&#39;immagine di partenza alle dimensioni desiderate.&lt;/p&gt;
&lt;p&gt;Quando si generano i volti, possono sorgere problemi come occhi disallineati, dimensioni sproporzionate o parti malformate. Fortunatamente, questi problemi possono essere risolti utilizzando il pulsante &lt;b translate=&quot;no&quot;&gt;Fix Faces&lt;/b&gt;. Inoltre, è possibile utilizzare suggerimenti negativi per evitare che vengano generate facce non corrette.&lt;/p&gt;
&lt;h2&gt;Disinstallare&lt;/h2&gt;
&lt;p&gt;Tutti i file, gli script, le librerie e i modelli sono memorizzati in un&#39;unica directory. Se si desidera rimuovere Easy Diffusion UI dal proprio server, è sufficiente eliminare questa directory insieme a tutto il contenuto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo rm -rf easy-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/590-fooocus-ripensare-sd-e-mj&quot;&gt;Fooocus: Ripensare SD e MJ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/822/original/il_easy_diffusion_ui.jpg?1712299313"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 12:13:37 +0100</pubDate>
      <guid isPermaLink="false">598</guid>
      <dc:date>2025-01-22 12:13:37 +0100</dc:date>
    </item>
    <item>
      <title>Stable Video Diffusion</title>
      <link>https://www.leadergpu.it/catalog/597-stable-video-diffusion</link>
      <description>&lt;p&gt;Le reti neurali generative possono creare diversi tipi di contenuti. Stable Diffusion è stata creata per generare immagini a partire da descrizioni testuali. Tuttavia, può essere utilizzata anche per creare musica, suoni e persino video. Oggi vi mostreremo come creare brevi video da una singola immagine utilizzando Stable Diffusion con WebUI e ComfyUI.&lt;/p&gt;
&lt;h2&gt;Installare Stable Diffusion&lt;/h2&gt;
&lt;p&gt;Iniziamo ad installare Stable Diffusion seguendo la nostra &lt;a href=&quot;https://www.leadergpu.com/articles/506-stable-diffusion-webui&quot;&gt;guida passo passo&lt;/a&gt;. Dopo l&#39;installazione, interrompere l&#39;esecuzione dello script &lt;b translate=&quot;no&quot;&gt;webui.sh&lt;/b&gt; premendo Ctrl + C e chiudere la connessione SSH. Il sistema non consente di installare estensioni con le opzioni --listen (--share) abilitate. Ciò significa che è necessario impostare il port forwarding (7860 e 8189) dal computer locale al server remoto. La prima porta è necessaria per la WebUI e la seconda per ComfyUI.&lt;/p&gt;
&lt;p&gt;Ad esempio, in PuTTY, è necessario aprire &lt;b translate=&quot;no&quot;&gt;Connection &gt;&gt; SSH &gt;&gt; Tunnels&lt;/b&gt; e aggiungere due nuove porte inoltrate, come mostrato nella seguente schermata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/954/original/sh_stable_video_diffusion_1.png?1714024360&quot; alt=&quot;PuTTY port forwarding&quot;&gt;
&lt;p&gt;Ora è possibile ricollegarsi al server remoto ed eseguire nuovamente ./webui.sh.&lt;/p&gt;
&lt;p&gt;Aprire questo URL nel browser:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7860&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigare fino a &lt;b translate=&quot;no&quot;&gt;Extensions &gt;&gt; Available&lt;/b&gt;, quindi fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Load from:&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/955/original/sh_stable_video_diffusion_2.png?1714024393&quot; alt=&quot;Load available extensions&quot;&gt;
&lt;p&gt;Il sistema scaricherà il file JSON con tutte le estensioni disponibili. Digitare &lt;b translate=&quot;no&quot;&gt;ComfyUI&lt;/b&gt; nella casella di ricerca e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/956/original/sh_stable_video_diffusion_3.png?1714024430&quot; alt=&quot;Download ComfyUI&quot;&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/957/original/sh_stable_video_diffusion_4.png?1714024463&quot; alt=&quot;Reload UI&quot;&gt;
&lt;p&gt;La pagina web verrà ricaricata e nel pannello principale verrà visualizzata una nuova scheda &lt;b translate=&quot;no&quot;&gt;ComfyUI&lt;/b&gt;. Passare ad essa e fare clic su &lt;b translate=&quot;no&quot;&gt;Install ComfyUI&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/958/original/sh_stable_video_diffusion_5.png?1714024493&quot; alt=&quot;Install ComfyUI&quot;&gt;
&lt;p&gt;Al termine dell&#39;installazione, interrompere nuovamente l&#39;esecuzione dello script webui.sh premendo &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Installare il modello di diffusione video stabile&lt;/h2&gt;
&lt;p&gt;Aprire la directory del modello:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd stable-diffusion-webui/models/Stable-diffusion/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare il modello completo di Diffusione video stabile:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -L https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors?download=true --output svd_xt.safetensors&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tornare alla directory iniziale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ed eseguire nuovamente il servizio Stable Diffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare l&#39;&lt;a href=&quot;https://github.com/enikolair/comfyui-workflow-svd/blob/main/workflow.json&quot;&gt;esempio&lt;/a&gt; del flusso di lavoro Stable Video Diffusion in formato JSON. Cancellare il flusso di lavoro predefinito di ComfyUI premendo &lt;b translate=&quot;no&quot;&gt;Clear&lt;/b&gt;, quindi &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt; l&#39;esempio scaricato:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/959/original/sh_stable_video_diffusion_6.png?1714024532&quot; alt=&quot;ComfyUI workflow example&quot;&gt;
&lt;p&gt;Assicurarsi di aver selezionato il modello corretto nel nodo &lt;b translate=&quot;no&quot;&gt;Image Only Checkpoint Loader (img2vid model)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/960/original/sh_stable_video_diffusion_7.png?1714024570&quot; alt=&quot;Select CKPT model&quot;&gt;
&lt;p&gt;Fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;choose file to upload&lt;/b&gt; nel nodo &lt;b translate=&quot;no&quot;&gt;Load Image&lt;/b&gt; e selezionare una singola immagine che la rete neurale generativa trasformerà in un video:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/961/original/sh_stable_video_diffusion_8.png?1714024606&quot; alt=&quot;Upload an image to ComfyUI&quot;&gt;
&lt;p&gt;Provare a generare un video con tutti i parametri predefiniti facendo clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Queue Prompt&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/962/original/sh_stable_video_diffusion_9.png?1714024638&quot; alt=&quot;Send task to queue&quot;&gt;
&lt;p&gt;Al termine del processo, si otterrà il video in formato WEBP nel nodo &lt;b translate=&quot;no&quot;&gt;SaveAnimatedWEBP&lt;/b&gt;. Fare clic con il tasto destro del mouse sul video generato e scegliere &lt;b translate=&quot;no&quot;&gt;Save Image&lt;/b&gt;:&lt;/p&gt;
&lt;p&gt;Ecco il &lt;a href=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/963/original/sh_stable_video_diffusion_10.gif?1714024668&quot;&gt;risultato finale GIF&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Risoluzione dei problemi&lt;/h2&gt;
&lt;p&gt;Se viene visualizzato un messaggio di errore: &lt;b translate=&quot;no&quot;&gt;ModuleNotFoundError: No module named &#39;utils.json_util&#39;; &#39;utils&#39; is not a package&lt;/b&gt;, seguire i seguenti passaggi:&lt;/p&gt;
&lt;p&gt;Rinominare la directory utils in utilities:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mv /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/utils /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/utilities&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Modificare &lt;b translate=&quot;no&quot;&gt;custom_node_manager.py&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/app/custom_node_manager.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sostituire questa riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from utils.json_util import merge_json_recursive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;con:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from utilities.json_util import merge_json_recursive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file (&lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt;) e uscire dall&#39;editor (&lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;). Quindi modificare &lt;b translate=&quot;no&quot;&gt;main.py&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/main.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sostituire questa riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;import utils.extra_config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;con:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;import utilities.extra_config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file, uscire dall&#39;editor ed eseguire nuovamente il servizio Stable Diffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion&quot;&gt;Stable Diffusion: Riffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/604-audiocraft-di-metaai-creare-musica-per-descrizione&quot;&gt;AudioCraft di MetaAI: creare musica per descrizione&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/953/original/il_stable_video_diffusion.png?1714024295"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 11:53:04 +0100</pubDate>
      <guid isPermaLink="false">597</guid>
      <dc:date>2025-01-22 11:53:04 +0100</dc:date>
    </item>
    <item>
      <title>PyTorch per Windows</title>
      <link>https://www.leadergpu.it/catalog/596-pytorch-per-windows</link>
      <description>&lt;p&gt;Prima di iniziare l&#39;installazione di PyTorch, è necessario installare l&#39;interprete Python e Microsoft Visual C++ Redistributable. Aprite un browser web e visitate la &lt;a href=&quot;https://www.python.org/downloads/windows/&quot;&gt;pagina di download&lt;/a&gt; di Python. Trovate l&#39;ultima versione di Python 3 e cliccate sul link:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/828/original/sh_pytorch_for_windows_1.png?1712305722&quot; alt=&quot;Download Python release&quot;&gt;
&lt;p&gt;Quindi scorrere la pagina e fare clic su &lt;b translate=&quot;no&quot;&gt;Windows Installer (64-bit)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/829/original/sh_pytorch_for_windows_2.png?1712305818&quot; alt=&quot;Select binary&quot;&gt;
&lt;p&gt;Aprire il file scaricato per procedere all&#39;installazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/830/original/sh_pytorch_for_windows_3.png?1712306001&quot; alt=&quot;Run the installer&quot;&gt;
&lt;p&gt;Selezionate la casella &lt;b translate=&quot;no&quot;&gt;Add python.exe to PATH&lt;/b&gt; e fate clic su &lt;b translate=&quot;no&quot;&gt;Install Now&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/831/original/sh_pytorch_for_windows_4.png?1712306095&quot; alt=&quot;Select Install Now and Add to PATH&quot;&gt;
&lt;p&gt;Attendere un minuto per il completamento del processo di installazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/832/original/sh_pytorch_for_windows_5.png?1712314249&quot; alt=&quot;Python setup process&quot;&gt;
&lt;p&gt;Si può optare per &lt;b translate=&quot;no&quot;&gt;Disable path length limit&lt;/b&gt; se si prevede di utilizzare nomi lunghi che potrebbero superare i limiti di &lt;b translate=&quot;no&quot;&gt;MAX_PATH&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/833/original/sh_pytorch_for_windows_6.png?1712314332&quot; alt=&quot;Python setup complete&quot;&gt;
&lt;h2&gt;Installare MS Visual C++&lt;/h2&gt;
&lt;p&gt;Successivamente, scaricate Microsoft Visual C++ Redistributable utilizzando &lt;a href=&quot;https://aka.ms/vs/16/release/vc_redist.x64.exe&quot;&gt;questo link&lt;/a&gt; e fate clic sul programma di installazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/834/original/sh_pytorch_for_windows_7.png?1712314944&quot; alt=&quot;Run Microsoft visual C++ redistributable installer&quot;&gt;
&lt;p&gt;È necessario selezionare la casella &lt;b translate=&quot;no&quot;&gt;I agree to the license terms and conditions&lt;/b&gt; e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/835/original/sh_pytorch_for_windows_8.png?1712315044&quot; alt=&quot;Visual C++ accept EULA&quot;&gt;
&lt;p&gt;Dopo qualche secondo, il software verrà installato e sarà possibile accedere al programma di installazione all&#39;indirizzo &lt;b translate=&quot;no&quot;&gt;Close&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/836/original/sh_pytorch_for_windows_9.png?1712315122&quot; alt=&quot;Visual C++ installation complete&quot;&gt;
&lt;p&gt;Ora tutto è pronto per l&#39;installazione di PyTorch. Fate clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Start&lt;/b&gt; e digitate &lt;b translate=&quot;no&quot;&gt;cmd&lt;/b&gt; sulla tastiera. Fate clic con il tasto destro del mouse su &lt;b translate=&quot;no&quot;&gt;Command Prompt&lt;/b&gt; e selezionate &lt;b translate=&quot;no&quot;&gt;Run as administrator&lt;/b&gt; dal menu contestuale:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/837/original/sh_pytorch_for_windows_10.png?1712315294&quot; alt=&quot;PyTorch install using PIP&quot;&gt;
&lt;h2&gt;Installa PyTorch&lt;/h2&gt;
&lt;p&gt;Eseguite il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;pip install torch torchvision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si desidera installare una versione specifica di PyTorch, è possibile specificarla durante l&#39;installazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;pip install torch==1.9.0 torchvision==0.10.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una Volta™ completata l&#39;installazione, verifichiamo che PyTorch funzioni correttamente. Eseguite il seguente comando per aprire l&#39;interprete Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;python&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Digitate queste due stringhe, terminando l&#39;immissione con il tasto &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import torch
print(torch.__version__)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si ottiene un risultato simile a questo, significa che PyTorch è stato installato correttamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;2.0.1+cu117&lt;/pre&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/595-pytorch-per-linux&quot;&gt;PyTorch per Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/581-privategpt-ai-per-i-documenti&quot;&gt;PrivateGPT: AI per i documenti&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/114/original/il_pytorch_for_windows.png?1737541812"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 11:35:30 +0100</pubDate>
      <guid isPermaLink="false">596</guid>
      <dc:date>2025-01-22 11:35:30 +0100</dc:date>
    </item>
    <item>
      <title>PyTorch per Linux</title>
      <link>https://www.leadergpu.it/catalog/595-pytorch-per-linux</link>
      <description>&lt;p&gt;Le moderne distribuzioni Linux dipendono fortemente dalla versione di Python installata. Pertanto, prima di installare PyTorch, si consiglia di creare un ambiente virtuale utilizzando la nostra guida passo passo sulle &lt;a href=&quot;https://www.leadergpu.it/articles/510-utilit-di-sistema-linux&quot;&gt;utilità di sistema di Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Attivare l&#39;ambiente virtuale creato e procedere con l&#39;aggiornamento di pip3:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare l&#39;installazione di PyTorch:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install torch torchvision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si vuole installare una versione specifica di PyTorch, basta digitare il numero di versione richiesto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install torch==1.9.0 torchvision==0.10.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Al termine dell&#39;installazione, verifichiamo che PyTorch sia stato installato correttamente. Aprite l&#39;interprete Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Digitare queste due stringhe, terminando l&#39;immissione con il tasto Invio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import torch
print(torch.__version__)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si ottiene un risultato simile a questo, significa che PyTorch è stato installato correttamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;2.0.1+cu117&lt;/pre&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/596-pytorch-per-windows&quot;&gt;PyTorch per Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/601-costruttore-di-app-ai-a-basso-codice-langflow&quot;&gt;Costruttore di app AI a basso codice Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/604-audiocraft-di-metaai-creare-musica-per-descrizione&quot;&gt;AudioCraft di MetaAI: creare musica per descrizione&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/113/original/il_pytorch_for_linux.png?1737536957"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 10:14:16 +0100</pubDate>
      <guid isPermaLink="false">595</guid>
      <dc:date>2025-01-22 10:14:16 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: Riffusion</title>
      <link>https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion</link>
      <description>&lt;p&gt;Nei nostri precedenti articoli abbiamo esplorato le affascinanti capacità della Diffusione stabile di generare immagini accattivanti. Tuttavia, è importante notare che questa potente rete neurale generativa ha ancora di più da offrire.&lt;/p&gt;
&lt;p&gt;Riffusion è un modello di Stable Diffusion per la creazione e l&#39;editing di musica. Con Riffusion è possibile generare uno spettrogramma di un segmento musicale desiderato e trasformarlo senza sforzo in un estratto musicale. Installiamo Riffusion su un server LeaderGPU e proviamolo in azione.&lt;/p&gt;
&lt;h2&gt;Prerequisiti&lt;/h2&gt;
&lt;p&gt;Iniziate aggiornando il repository della cache dei pacchetti e i pacchetti installati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non dimenticate di installare i driver NVIDIA® usando il comando &lt;b translate=&quot;no&quot;&gt;autoinstall&lt;/b&gt; o manualmente, usando la nostra guida &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;passo-passo&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per creare un ambiente virtuale, gli sviluppatori suggeriscono di utilizzare uno strumento chiamato Anaconda. Si può anche usare venv, di cui abbiamo parlato nel tutorial sulle utilità di sistema di Linux. Scaricare lo script di installazione di Anaconda usando curl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl --output anaconda.sh https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Renderlo eseguibile:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x anaconda.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ed eseguire:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./anaconda.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rispondere SI a tutte le domande, tranne l&#39;ultima (installare Microsoft VSCode). Quindi, accedere nuovamente alla console SSH e creare un nuovo ambiente virtuale con Python v3.9:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create --name riffusion python=3.9&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Attivare il nuovo ambiente virtuale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate riffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si desidera utilizzare formati musicali diversi dal wav, è necessario installare anche il set di librerie FFmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda install -c conda-forge ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installare Riffusion&lt;/h2&gt;
&lt;p&gt;Clonare il repository di Riffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/riffusion/riffusion.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd riffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apportiamo alcune modifiche al file dei requisiti. In questo modo si evitano errori di compatibilità con Torch:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trovare e correggere le versioni dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;diffusers==0.9.0
torchaudio==2.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare le modifiche e procedere con la preparazione di un ambiente virtuale. Il comando seguente installa tutti i pacchetti necessari:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python -m pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, è possibile aprire un &quot;parco giochi&quot;. Si tratta di una semplice interfaccia web che aiuta a conoscere meglio le funzionalità di Riffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python -m riffusion.streamlit.playground&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprite il vostro browser preferito e inserite l&#39;indirizzo &lt;b translate=&quot;no&quot;&gt;http://[SERVER_IP]:8501/&lt;/b&gt;&lt;/p&gt;
&lt;h2&gt;Prova un&#39;area di gioco&lt;/h2&gt;
&lt;p&gt;Ora è possibile creare musica utilizzando i messaggi di testo e modificando gli altri parametri:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/913/original/sh_stable_diffusion_riffusion_1.png?1713769543&quot; alt=&quot;Text to audio prompt line&quot;&gt;
&lt;p&gt;Inoltre, è possibile eseguire alcune operazioni complesse, come la suddivisione dell&#39;audio in componenti separati. Ad esempio, è possibile estrarre la voce da Bohemian Rhapsody dei Queen:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/914/original/sh_stable_diffusion_riffusion_2.png?1713769583&quot; alt=&quot;Generated results&quot;&gt;
&lt;p&gt;Ricordate che questo è solo un esempio di come Riffusion può essere utilizzato. Creando la propria applicazione, si possono ottenere risultati molto più accattivanti. I potenti server di LeaderGPU si occuperanno dei calcoli.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/604-audiocraft-di-metaai-creare-musica-per-descrizione&quot;&gt;AudioCraft di MetaAI: creare musica per descrizione&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/912/original/il_stable_diffusion_riffusion.png?1713769486"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 14:12:29 +0100</pubDate>
      <guid isPermaLink="false">594</guid>
      <dc:date>2025-01-21 14:12:29 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: Generare facce ripetibili</title>
      <link>https://www.leadergpu.it/catalog/593-stable-diffusion-generare-facce-ripetibili</link>
      <description>&lt;p&gt;La ripetibilità è l&#39;aspetto più importante quando si creano contenuti grafici con le reti neurali generative. Questo vale indipendentemente dal tipo di contenuto creato, sia esso un personaggio cinematografico o di gioco, un paesaggio o un ambiente scenico. Il problema principale può essere formulato come: &quot;Come posso ripetere il mio risultato?&quot;. Ogni Volta™ che si inizia a generare immagini con gli stessi stimoli positivi e negativi, si ottengono risultati diversi. A volte le differenze sono minime e accettabili, ma nella maggior parte dei casi possono rappresentare un problema.&lt;/p&gt;
&lt;p&gt;Stable Diffusion viene appreso su un ampio set di dati provenienti dal mondo reale, il che spiega perché la ripetibilità non è un punto di forza di questo modello di rete neurale. Tuttavia, questa regola non si applica alle foto di celebrità. Queste foto si trovano molto più frequentemente nel mondo reale e, quindi, nel set di dati su cui è stato addestrato Stable Diffusion. È possibile utilizzare queste foto come &quot;costante&quot; o &quot;punto di partenza&quot; nel processo di generazione.&lt;/p&gt;
&lt;h2&gt;Metodo 1. &quot;Agitato, non mescolato&quot;&lt;/h2&gt;
&lt;p&gt;Naturalmente, non è necessario creare solo immagini di celebrità, ma è possibile utilizzare più prompt pertinenti per ottenere risultati più o meno coerenti. Ad esempio, possiamo prendere due famose cantanti greche: Elena Paparizou e Marina Satti, e ottenere risultati ripetibili:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt;: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v60-b1&quot;&gt;Realistic Vision v6.0 beta 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Elena Paparizou, Marina Satti, fashion portrait, alone, solo, greek woman in beautiful clothes, natural skin, 8k uhd, high quality, film grain, Canon EOS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, 2girl, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/934/original/sh_stable_diffusion_generate_repeatable_faces_1.png?1713873195&quot; alt=&quot;Greek singer generated&quot;&gt;
&lt;p&gt;Funziona con qualsiasi celebrità, poiché Stable Diffusion ha cercato di riprodurre i tratti facciali più evidenti. In questo caso, utilizziamo lo stesso modello e &quot;frulliamo&quot; due star di Hollywood (Dwayne Johnson e Danny Trejo) in un nuovo personaggio sintetico.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Dwayne Johnson, Danny Trejo, fashion portrait, alone, solo, 8k uhd, high quality, film grain, Canon EOS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/935/original/sh_stable_diffusion_generate_repeatable_faces_2.png?1713873232&quot; alt=&quot;Hollywood stars generated&quot;&gt;
&lt;p&gt;Ogni Volta™ che si mescolano le stesse celebrità, si ottengono risultati simili. Vediamo un altro metodo per generare personaggi ripetibili.&lt;/p&gt;
&lt;h2&gt;Metodo 2. Ancoraggio del nome&lt;/h2&gt;
&lt;p&gt;Le celebrità sono un buon inizio, ma consideriamo altri metodi per ottenere risultati ripetibili. La risposta è abbastanza semplice: possiamo utilizzare più nomi umani. Ogni nazione ha nomi unici, legati a caratteristiche linguistiche. Ad esempio, il nome greco Kostas può essere tradotto con &quot;lavoro&quot; o &quot;sforzo&quot;, mentre Nikos significa &quot;Vittoria del popolo&quot;. Questi due nomi creano un&#39;immagine unica di una persona generata, aiutando i modelli di rete neurale a comprendere i nostri obiettivi di creazione.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Portrait of [Kostas | Nikos] on a white background, greek man, short haircut, beard&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;woman, bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, 2girl, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/936/original/sh_stable_diffusion_generate_repeatable_faces_3.png?1713873262&quot; alt=&quot;Greek person generated&quot;&gt;
&lt;p&gt;Generiamo numerose immagini (80-100) per la creazione di ulteriori set di dati. Il prompt principale è stato scelto per fornire immagini convenienti che possono essere facilmente cancellate dallo sfondo. I prompt negativi ci evitano di includere nel set di dati immagini casuali con distorsioni e immagini di donne.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Suggerimento: se si ricevono immagini molto diverse l&#39;una dall&#39;altra, provare a cambiare il parametro CFG Scale da 7,5 a 15. Questo costringerà la rete neurale a cambiare le immagini. Questo costringerà la rete neurale a seguire i suggerimenti in modo più formale.&lt;/i&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/937/original/sh_stable_diffusion_generate_repeatable_faces_4.png?1713873299&quot; alt=&quot;Greek person dataset&quot;&gt;
&lt;p&gt;È possibile selezionare i propri nomi unici con un semplice generatore di nomi, come &lt;a href=&quot;https://www.behindthename.com/names/list&quot;&gt;Behind the Name&lt;/a&gt;. Inoltre, è possibile utilizzare la funzione ControlNet per ottenere un maggiore controllo.&lt;/p&gt;
&lt;h2&gt;Metodo 3. Insegnare l&#39;aspetto&lt;/h2&gt;
&lt;p&gt;Non possiamo influenzare direttamente il risultato finale, ma osserviamo che alcuni token (come quelli relativi alle immagini di celebrità) hanno un peso maggiore di altri. Ciò significa che possiamo creare il nostro token condizionale &quot;celebrità&quot; creando un prompt appropriato per esso e addestrando ulteriormente il modello su di esso. Questo è il funzionamento di LoRA (Low-Rank Adaptation of Large Language Models). È possibile utilizzare la &lt;a href=&quot;https://www.leadergpu.it/articles/592-stable-diffusion-lora-selfie&quot;&gt;nostra guida passo-passo&lt;/a&gt; per addestrare il proprio modello LoRA sulla base di un set di dati personalizzato.&lt;/p&gt;
&lt;p&gt;Dopo aver rimosso lo sfondo, otteniamo ritratti chiari e li utilizziamo per creare un modello LoRA specifico. Questo modello aiuta a replicare un volto con alcune piccole modifiche:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/938/original/sh_stable_diffusion_generate_repeatable_faces_5.png?1713873334
&quot; alt=&quot;Dataset without background&quot;&gt;
&lt;p&gt;Ora possiamo generare questo personaggio in luoghi diversi, creare storie e collocarlo in vari ruoli: dal giardiniere all&#39;uomo d&#39;affari. Il suo volto sarà sempre riconoscibile e ripetibile:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/939/original/sh_stable_diffusion_generate_repeatable_faces_6.png?1713873384&quot; alt=&quot;Greek person with various backgrounds&quot;&gt;
&lt;p&gt;Questo metodo non è l&#39;ideale, ma funziona perfettamente in diverse situazioni. Non è necessario preparare un set di dati da una persona reale e può essere generato in remoto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/940/original/sh_stable_diffusion_generate_repeatable_faces_7.jpg?1713873419&quot; alt=&quot;Greek person generated result&quot;&gt;
&lt;p&gt;Si può tentare di creare un personaggio virtuale da soli, senza l&#39;assistenza di un designer professionista o di uno specialista di modellazione 3D. Tutto ciò di cui avete bisogno sono GPU veloci, che potete trovare nei server dedicati di &lt;a href=&quot;https://www.leadergpu.it/&quot;&gt;LeaderGPU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion&quot;&gt;Stable Diffusion: Riffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/933/original/il_stable_diffusion_generate_repeatable_faces.jpg?1713873147"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 13:51:05 +0100</pubDate>
      <guid isPermaLink="false">593</guid>
      <dc:date>2025-01-21 13:51:05 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: LoRA selfie</title>
      <link>https://www.leadergpu.it/catalog/592-stable-diffusion-lora-selfie</link>
      <description>&lt;p&gt;È possibile creare il primo set di dati utilizzando una semplice fotocamera e uno sfondo abbastanza uniforme, come una parete bianca o una tenda oscurante monotona. Per un set di dati di esempio, ho utilizzato una fotocamera mirrorless Olympus OM-D EM5 Mark II con obiettivo 14-42 in kit. Questa fotocamera supporta il controllo remoto da qualsiasi smartphone e una modalità di scatto continuo molto veloce.&lt;/p&gt;
&lt;p&gt;Ho montato la fotocamera su un treppiede e ho impostato la priorità di messa a fuoco sul viso. Poi ho selezionato la modalità in cui la fotocamera cattura 10 fotogrammi consecutivi ogni 3 secondi e ho avviato il processo. Durante la ripresa, ho girato lentamente la testa nella direzione selezionata e ho cambiato direzione ogni 10 fotogrammi:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/916/original/sh_stable_diffusion_lora_selfie_1.jpg?1713785705&quot; alt=&quot;Face directions&quot;&gt;
&lt;p&gt;Il risultato è stato di circa 100 fotogrammi con uno sfondo monotono:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/917/original/sh_stable_diffusion_lora_selfie_2.png?1713785735&quot; alt=&quot;Photos with background&quot;&gt;
&lt;p&gt;Il passo successivo consiste nel rimuovere lo sfondo e lasciare il ritratto su uno sfondo bianco.&lt;/p&gt;
&lt;h2&gt;Eliminare lo sfondo&lt;/h2&gt;
&lt;p&gt;È possibile utilizzare la funzione standard di Adobe Photoshop &lt;b translate=&quot;no&quot;&gt;Remove background&lt;/b&gt; e l&#39;elaborazione in batch. Memorizziamo le azioni che vogliamo applicare a tutte le immagini di un set di dati. Aprire un&#39;immagine qualsiasi, fare clic sull&#39;icona del triangolo, quindi fare clic sul simbolo &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/918/original/sh_stable_diffusion_lora_selfie_3.png?1713785770&quot; alt=&quot;Create new PS action&quot;&gt;
&lt;p&gt;Digitare il nome della nuova azione, ad esempio &lt;b translate=&quot;no&quot;&gt;Remove Background&lt;/b&gt; e fare clic su &lt;b translate=&quot;no&quot;&gt;Record&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/919/original/sh_stable_diffusion_lora_selfie_4.png?1713785802&quot; alt=&quot;Type the name of action&quot;&gt;
&lt;p&gt;Nella scheda &lt;b translate=&quot;no&quot;&gt;Layers&lt;/b&gt;, trovare il simbolo del lucchetto e fare clic su di esso:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/920/original/sh_stable_diffusion_lora_selfie_5.png?1713785831&quot; alt=&quot;Lock the layer&quot;&gt;
&lt;p&gt;Successivamente, fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Remove background&lt;/b&gt; nel pannello fluttuante:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/921/original/sh_stable_diffusion_lora_selfie_6.png?1713785977&quot; alt=&quot;Click remove background&quot;&gt;
&lt;p&gt;Fare clic con il tasto destro del mouse su &lt;b translate=&quot;no&quot;&gt;Layer 0&lt;/b&gt; e selezionare &lt;b translate=&quot;no&quot;&gt;Flatten Image&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/922/original/sh_stable_diffusion_lora_selfie_7.png?1713786013&quot; alt=&quot;Select Flatten Image&quot;&gt;
&lt;p&gt;Tutte le nostre azioni sono state registrate. Fermiamo questo processo:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/923/original/sh_stable_diffusion_lora_selfie_8.png?1713786077&quot; alt=&quot;Stop action recording&quot;&gt;
&lt;p&gt;Ora è possibile chiudere il file aperto senza salvare le modifiche e selezionare &lt;b translate=&quot;no&quot;&gt;File &gt;&gt; Scripts &gt;&gt; Image Processor…&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/924/original/sh_stable_diffusion_lora_selfie_9.png?1713786112&quot; alt=&quot;Multiple image processor&quot;&gt;
&lt;p&gt;Selezionare le directory di input e output, scegliere l&#39;azione &lt;b translate=&quot;no&quot;&gt;Remove Background&lt;/b&gt; creata al punto 4 e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Run&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/925/original/sh_stable_diffusion_lora_selfie_10.png?1713786144&quot; alt=&quot;Image processor options&quot;&gt;
&lt;p&gt;Si prega di essere pazienti. Adobe Photoshop aprirà tutte le immagini nella directory selezionata, ripeterà le azioni registrate (disattivazione del blocco dei livelli, eliminazione dello sfondo, appiattimento dell&#39;immagine) e le salverà in un&#39;altra directory selezionata. Questo processo può richiedere un paio di minuti, a seconda del numero di immagini.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/926/original/sh_stable_diffusion_lora_selfie_11.png?1713786182&quot; alt=&quot;Photos without background&quot;&gt;
&lt;p&gt;Al termine del processo, è possibile passare alla fase successiva.&lt;/p&gt;
&lt;h2&gt;Caricare sul server&lt;/h2&gt;
&lt;p&gt;Per caricare la directory &lt;b translate=&quot;no&quot;&gt;dataset&lt;/b&gt; sul server remoto, utilizzare una delle seguenti guide (adatte al sistema operativo del PC). Ad esempio, posizionatela nella home directory dell&#39;utente predefinito, &lt;b translate=&quot;no&quot;&gt;/home/usergpu&lt;/b&gt;:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/494-scambio-di-file-da-linux&quot;&gt;Scambio di file da Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/495-scambio-di-file-da-windows&quot;&gt;Scambio di file da Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/496-scambio-di-file-da-macos&quot;&gt;Scambio di file da macOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pre-installazione&lt;/h2&gt;
&lt;p&gt;Aggiornare i pacchetti di sistema esistenti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare due pacchetti aggiuntivi:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y python3-tk python3.10-venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installiamo il CUDA® Toolkit versione 11.8. Scarichiamo il file pin specifico:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il comando seguente colloca il file scaricato nella directory di sistema, controllata dal gestore di pacchetti &lt;b translate=&quot;no&quot;&gt;apt&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il prossimo passo è scaricare il repository principale di CUDA:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopodiché, procedere con l&#39;installazione del pacchetto utilizzando l&#39;utility standard &lt;b translate=&quot;no&quot;&gt;dpkg&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare il portachiavi GPG nella directory di sistema. In questo modo sarà disponibile per l&#39;uso da parte delle utility del sistema operativo, compreso il gestore di pacchetti apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare i repository della cache del sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare il toolkit CUDA® utilizzando apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get -y install cuda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere CUDA® al PATH. Aprire la configurazione della shell bash:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere le seguenti righe alla fine del file:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installare l&#39;allenatore&lt;/h2&gt;
&lt;p&gt;Copiare il repository del progetto Kohya sul server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/bmaltais/kohya_ss.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd kohya_ss&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rendere eseguibile lo script di setup:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x ./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verrà visualizzato un messaggio di avviso dall&#39;utilità di accelerazione. Risolviamo il problema. Attivare l&#39;ambiente virtuale del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare il pacchetto mancante:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install scipy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E configurare manualmente l&#39;utilità di accelerazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;accelerate config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fare attenzione, perché l&#39;attivazione di un numero dispari di CPU causerà un errore. Ad esempio, se ho 5 GPU, solo 4 possono essere utilizzate con questo software. In caso contrario, si verificherà un errore all&#39;avvio del processo. È possibile verificare immediatamente la nuova configurazione dell&#39;utilità richiamando un test predefinito:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;accelerate test&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se tutto è a posto, si riceverà un messaggio come questo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Test is a success! You are ready for your distributed training!&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile avviare il server pubblico del trainer con la &lt;a href=&quot;https://www.gradio.app/&quot;&gt;GUI di Gradio&lt;/a&gt; e la semplice autenticazione con login/password (cambiare l&#39;utente/password con la propria):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./gui.sh --share --username user --password password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riceverete due stringhe:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Running on local URL: http://127.0.0.1:7860
Running on public URL: https://&lt;random_numbers_and_letters&gt;.gradio.live&lt;/pre&gt;
&lt;p&gt;Aprire il browser web e inserire l&#39;URL pubblico nella barra degli indirizzi. Digitare il nome utente e la password negli appositi campi, quindi fare clic su Login:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/927/original/sh_stable_diffusion_lora_selfie_12.png?1713786225&quot; alt=&quot;Login screen&quot;&gt;
&lt;h2&gt;Preparare il set di dati&lt;/h2&gt;
&lt;p&gt;Iniziare creando una nuova cartella in cui memorizzare il modello LoRA addestrato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir /home/usergpu/myloramodel&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire le seguenti schede: &lt;b translate=&quot;no&quot;&gt;Utilities &gt;&gt; Captioning &gt;&gt; BLIP captioning&lt;/b&gt;. Riempire gli spazi vuoti come mostrato nell&#39;immagine e fare clic su &lt;b translate=&quot;no&quot;&gt;Caption images&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/928/original/sh_stable_diffusion_lora_selfie_13.png?1713786286&quot; alt=&quot;Set folders&quot;&gt;
&lt;p&gt;Trainer scaricherà ed eseguirà un modello di rete neurale specifico (1,6 Gb) che crea messaggi di testo per ogni file di immagine nella directory selezionata. L&#39;esecuzione avviene su una singola GPU e richiede circa un minuto.&lt;/p&gt;
&lt;p&gt;Passare alla scheda &lt;b translate=&quot;no&quot;&gt;LoRA &gt;&gt; Tools &gt;&gt; Dataset preparation &gt;&gt; Dreambooth/LoRA folder preparation&lt;/b&gt;, riempire gli spazi vuoti e premere in sequenza &lt;b translate=&quot;no&quot;&gt;Prepare training data&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Copy info to Folders Tab&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/929/original/sh_stable_diffusion_lora_selfie_14.png?1713786320&quot; alt=&quot;Set options&quot;&gt;
&lt;p&gt;In questo esempio, utilizziamo il nome &lt;b translate=&quot;no&quot;&gt;nikolai&lt;/b&gt; come &lt;b translate=&quot;no&quot;&gt;Instance prompt&lt;/b&gt; e &quot;persona&quot; come &lt;b translate=&quot;no&quot;&gt;Class prompt&lt;/b&gt;. Impostiamo anche &lt;b translate=&quot;no&quot;&gt;/home/usergpu/dataset&lt;/b&gt; come &lt;b translate=&quot;no&quot;&gt;Training Images&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;/home/usergpu/myloramodel&lt;/b&gt; come &lt;b translate=&quot;no&quot;&gt;Destination training directory&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Passate nuovamente alla scheda &lt;b translate=&quot;no&quot;&gt;LoRA &gt;&gt; Training &gt;&gt; Folders&lt;/b&gt;. Assicurarsi che &lt;b translate=&quot;no&quot;&gt;Image folder&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;Output folder&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Logging folder&lt;/b&gt; siano compilati correttamente. Se lo si desidera, è possibile modificare &lt;b translate=&quot;no&quot;&gt;Model output name&lt;/b&gt; con il proprio nome. Infine, fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Start training&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/930/original/sh_stable_diffusion_lora_selfie_15.png?1713786423&quot; alt=&quot;Start training&quot;&gt;
&lt;p&gt;Il sistema inizierà a scaricare altri file e modelli (~10 GB). Dopodiché, inizierà il processo di addestramento. A seconda della quantità di immagini e delle impostazioni applicate, il processo può durare diverse ore. Una Volta™ completato l&#39;addestramento, è possibile scaricare la directory &lt;b translate=&quot;no&quot;&gt;/home/usergpu/myloramodel&lt;/b&gt; sul computer per un uso futuro.&lt;/p&gt;
&lt;h2&gt;Prova di LoRA&lt;/h2&gt;
&lt;p&gt;Abbiamo preparato alcuni articoli su Stable Diffusion e i suoi fork. Potete provare a installare Easy Diffusion con la nostra guida &lt;a href=&quot;https://www.leadergpu.it/articles/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;. Dopo che il sistema è stato installato e funziona, è possibile caricare il modello LoRA in formato SafeTensors direttamente su &lt;b translate=&quot;no&quot;&gt;/home/usergpu/easy-diffusion/models/lora&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Aggiornare la pagina web di Easy diffusion e selezionare il modello dall&#39;elenco a discesa:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/931/original/sh_stable_diffusion_lora_selfie_16.png?1713786465&quot; alt=&quot;Select LoRA model&quot;&gt;
&lt;p&gt;Scriviamo un semplice prompt, &lt;b translate=&quot;no&quot;&gt;portrait of &amp;lt;nikolai&amp;gt; wearing a cowboy hat&lt;/b&gt;, e generiamo le prime immagini. In questo caso, abbiamo utilizzato un &lt;a href=&quot;https://www.leadergpu.it/articles/566-modelli-di-stable-diffusion-personalizzazione-e-opzioni&quot;&gt;modello personalizzato di Diffusione stabile&lt;/a&gt; scaricato da &lt;a href=&quot;https://civitai.com/&quot;&gt;civitai.com&lt;/a&gt;: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v51&quot;&gt;Realistic Vision v6.0 B1&lt;/a&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/932/original/sh_stable_diffusion_lora_selfie_17.png?1713786492&quot; alt=&quot;Generate the image&quot;&gt;
&lt;p&gt;È possibile sperimentare con prompt e modelli basati su Stable Diffusion per ottenere risultati migliori. Buon divertimento!&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/593-stable-diffusion-generare-facce-ripetibili&quot;&gt;Stable Diffusion: Generare facce ripetibili&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion&quot;&gt;Stable Diffusion: Riffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/915/original/il_stable_diffusion_lora_selfie.jpg?1713785674"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 13:44:25 +0100</pubDate>
      <guid isPermaLink="false">592</guid>
      <dc:date>2025-01-21 13:44:25 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: Cos&#39;è ControlNet</title>
      <link>https://www.leadergpu.it/catalog/591-stable-diffusion-cos-controlnet</link>
      <description>&lt;p&gt;Un&#39;idea sbagliata comune tra coloro che si avvicinano per la prima Volta™ alle reti neurali generative è che il controllo dell&#39;output finale sia tremendamente impegnativo, soprattutto quando si cerca di alterare l&#39;output attraverso una diversa formulazione dei prompt. Attualmente, esiste una suite di strumenti nota come ControlNet che facilita un controllo relativamente semplice ed efficace sui risultati della generazione.&lt;/p&gt;
&lt;p&gt;In questo articolo dimostreremo come manipolare facilmente la posa dei personaggi generati utilizzando immagini preesistenti e &quot;scheletri&quot; personalizzati, con l&#39;aiuto di uno di questi strumenti, &lt;a href=&quot;https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main&quot;&gt;OpenPose&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Passo 1. Installare la diffusione stabile&lt;/h2&gt;
&lt;p&gt;Utilizzate la &lt;a href=&quot;https://www.leadergpu.it/articles/565-stable-diffusion-webui&quot;&gt;nostra guida passo passo&lt;/a&gt; per installare Stable Diffusion con il modello di base e la WebUI. Questa guida si basa sullo script AUTOMATIC1111.&lt;/p&gt;
&lt;h2&gt;Passo 2. Installazione dell&#39;estensione ControlNet&lt;/h2&gt;
&lt;p&gt;Si sconsiglia vivamente di installare l&#39;estensione ControlNet (sd-webui-controlnet) dal &lt;a href=&quot;https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json&quot;&gt;repository standard&lt;/a&gt; a causa di potenziali problemi di funzionalità. Un problema significativo che abbiamo riscontrato durante la preparazione di questa guida è stato il blocco dell&#39;interfaccia web. Sebbene l&#39;immagine sia stata generata inizialmente con successo, l&#39;interfaccia web diventa poco reattiva quando si genera l&#39;immagine una seconda Volta™. Una soluzione alternativa potrebbe essere quella di installare la stessa estensione da una fonte esterna.&lt;/p&gt;
&lt;p&gt;Aprire la WebUI e seguire le schede: &lt;b translate=&quot;no&quot;&gt;Extensions &gt; Install from URL&lt;/b&gt;. Incollare questo URL nel campo appropriato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;https://github.com/Mikubill/sd-webui-controlnet&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fare quindi clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/942/original/sh_stable_diffusion_what_is_controlnet_1.png?1713962546&quot; alt=&quot;Install sd-webui-controlnet&quot;&gt;
&lt;p&gt;Quando il processo è stato completato con successo, dovrebbe apparire il seguente messaggio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.&lt;/pre&gt;
&lt;p&gt;Riavviare l&#39;URL premendo il pulsante Applica e riavvia UI nella scheda Installato:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/943/original/sh_stable_diffusion_what_is_controlnet_2.png?1713962703&quot; alt=&quot;ControlNet Restart UI&quot;&gt;
&lt;p&gt;Dopo il riavvio dell&#39;interfaccia, apparirà il nuovo elemento ControlNet con molte opzioni aggiuntive:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/944/original/sh_stable_diffusion_what_is_controlnet_3.png?1713962785&quot; alt=&quot;ControlNet enabled&quot;&gt;
&lt;h2&gt;Passo 3. Scaricare OpenPose&lt;/h2&gt;
&lt;h3&gt;Aggiungere la chiave HF&lt;/h3&gt;
&lt;p&gt;Generiamo e aggiungiamo una chiave SSH da utilizzare in Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando la coppia di chiavi è stata generata, è possibile visualizzare la chiave pubblica nell&#39;emulatore di terminale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare tutte le informazioni che iniziano con ssh-rsa e terminano con usergpu@gpuserver, come mostrato nella seguente schermata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Aprire un browser web, digitare &lt;a href=&quot;https://huggingface.co/&quot;&gt;https://huggingface.co/&lt;/a&gt; nella barra degli indirizzi e premere &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Accedere al proprio account HF e aprire &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;Impostazioni profilo&lt;/a&gt;. Scegliere quindi &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Compilare &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; e incollare la &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiata dal terminale. Salvare la chiave premendo &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ora il vostro account HF è collegato alla chiave SSH pubblica. La seconda parte (chiave privata) è memorizzata sul server. Il passo successivo consiste nell&#39;installare un&#39;estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali.&lt;/p&gt;
&lt;h3&gt;Installare Git LFS&lt;/h3&gt;
&lt;p&gt;Il passo successivo consiste nell&#39;installare un&#39;estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali. Aprite la vostra home directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare ed eseguire lo script di shell. Questo script installa un nuovo repository di terze parti con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile installarlo utilizzando il gestore di pacchetti standard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configuriamo git per usare il nostro nickname HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E collegato all&#39;account di posta elettronica HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Scaricare il repository&lt;/h3&gt;
&lt;p&gt;Si consiglia, se possibile, di utilizzare un disco rigido locale per scaricare e memorizzare i modelli. Per saperne di più, consultare la nostra guida, &lt;a href=&quot;https://www.leadergpu.it/articles/492-partizionamento-del-disco-in-linux&quot;&gt;Partizionamento dei dischi in Linux&lt;/a&gt;. Per questo esempio, abbiamo montato un disco SSD sul mountpoint /mnt/fastdisk. Facciamo in modo che sia di proprietà dell&#39;utente predefinito:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown usergpu:usergpu /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonare il repository ControlNet da HuggingFace. Git-LFS installato in precedenza sostituirà automaticamente i puntatori con i file reali:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:lllyasviel/ControlNet-v1-1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In questo esempio, aggiungiamo solo un modello alla WebUI di Stable Diffusion. Tuttavia, è possibile copiare tutti i modelli disponibili dal repository (~18GB):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 4. Eseguire il processo di generazione&lt;/h2&gt;
&lt;p&gt;Il modello attuale fornito è piuttosto elementare e potrebbe non dare risultati soddisfacenti. Pertanto, si consiglia di sostituirlo con un modello personalizzato. Le linee guida su come farlo sono riportate in questo articolo: &lt;a href=&quot;https://www.leadergpu.it/articles/566-modelli-di-stable-diffusion-personalizzazione-e-opzioni&quot;&gt;Modelli di diffusione stabile: personalizzazione e opzioni&lt;/a&gt;. Per questo esempio, abbiamo scaricato &lt;a href=&quot;https://civitai.com/api/download/models/130072&quot;&gt;RealisticVision v6.0 B1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Se volete generare la vostra prima immagine usando OpenPose, aprite la scheda &lt;b translate=&quot;no&quot;&gt;ControlNet&lt;/b&gt;, scegliete &lt;b translate=&quot;no&quot;&gt;OpenPose&lt;/b&gt;, spuntate &lt;b translate=&quot;no&quot;&gt;Enable&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Allow Preview&lt;/b&gt;. Quindi fare clic su &lt;b translate=&quot;no&quot;&gt;Upload&lt;/b&gt; per aggiungere un&#39;immagine contenente la posa desiderata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/945/original/sh_stable_diffusion_what_is_controlnet_4.png?1713962881&quot; alt=&quot;Enable OpenPose and Preview&quot;&gt;
&lt;p&gt;È possibile richiedere al sistema di generare un&#39;anteprima della posa facendo clic sul pulsante con l&#39;icona dell&#39;esplosione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/946/original/sh_stable_diffusion_what_is_controlnet_5.png?1713963007&quot; alt=&quot;Show preview&quot;&gt;
&lt;p&gt;A sinistra viene visualizzata l&#39;immagine originale. A destra, si vede lo &quot;scheletro&quot; che rappresenta la posa riconosciuta dal modello della rete neurale:&lt;/p&gt;
&lt;table border=&quot;0&quot;&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/947/original/sh_stable_diffusion_what_is_controlnet_6.png?1713963067&quot; alt=&quot;Dancing woman&quot;&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/948/original/sh_stable_diffusion_what_is_controlnet_7.png?1713963111&quot; alt=&quot;OpenPose skeleton&quot;&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Ora è possibile digitare il prompt principale, ad esempio &quot;&lt;b translate=&quot;no&quot;&gt;dancing bear, by Pixar&lt;/b&gt;&quot; o &quot;&lt;b translate=&quot;no&quot;&gt;dancing fox, by Pixar&lt;/b&gt;&quot; e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;. Dopo pochi secondi si otterranno risultati come questo:&lt;/p&gt;
&lt;table border=&quot;0&quot;&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/949/original/sh_stable_diffusion_what_is_controlnet_8.png?1713963180&quot; alt=&quot;Dancing bear&quot;&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/950/original/sh_stable_diffusion_what_is_controlnet_9.png?1713963213&quot; alt=&quot;Dancing fox&quot;&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Il sistema tenterà di generare una nuova immagine, dato lo &quot;scheletro&quot; ottenuto dall&#39;immagine originale. In alcuni casi, la posa potrebbe non essere accurata, ma questo può essere facilmente corretto modificando manualmente lo &quot;scheletro&quot;.&lt;/p&gt;
&lt;h2&gt;Fase 5. Modifica della posa&lt;/h2&gt;
&lt;p&gt;Anche se può sembrare una magia, il modello non è perfetto e alcuni errori occasionali possono influire sull&#39;immagine finale. Per evitare problemi durante la generazione dell&#39;immagine, è possibile regolare manualmente lo &quot;scheletro&quot; facendo clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Edit&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/951/original/sh_stable_diffusion_what_is_controlnet_10.png?1713963246&quot; alt=&quot;Edit the skeleton&quot;&gt;
&lt;p&gt;Nell&#39;editor fornito, è possibile regolare facilmente la posa trascinando e rilasciando, oppure rimuovere i punti indesiderati con un clic destro. Dopodiché, basta fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Send pose to ControlNet&lt;/b&gt; e la nuova posa verrà applicata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/952/original/sh_stable_diffusion_what_is_controlnet_11.png?1713963279&quot; alt=&quot;Send pose to ControlNet&quot;&gt;
&lt;p&gt;Oltre a OpenPose, ControlNet offre una serie di strumenti per personalizzare e perfezionare i risultati. Inoltre, i server dedicati forniti da LeaderGPU garantiscono un processo rapido e conveniente.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/592-stable-diffusion-lora-selfie&quot;&gt;Stable Diffusion: LoRA selfie&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/593-stable-diffusion-generare-facce-ripetibili&quot;&gt;Stable Diffusion: Generare facce ripetibili&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/594-stable-diffusion-riffusion&quot;&gt;Stable Diffusion: Riffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/941/original/il_stable_diffusion_what_is_controlnet.png?1713962506"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 10:42:39 +0100</pubDate>
      <guid isPermaLink="false">591</guid>
      <dc:date>2025-01-21 10:42:39 +0100</dc:date>
    </item>
    <item>
      <title>Fooocus: Ripensare SD e MJ</title>
      <link>https://www.leadergpu.it/catalog/590-fooocus-ripensare-sd-e-mj</link>
      <description>&lt;p&gt;L&#39;avvento di Stable Diffusion e MidJourney ha rivoluzionato la nostra comprensione del potenziale delle reti neurali generative. Questi strumenti hanno svelato una nuova prospettiva sul processo di creazione delle immagini e sulla misura in cui possiamo manipolarle. L&#39;approccio principale consiste nel fornire al sistema suggerimenti sul risultato desiderato. In sostanza, si evidenziano tre aspetti importanti: oggetto, stile e ambiente.&lt;/p&gt;
&lt;p&gt;Sono importanti, ma non indispensabili, anche altri suggerimenti che forniscono istruzioni più specifiche, come la composizione desiderata, il tipo di fotocamera/obiettivo e la colorazione. Più le istruzioni sono complete, più è facile per la rete neurale elaborarle. Il ruolo di un ingegnere di pronto intervento è emerso anche nello spazio professionale. Tuttavia, questo ruolo può essere facilmente sostituito dalle stesse reti neurali generative. Combinando le capacità di creazione di immagini con quelle di creazione di testi, possiamo generare suggerimenti extra per ottenere un risultato ottimale.&lt;/p&gt;
&lt;p&gt;Questo è il concetto fondamentale di Fooocus. Integra il modello XL Stable Diffusion e un generatore di prompt basato su GPT2, che arricchisce e dettaglia il semplice prompt. Inoltre, Fooocus è dotato di vari miglioramenti ed estensioni. Queste caratteristiche facilitano la generazione di immagini spettacolari attraverso un&#39;interfaccia semplice, priva di strumenti complessi. Approfondiamo le sue funzionalità e installiamo Fooocus su un server dedicato LeaderGPU.&lt;/p&gt;
&lt;h2&gt;Prerequisiti&lt;/h2&gt;
&lt;p&gt;Iniziare con i prerequisiti per l&#39;installazione e riavviare successivamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade &amp;&amp; sudo ubuntu-drivers autoinstall &amp;&amp; sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare lo script di shell che installa Anaconda per la gestione degli ambienti virtuali:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impostare il flag di esecuzione e fornire l&#39;accesso ai dati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod a+x Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script di installazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Al termine del processo, si consiglia di disconnettere la sessione SSH e di preparare l&#39;inoltro della porta. È necessario inoltrare la porta 7865 dal server remoto a un indirizzo di loopback locale, 127.0.0.1:7865. Per ulteriori informazioni, consultare una delle nostre guide precedenti: &lt;a href=&quot;https://www.leadergpu.it/articles/597-stable-video-diffusion&quot;&gt;Diffusione video stabile&lt;/a&gt;. Quindi, ricollegatevi e procedete alla clonazione del repository del progetto su GitHub.&lt;/p&gt;
&lt;h2&gt;Installare Fooocus&lt;/h2&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/lllyasviel/Fooocus.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiare la directory in Fooocus:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd Fooocus&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un ambiente virtuale usando Anaconda e la configurazione YAML preparata dall&#39;autore del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda env create -f environment.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiamo il nostro ambiente di base con uno appena creato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate fooocus&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il passo successivo consiste nell&#39;installare le librerie Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install -r requirements_versions.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora tutto è pronto per iniziare:&lt;/p&gt;
&lt;h2&gt;Avvio Fooocus&lt;/h2&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python entry_with_update.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;avvio iniziale potrebbe richiedere un po&#39; di tempo, poiché l&#39;applicazione verifica e scarica tutti i file necessari per il funzionamento. Nel frattempo si consiglia di prendere una tazza di caffè. Una Volta™ completato il processo, aprite il browser e digitate il seguente URL nella barra degli indirizzi:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7865&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inserite la vostra semplice richiesta e fate clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;. Se desiderate un maggiore controllo, spuntate &lt;b translate=&quot;no&quot;&gt;Advanced&lt;/b&gt; e selezionate le opzioni necessarie:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/976/original/sh_fooocus_rethinking_of_sd_and_mj_1.png?1714481840&quot; alt=&quot;Fooocus WebUI&quot;&gt;
&lt;p&gt;La vera magia si svolge dietro le quinte. Nel momento in cui si preme il pulsante &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;, la richiesta di input viene trasferita al modello linguistico GPT2. Questo modello trasforma la vostra breve richiesta in un mix di richieste elaborative positive e negative. Questo mix viene successivamente immesso nel modello Stable Diffusion XL, regolato per emulare lo stile MidJourney. Di conseguenza, anche una breve richiesta può generare risultati impressionanti.&lt;/p&gt;
&lt;p&gt;Certo, non c&#39;è alcuna restrizione a scrivere i propri suggerimenti. Tuttavia, dopo diverse iterazioni, risulta evidente che anche in assenza di ciò, il contenuto generato rimane intrigante e vario.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/975/original/il_fooocus_rethinking_of_sd_and_mj.png?1714481802"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 10:36:52 +0100</pubDate>
      <guid isPermaLink="false">590</guid>
      <dc:date>2025-01-21 10:36:52 +0100</dc:date>
    </item>
    <item>
      <title>Rendering remoto di Blender con Flamenco</title>
      <link>https://www.leadergpu.it/catalog/588-rendering-remoto-di-blender-con-flamenco</link>
      <description>&lt;p&gt;Quando il rendering di scene pesanti in &lt;a href=&quot;https://www.blender.org/&quot;&gt;Blender&lt;/a&gt; inizia a consumare troppo tempo del vostro team, avete due opzioni: aggiornare il computer di ogni membro del team o esternalizzare il rendering a una farm dedicata. Molte aziende offrono soluzioni di rendering già pronte, ma se avete bisogno di un controllo completo sull&#39;infrastruttura, queste soluzioni potrebbero non essere l&#39;opzione più affidabile.&lt;/p&gt;
&lt;p&gt;Un approccio alternativo potrebbe essere la creazione di un&#39;infrastruttura ibrida. In questa configurazione, l&#39;archiviazione dei dati e la gestione della farm di rendering rimarrebbero all&#39;interno dell&#39;infrastruttura esistente. L&#39;unico elemento che verrebbe collocato all&#39;esterno sarebbero i &lt;a href=&quot;https://www.leadergpu.com/&quot;&gt;server GPU&lt;/a&gt; a noleggio sui quali verrebbe eseguito il rendering.&lt;/p&gt;
&lt;p&gt;In generale, l&#39;infrastruttura della farm di rendering per Blender si presenta come segue:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/888/original/sh_blender_remote_rendering_with_flamenco_1.jpg?1713174084&quot; alt=&quot;Basic components scheme&quot;&gt;
&lt;p&gt;Qui abbiamo un nodo centrale &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; che organizza tutti i processi. Riceve i compiti di rendering dagli utenti tramite uno specifico &lt;b translate=&quot;no&quot;&gt;Blender Add-on&lt;/b&gt; e sposta tutti i file necessari su &lt;b translate=&quot;no&quot;&gt;Shared Storage&lt;/b&gt;. Quindi, &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; distribuisce i compiti a &lt;b translate=&quot;no&quot;&gt;Worker nodes&lt;/b&gt;. Questi ricevono un lavoro contenente tutte le informazioni su dove il Worker può trovare i file da renderizzare e cosa fare con i risultati ottenuti. Per implementare questo schema, è possibile utilizzare un&#39;applicazione completamente gratuita e open-source chiamata &lt;a href=&quot;https://flamenco.blender.org/&quot;&gt;Flamenco&lt;/a&gt;. In questa guida viene mostrato come preparare tutti i nodi, in particolare &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Il nodo &lt;b translate=&quot;no&quot;&gt;Storage&lt;/b&gt; non ha requisiti specifici. Può essere utilizzato con qualsiasi sistema operativo che supporti i protocolli SMB/CIFS o NFS. L&#39;unico requisito è che la directory di archiviazione deve essere montata e accessibile dal sistema operativo. Nella vostra infrastruttura, questa può essere una qualsiasi cartella condivisa accessibile a tutti i nodi.&lt;/p&gt;
&lt;p&gt;Ogni nodo ha indirizzi IP diversi e il server &lt;b translate=&quot;no&quot;&gt;Wireguard VPN&lt;/b&gt; sarà un punto centrale che li unisce in un&#39;unica rete L2. Questo server, situato sul perimetro esterno, consente di lavorare senza apportare modifiche alla politica NAT esistente.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/889/original/sh_blender_remote_rendering_with_flamenco_2.jpg?1713174131&quot; alt=&quot;Virtual components scheme&quot;&gt;
&lt;p&gt;Per questo esempio, creiamo la seguente configurazione mista:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.1 - Wireguard VPN server&lt;/b&gt; (server virtuale di qualsiasi fornitore di infrastrutture) con un IP esterno;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.2 - Worker node&lt;/b&gt; (server dedicato di LeaderGPU) con un IP esterno;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.3 - Manager node&lt;/b&gt; (server virtuale nella rete dell&#39;ufficio) situato dietro NAT;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.4 - Storage node&lt;/b&gt; (server virtuale nella rete dell&#39;ufficio) situato dietro NAT;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.5 - User node&lt;/b&gt; (laptop consumer nella rete dell&#39;ufficio) situato dietro NAT.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Passo 1. Wireguard&lt;/h2&gt;
&lt;h3&gt;Server VPN&lt;/h3&gt;
&lt;p&gt;È possibile installare e configurare Wireguard manualmente, utilizzando una guida ufficiale e degli esempi. Tuttavia, esiste un&#39;alternativa più semplice: uno script non ufficiale realizzato da un ingegnere informatico di Parigi (Stanislas aka &lt;a href=&quot;https://github.com/angristan&quot;&gt;angristan&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Scaricate lo script da GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wget https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rendetelo eseguibile:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;sudo chmod +x wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;sudo ./wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seguire le istruzioni e impostare l&#39;intervallo di indirizzi IP &lt;b translate=&quot;no&quot;&gt;10.0.0.1/24&lt;/b&gt;. Il sistema chiederà di creare immediatamente un file di configurazione per il primo client. Secondo il piano, questo client sarà il nodo worker con nome &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt; e indirizzo &lt;b translate=&quot;no&quot;&gt;10.0.0.2&lt;/b&gt;. Al termine dello script, nella directory principale apparirà un file di configurazione: &lt;b translate=&quot;no&quot;&gt;/root/wg0-client-Worker.conf&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Eseguire il seguente comando per visualizzare la configurazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cat /home/usergpu/wg0-client-Worker.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire nuovamente lo script di installazione per creare un altro client. Aggiungere tutti i client futuri in questo modo e infine verificare che tutti i file di configurazione siano stati creati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;ls -l | grep wg0&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-Manager.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-Storage.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-User.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:58 wg0-client-Worker.conf&lt;/pre&gt;
&lt;h3&gt;Clienti VPN&lt;/h3&gt;
&lt;p&gt;I client VPN comprendono tutti i nodi che devono essere collegati a una singola rete. Nella nostra guida, si tratta del nodo manager, del nodo di archiviazione, del nodo client (se si utilizza Linux) e dei nodi worker. Se il server VPN è in esecuzione su un nodo worker, non è necessario configurarlo come client (questo passaggio può essere saltato).&lt;/p&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti, quindi installare i pacchetti Wireguard e CIFS:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install wireguard cifs-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Elevare i privilegi a superuser:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo -i&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la directory di configurazione di Wireguard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cd /etc/wireguard&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire il comando &lt;b translate=&quot;no&quot;&gt;umask&lt;/b&gt; in modo che solo il superutente abbia accesso ai file di questa directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;umask 077&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generare una chiave privata e salvarla in un file:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wg genkey &gt; private-key&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generare una chiave pubblica utilizzando la chiave privata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wg pubkey &gt; public-key &lt; private-key&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un file di configurazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;nano /etc/wireguard/wg0.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Incollare la propria configurazione, creata per questo client:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [SERVER_IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0
PersistentKeepalive = 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non dimenticare di aggiungere l&#39;opzione &lt;b translate=&quot;no&quot;&gt;PersistentKeepalive = 1&lt;/b&gt; (dove 1 significa 1 secondo) su ogni nodo situato dietro NAT. È possibile scegliere questo periodo in via sperimentale. Il valore consigliato dagli autori di Wireguard è 25. Salvare il file e uscire, usando la scorciatoia &lt;b translate=&quot;no&quot;&gt;CTRL + X&lt;/b&gt; e il tasto &lt;b translate=&quot;no&quot;&gt;Y&lt;/b&gt; per confermare.&lt;/p&gt;
&lt;p&gt;Se si desidera passare il traffico Internet, impostare &lt;b translate=&quot;no&quot;&gt;AllowedIPs&lt;/b&gt; su &lt;b translate=&quot;no&quot;&gt;0.0.0.0/0,::/0&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Quindi, effettuare il logout dall&#39;account root:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare la connessione utilizzando systemctl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verificare che tutto sia a posto e che il servizio sia stato avviato correttamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2023-10-23 09:47:53 UTC; 1h 45min ago
  Docs: man:wg-quick(8)
        man:wg(8)
        https://www.wireguard.com/
        https://www.wireguard.com/quickstart/
        https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
        https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
Process: 4128 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
Main PID: 4128 (code=exited, status=0/SUCCESS)
  CPU: 76ms&lt;/pre&gt;
&lt;p&gt;Se si verifica un errore del tipo &quot;resolvconf: comando non trovato&quot; in Ubuntu 22.04, è sufficiente creare un collegamento di simbolo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abilitate il nuovo servizio a connettersi automaticamente durante l&#39;avvio del sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile verificare la connettività inviando pacchetti echo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ping 10.0.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=145 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=72.0 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=72.0 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=72.2 ms
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 71.981/90.230/144.750/31.476 ms&lt;/pre&gt;
&lt;h2&gt;Passo 2. Nodo NAS&lt;/h2&gt;
&lt;p&gt;Connettersi al server VPN utilizzando la guida del punto 1. Quindi, installare i pacchetti Samba del server e del client:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install samba samba-client&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire il backup della configurazione predefinita:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare una directory che verrà utilizzata come condivisione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkdir /mnt/share&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un nuovo gruppo di utenti che avrà accesso alla nuova condivisione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo groupadd smbusers&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere un utente esistente al gruppo creato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo usermod -aG smbusers user&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impostare una password per questo utente. Questo è un passo necessario perché la password di sistema e la password di Samba sono entità diverse:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo smbpasswd -a $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rimuovere la configurazione predefinita:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo rm /etc/samba/smb.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;e crearne una nuova:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/samba/smb.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[private]
path = /mnt/share
valid users = @smbusers
guest ok = no
browsable = yes
writable = yes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e testare i nuovi parametri:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;testparm -s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare entrambi i servizi Samba:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo service smbd restart&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo service nmbd restart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, dare il permesso di condividere la cartella:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown user:smbusers /mnt/share&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 3. Connessione del client Samba&lt;/h2&gt;
&lt;p&gt;Tutti i nodi di Flamenco utilizzano una directory condivisa situata in /mnt/flamenco. È necessario montare questa directory su ogni nodo prima di eseguire gli script flamenco-client o flamenco-manager. In questo esempio, utilizziamo un nodo worker ospitato su LeaderGPU con il nome utente &lt;b translate=&quot;no&quot;&gt;usergpu&lt;/b&gt;. Si prega di sostituire questi dati con i propri se differiscono.&lt;/p&gt;
&lt;p&gt;Creare un file nascosto in cui memorizzare le credenziali della condivisione SMB:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/.smbcredentials&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Digitare queste due stringhe:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;username=user # your Samba username
password=password # your Samba password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e uscire. Quindi, proteggete il file modificando i permessi di accesso:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chmod 600 /home/usergpu/.smbcredentials&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare una nuova directory che possa essere usata come punto di montaggio per collegare lo storage remoto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkdir /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E rendere l&#39;utente proprietario di questa directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown usergpu:users /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;unica cosa che rimane è che la directory di rete venga montata automaticamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/mnt-flamenco.mount&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Mount Remote Storage
[Mount]
What=//10.0.0.4/private
Where=/mnt/flamenco
Type=cifs
Options=mfsymlinks,credentials=/home/usergpu/.smbcredentials,uid=usergpu,gid=users
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungete due righe alla vostra configurazione VPN nella sezione &lt;b translate=&quot;no&quot;&gt;[Interface]&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo -i&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;nano /etc/wireguard/wg0.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;…
PostUp = ping 10.0.0.4 -c 4 &amp;&amp; systemctl start mnt-flamenco.mount
PostDown = systemctl stop mnt-flamenco.mount
…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verificare che i servizi siano caricati e che la directory condivisa sia montata correttamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Filesystem          Size  Used Avail Use% Mounted on
tmpfs                35G  3.3M   35G   1% /run
/dev/sda2            99G   18G   77G  19% /
tmpfs               174G     0  174G   0% /dev/shm
tmpfs               5.0M     0  5.0M   0% /run/lock
tmpfs                35G  8.0K   35G   1% /run/user/1000
//10.0.0.4/private   40G  9.0G   31G  23% /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 4. Nodo manager&lt;/h2&gt;
&lt;p&gt;Impostare una connessione VPN seguendo la guida del passaggio 1. Arrestare il servizio VPN prima di continuare:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl stop wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prepariamoci. Il montaggio automatico richiede utility per il protocollo CIFS:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install cifs-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il prossimo passo importante è l&#39;installazione di Blender. È possibile farlo utilizzando il gestore di pacchetti APT standard, ma molto probabilmente verrà installata una delle versioni più vecchie (meno della v3.6.4). Utilizziamo Snap per installare l&#39;ultima versione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo snap install blender --classic&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controllare la versione installata usando il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;blender --version&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Blender 4.4.3
build date: 2025-04-29
build time: 15:12:13
build commit date: 2025-04-29
build commit time: 14:09
build hash: 802179c51ccc
build branch: blender-v4.4-release
build platform: Linux
build type: Release
…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si riceve un messaggio di errore che indica la mancanza di librerie, è sufficiente installarle. Tutte queste librerie sono incluse nel pacchetto XOrg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install xorg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare l&#39;applicazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Decomprimere l&#39;archivio scaricato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;tar xvfz flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Andare alla directory creata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd flamenco-3.7-linux-amd64/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E avviare Flamenco per la prima volta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./flamenco-manager&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprite il seguente indirizzo nel vostro browser web: &lt;a href=&quot;http://10.0.0.3:8080/&quot;&gt;http://10.0.0.3:8080/&lt;/a&gt;. Fate clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Let&#39;s go&lt;/b&gt;. Digitare &lt;b translate=&quot;no&quot;&gt;/mnt/flamenco&lt;/b&gt; nel campo richiesto, quindi fare clic su &lt;b translate=&quot;no&quot;&gt;Next&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/890/original/sh_blender_remote_rendering_with_flamenco_3.png?1713174175&quot; alt=&quot;Shared storage setup&quot;&gt;
&lt;p&gt;Flamenco cercherà di individuare il file eseguibile di Blender. Se avete installato Blender da Snap, il percorso sarà &lt;b translate=&quot;no&quot;&gt;/snap/bin/blender&lt;/b&gt;. Controllate questo punto e fate clic su &lt;b translate=&quot;no&quot;&gt;Next&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/891/original/sh_blender_remote_rendering_with_flamenco_4.png?1713174210&quot; alt=&quot;PATH environment setup&quot;&gt;
&lt;p&gt;Controllate il riepilogo e fate clic su &lt;b translate=&quot;no&quot;&gt;Confirm&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/892/original/sh_blender_remote_rendering_with_flamenco_5.png?1713174240&quot; alt=&quot;Check summary settings&quot;&gt;
&lt;p&gt;Tornare alla sessione SSH e usare la scorciatoia da tastiera &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt; per interrompere l&#39;applicazione. Il primo avvio genera il file di configurazione &lt;b translate=&quot;no&quot;&gt;flamenco-manager.yaml&lt;/b&gt;. Aggiungiamo alcune opzioni alle sezioni &lt;b translate=&quot;no&quot;&gt;variables&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;blenderArgs&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano flamenco-manager.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;# Configuration file for Flamenco.
# For an explanation of the fields, refer to flamenco-manager-example.yaml
#
# NOTE: this file will be overwritten by Flamenco Manager&#39;s web-based configuration system.
#
# This file was written on 2023-10-17 12:41:28 +00:00 by Flamenco 3.7
_meta:
  version: 3
manager_name: Flamenco Manager
database: flamenco-manager.sqlite
listen: :8080
autodiscoverable: true
local_manager_storage_path: ./flamenco-manager-storage
shared_storage_path: /mnt/flamenco
shaman:
  enabled: true
  garbageCollect:
    period: 24h0m0s
    maxAge: 744h0m0s
    extraCheckoutPaths: []
task_timeout: 10m0s
worker_timeout: 1m0s
blocklist_threshold: 3
task_fail_after_softfail_count: 3
variables:
  blender:
    values:
    - platform: linux
      value: blender
    - platform: windows
      value: blender
    - platform: darwin
      value: blender
  storage:
    values:
    is_twoway: true
    values:
    - platform: linux
      value: /mnt/flamenco
    - platform: windows
      value: Z:\
    - platform: darwin
      value: /Volumes/shared/flamenco
  blenderArgs:
    values:
    - platform: all
      value: -b -y -E CYCLES -P gpurender.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il primo blocco aggiuntivo descrive ulteriori &lt;a href=&quot;https://flamenco.blender.org/usage/variables/multi-platform/&quot;&gt;variabili bidirezionali&lt;/a&gt;, necessarie per le farm multipiattaforma. Questo risolve il problema principale degli slash e dei percorsi. In Linux si usa il simbolo della barra in avanti (/) come separatore, mentre in Windows si usa il simbolo del backslash (\). In questo caso, creiamo la regola di sostituzione per tutte le alternative disponibili: Linux, Windows e macOS (&lt;a href=&quot;https://en.wikipedia.org/wiki/Darwin_(operating_system)&quot;&gt;Darwin&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Quando si monta una condivisione di rete in Windows, è necessario scegliere una lettera di unità. Ad esempio, il nostro &lt;b translate=&quot;no&quot;&gt;Storage&lt;/b&gt; è montato con la lettera &lt;b translate=&quot;no&quot;&gt;Z:&lt;/b&gt;. La regola di sostituzione indica al sistema che, per la piattaforma Windows, il percorso &lt;b translate=&quot;no&quot;&gt;/mnt/flamenco&lt;/b&gt; sarà situato in &lt;b translate=&quot;no&quot;&gt;Z:\&lt;/b&gt;. Per macOS, questo percorso sarà &lt;b translate=&quot;no&quot;&gt;/Volumes/shared/flamenco&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Osservate il secondo blocco aggiunto. Questo indica a Blender di usare il motore di rendering &lt;a href=&quot;https://www.cycles-renderer.org/&quot;&gt;Cycles&lt;/a&gt; e chiama un semplice script Python, &lt;b translate=&quot;no&quot;&gt;gpurender.py&lt;/b&gt;, quando Blender viene eseguito. Si tratta di un semplice trucco per selezionare la GPU invece della CPU. Non esiste un&#39;opzione standard per farlo direttamente. Non è possibile invocare &lt;b translate=&quot;no&quot;&gt;blender --use-gpu&lt;/b&gt; o qualcosa di simile. Tuttavia, è possibile invocare qualsiasi script Python esterno usando l&#39;opzione &lt;b translate=&quot;no&quot;&gt;-P&lt;/b&gt;. Questo comando indica a &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt; di trovare uno script nella directory locale e di eseguirlo quando il lavoro assegnato richiama l&#39;eseguibile di Blender.&lt;/p&gt;
&lt;p&gt;Ora possiamo delegare il controllo dell&#39;applicazione al sottosistema &lt;a href=&quot;https://systemd.io/&quot;&gt;systemd&lt;/a&gt; init. Informiamo il sistema sulla posizione della directory di lavoro, sul file eseguibile e sui privilegi dell&#39;utente necessari per il lancio. Creare un nuovo file:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compilatelo con le seguenti stringhe:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Flamenco Manager service
[Service]
User=user
WorkingDirectory=/home/user/flamenco-3.7-linux-amd64
ExecStart=/home/user/flamenco-3.7-linux-amd64/flamenco-manager
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e uscire dall&#39;editor di testo nano.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● flamenco-manager.service - Flamenco Manager service
Loaded: loaded (/etc/systemd/system/flamenco-manager.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2023-10-17 11:03:50 UTC; 7s ago
Main PID: 3059 (flamenco-manage)
 Tasks: 7 (limit: 4558)
  Memory: 28.6M
     CPU: 240ms
CGroup: /system.slice/flamenco-manager.service
        └─3059 /home/user/flamenco-3.7-linux-amd64/flamenco-manager&lt;/pre&gt;
&lt;p&gt;Abilitare l&#39;avvio automatico all&#39;avvio del sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 5. Nodo lavoratore&lt;/h2&gt;
&lt;p&gt;Connettersi al server VPN utilizzando la guida del passaggio 1 e montare la condivisione del passaggio 3. Arrestare il servizio VPN prima di continuare:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo snap install blender --classic&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I moderni file *.blend sono compressi con l&#39;algoritmo Zstandard. Per evitare errori, è essenziale incorporare il supporto per questo algoritmo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-zstd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare l&#39;applicazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Decomprimere l&#39;archivio scaricato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;tar xvfz flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigare nella directory creata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd flamenco-3.7-linux-amd64/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare uno script aggiuntivo che abiliti il rendering GPU durante l&#39;esecuzione di Flamenco jobs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano gpurender.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import bpy
def enable_gpus(device_type, use_cpus=False):
    preferences = bpy.context.preferences
    cycles_preferences = preferences.addons[&quot;cycles&quot;].preferences
    cycles_preferences.refresh_devices()
    devices = cycles_preferences.devices
    if not devices:
        raise RuntimeError(&quot;Unsupported device type&quot;)
    activated_gpus = []
    for device in devices:
        if device.type == &quot;CPU&quot;:
            device.use = use_cpus
        else:
            device.use = True
            activated_gpus.append(device.name)
            print(&#39;activated gpu&#39;, device.name)
    cycles_preferences.compute_device_type = device_type
    bpy.context.scene.cycles.device = &quot;GPU&quot;
    return activated_gpus
enable_gpus(&quot;CUDA&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e uscire. Quindi, creare un servizio separato per eseguire Flamenco da systemd:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Flamenco Worker service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu/flamenco-3.7-linux-amd64
ExecStart=/home/usergpu/flamenco-3.7-linux-amd64/flamenco-worker
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ricaricare la configurazione e avviare il nuovo servizio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● flamenco-worker.service - Flamenco Worker service
Loaded: loaded (/etc/systemd/system/flamenco-worker.service; enabled; preset: enabled)
Active: active (running) since Tue 2023-10-17 13:56:18 EEST; 47s ago
Main PID: 636 (flamenco-worker)
 Tasks: 5 (limit: 23678)
Memory: 173.9M
   CPU: 302ms
CGroup: /system.slice/flamenco-worker.service
        └─636 /home/user/flamenco-3.7-linux-amd64/flamenco-worker&lt;/pre&gt;
&lt;p&gt;Attivare l&#39;avvio automatico all&#39;avvio del sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 6. Nodo utente&lt;/h2&gt;
&lt;p&gt;Il nodo utente può essere gestito con qualsiasi sistema operativo. In questa guida mostriamo come configurare un nodo con Windows 11 e i 4 componenti necessari:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;connessione VPN&lt;/li&gt;
  &lt;li&gt;Directory remota montata&lt;/li&gt;
  &lt;li&gt;Blender installato&lt;/li&gt;
  &lt;li&gt;Componente aggiuntivo Flamenco&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Scaricare e installare Wireguard dal &lt;a href=&quot;https://download.wireguard.com/windows-client/wireguard-installer.exe&quot;&gt;sito ufficiale&lt;/a&gt;. Creare un nuovo file di testo e incollarvi la configurazione generata per il client al punto 1. Rinominate il file in &lt;b translate=&quot;no&quot;&gt;flamenco.conf&lt;/b&gt; e aggiungetelo a Wireguard utilizzando il pulsante &lt;b translate=&quot;no&quot;&gt;Add tunnel&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/893/original/sh_blender_remote_rendering_with_flamenco_6.png?1713174282&quot; alt=&quot;Wireguard Add Tunnel&quot;&gt;
&lt;p&gt;Collegarsi al server premendo il pulsante &lt;b translate=&quot;no&quot;&gt;Activate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/894/original/sh_blender_remote_rendering_with_flamenco_7.png?1713174312&quot; alt=&quot;Activate the tunnel&quot;&gt;
&lt;p&gt;Montiamo una directory remota. Fare clic con il tasto destro del mouse su &lt;b translate=&quot;no&quot;&gt;This PC&lt;/b&gt; e selezionare &lt;b translate=&quot;no&quot;&gt;Map network drive…&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/895/original/sh_blender_remote_rendering_with_flamenco_8.png?1713174340&quot; alt=&quot;Mount the remote directory&quot;&gt;
&lt;p&gt;Scegliere &lt;b translate=&quot;no&quot;&gt;Z:&lt;/b&gt; come lettera di unità, digitare l&#39;indirizzo della condivisione Samba &lt;b translate=&quot;no&quot;&gt;\\10.0.0.4\private&lt;/b&gt; e non dimenticare di spuntare &lt;b translate=&quot;no&quot;&gt;Connect using different credentials&lt;/b&gt;. Quindi fare clic su &lt;b translate=&quot;no&quot;&gt;Finish&lt;/b&gt;. Il sistema chiederà di inserire un nome utente e una password per la condivisione. Successivamente, la directory di rete verrà montata come unità Z:.&lt;/p&gt;
&lt;p&gt;Scaricare e installare Blender dal &lt;a href=&quot;https://www.blender.org/download/&quot;&gt;sito ufficiale&lt;/a&gt;. Quindi, aprire l&#39;URL &lt;a href=&quot;http://10.0.0.3:8080/flamenco3-addon.zip&quot;&gt;http://10.0.0.3:8080/flamenco3-addon.zip&lt;/a&gt; e installare il componente aggiuntivo Flamenco. Attivarlo nelle preferenze: &lt;b translate=&quot;no&quot;&gt;Edit &gt; Preferences &gt; Add-ons&lt;/b&gt;. Spuntare &lt;b translate=&quot;no&quot;&gt;System: Flamenco 3&lt;/b&gt;, inserire l&#39;URL del manager &lt;a href=&quot;http://10.0.0.3:8080&quot;&gt;http://10.0.0.3:8080&lt;/a&gt; e fare clic sul pulsante di aggiornamento. Il sistema si collegherà al nodo manager e caricherà automaticamente le impostazioni di archiviazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/896/original/sh_blender_remote_rendering_with_flamenco_9.png?1713174378&quot; alt=&quot;Enable Flamenco add-on&quot;&gt;
&lt;p&gt;Aprire il file da renderizzare. Nella scheda &lt;b translate=&quot;no&quot;&gt;Scene&lt;/b&gt;, scegliere &lt;b translate=&quot;no&quot;&gt;Cycles&lt;/b&gt; dall&#39;elenco a discesa Render &lt;b translate=&quot;no&quot;&gt;Engine&lt;/b&gt;. Non dimenticate di salvare il file, perché queste impostazioni sono memorizzate direttamente nel file *.blend:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/897/original/sh_blender_remote_rendering_with_flamenco_10.png?1713174408&quot; alt=&quot;Select Render Engine&quot;&gt;
&lt;p&gt;Scorrere verso il basso e trovare la sezione &lt;b translate=&quot;no&quot;&gt;Flamenco 3&lt;/b&gt;. Fare clic su &lt;b translate=&quot;no&quot;&gt;Fetch job types&lt;/b&gt; per ottenere un elenco dei tipi disponibili. Selezionare &lt;b translate=&quot;no&quot;&gt;Simple Blender Render&lt;/b&gt; dall&#39;elenco a discesa e impostare altre opzioni, come il numero di fotogrammi, la dimensione dei pezzi e la cartella di output. Infine, fare clic su &lt;b translate=&quot;no&quot;&gt;Submit to Flamenco&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/898/original/sh_blender_remote_rendering_with_flamenco_11.png?1713174432
&quot; alt=&quot;Set rendering parameters&quot;&gt;
&lt;p&gt;Il componente aggiuntivo Flamenco crea un nuovo lavoro e carica un file blend sull&#39;archivio condiviso. Il sistema invia il lavoro a un worker disponibile e avvia il processo di rendering:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/899/original/sh_blender_remote_rendering_with_flamenco_12.png?1713174462&quot; alt=&quot;Check added rendering job&quot;&gt;
&lt;p&gt;Se si controlla il carico della GPU con nvtop o utility simili, si vede che tutte le GPU hanno compiti di calcolo:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/900/original/sh_blender_remote_rendering_with_flamenco_13.png?1713174495&quot; alt=&quot;Check GPU load&quot;&gt;
&lt;p&gt;Il risultato si trova in una directory selezionata nel passaggio precedente. Esempio &lt;a href=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/901/original/sh_blender_remote_rendering_with_flamenco_14.gif?1713175121
&quot;&gt;qui&lt;/a&gt; (&lt;a href=&quot;https://www.blender.org/download/demo-files/&quot;&gt;Ripple Dreams&lt;/a&gt; di &lt;a href=&quot;https://twitter.com/redjam_9&quot;&gt;James Redmond&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Vedere anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/586-fotogrammetria-con-meshroom&quot;&gt;Fotogrammetria con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/590-fooocus-ripensare-sd-e-mj&quot;&gt;Fooocus: Ripensare SD e MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/888/original/sh_blender_remote_rendering_with_flamenco_1.jpg?1713174084"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 09:47:24 +0100</pubDate>
      <guid isPermaLink="false">588</guid>
      <dc:date>2025-01-21 09:47:24 +0100</dc:date>
    </item>
    <item>
      <title>Fotogrammetria con Meshroom</title>
      <link>https://www.leadergpu.it/catalog/586-fotogrammetria-con-meshroom</link>
      <description>&lt;p&gt;La fotogrammetria è un metodo per trasformare gli oggetti fisici in modelli digitali tridimensionali che possono essere modificati con un software 3D. Questo processo utilizza in genere dispositivi specializzati chiamati scanner 3D, di due tipi principali: ottici e laser.&lt;/p&gt;
&lt;p&gt;Gli scanner ottici utilizzano spesso una o più fotocamere digitali e un&#39;illuminazione speciale per illuminare uniformemente l&#39;oggetto durante la scansione. In questo modo è possibile creare un modello 3D. Gli scanner laser, invece, utilizzano raggi laser. Questi dispositivi emettono più raggi laser e misurano il tempo necessario a ciascun raggio per rimbalzare sull&#39;oggetto. Utilizzando questi dati e le informazioni provenienti dai sensori di posizione, lo scanner calcola la distanza di ciascun punto dell&#39;oggetto. Si crea così una &quot;nuvola di punti&quot; che costituisce la base del modello 3D.&lt;/p&gt;
&lt;h3&gt;Nuvola di punti&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/050/original/sh_photogrammetry_with_meshroom_1.png?1724833519&quot; alt=&quot;Points cloud rabbit&quot;&gt;
&lt;p&gt;Per costruire la struttura futura di un oggetto, il sistema deve conoscere le coordinate di ogni vertice nello spazio tridimensionale. L&#39;insieme dei vertici è chiamato nuvola di punti. Più vertici ci sono, più dettagliato sarà l&#39;oggetto. La creazione di una nuvola di punti è la prima e una delle fasi più cruciali per ricreare un modello 3D dalle fotografie.&lt;/p&gt;
&lt;p&gt;È importante notare che ogni vertice della nuvola di punti è inizialmente non collegato ad altri vertici. Ciò consente un facile filtraggio: mantenere i punti necessari e rimuovere gli altri, prima di iniziare a ricreare la mesh dell&#39;oggetto.&lt;/p&gt;
&lt;h3&gt;Oggetti della maglia&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/051/original/sh_photogrammetry_with_meshroom_2.png?1724833553&quot; alt=&quot;Mesh object rabbit&quot;&gt;
&lt;p&gt;Un oggetto mesh è un tipo di modello 3D costituito da primitive geometriche triangolari, spesso chiamate mesh o polimeshes. Una Volta™ formati i punti dell&#39;oggetto, l&#39;applicazione può comporre in modo indipendente primitive triangolari a partire da essi. Collegando queste primitive, è possibile creare un modello 3D di qualsiasi forma. In questa fase, il modello non ha colore e rimane non dipinto.&lt;/p&gt;
&lt;p&gt;La successiva fase di texturing risolve questo problema.&lt;/p&gt;
&lt;h3&gt;Texturing&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/052/original/sh_photogrammetry_with_meshroom_3.png?1724833589&quot; alt=&quot;Textured rabbit&quot;&gt;
&lt;p&gt;La fase finale consiste nell&#39;applicazione della texture dell&#39;immagine estratta dalle foto all&#39;oggetto mesh preparato. La qualità delle foto scattate e la loro risoluzione giocano un ruolo fondamentale. Se è bassa, il risultato finale non sarà ottimale. Ma se è stato scattato un numero sufficiente di foto di buona qualità, alla fine si otterrà un modello 3D completamente pronto all&#39;uso di un oggetto reale. Di seguito forniremo alcuni consigli utili sulla preparazione delle foto originali.&lt;/p&gt;
&lt;h2&gt;Impostazioni della fotocamera&lt;/h2&gt;
&lt;p&gt;Per evitare di rimanere delusi dai primi tentativi di creare un modello 3D da fotografie, considerate queste semplici regole di base. Ciascuna regola aiuterà a prevenire i problemi che di solito si presentano durante la fase di creazione dell&#39;oggetto mesh.&lt;/p&gt;
&lt;p&gt;Innanzitutto, non affidatevi alle impostazioni automatiche della fotocamera digitale. Le fotocamere moderne cercano di bilanciare quattro parametri chiave in modo indipendente:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ISO,&lt;/li&gt;
    &lt;li&gt;bilanciamento del bianco,    &lt;/li&gt;
    &lt;li&gt;velocità dell&#39;otturatore,&lt;/li&gt;
    &lt;li&gt;apertura.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In modalità automatica, anche lievi variazioni delle condizioni esterne possono far variare queste impostazioni tra i fotogrammi. Queste variazioni possono portare a notevoli incongruenze durante la fase di texturing.&lt;/p&gt;
&lt;p&gt;Per mantenere parametri coerenti tra i fotogrammi, utilizzare la modalità &lt;b translate=&quot;no&quot;&gt;Manual&lt;/b&gt; (M). L&#39;apertura è un&#39;impostazione cruciale. A seconda dell&#39;obiettivo, si deve puntare a una posizione quasi chiusa. Questo aiuta a ottenere la massima profondità di campo: meno aperta è l&#39;apertura, meglio è. Tuttavia, evitate valori estremi. Se il vostro obiettivo può essere vicino a &lt;b translate=&quot;no&quot;&gt;f/22&lt;/b&gt;, otterrete buoni risultati utilizzando valori compresi tra &lt;b translate=&quot;no&quot;&gt;f/11&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;f/20&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/053/original/sh_photogrammetry_with_meshroom_4.png?1724833619&quot; alt=&quot;Makarios aperture difference&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;A sinistra f/11, a destra f/22&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;La chiusura del diaframma, tuttavia, crea un altro problema: la luce insufficiente. Questo problema può essere affrontato in due modi: aumentando la sensibilità ISO o allungando la velocità dell&#39;otturatore. Entrambi i metodi influiscono sul risultato finale, anche se in modo diverso. Aumentando l&#39;ISO a 6400 si introduce il rumore digitale nell&#39;immagine, quindi è meglio usare i valori più bassi possibili. Per ottenere risultati quasi ideali, è consigliabile impostare l&#39;ISO a 100. Tuttavia, ciò comporta il problema dell&#39;insufficienza del rumore digitale nell&#39;immagine. Tuttavia, ciò significa che il problema dell&#39;illuminazione insufficiente persiste:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/054/original/sh_photogrammetry_with_meshroom_5.png?1724833649&quot; alt=&quot;Makarios ISO difference&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;A sinistra ISO 100, a destra ISO 6400&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Il modo più efficace per aumentare il passaggio di luce attraverso il sensore della fotocamera in condizioni di scarsa illuminazione è allungare la velocità dell&#39;otturatore. Più a lungo l&#39;otturatore rimane aperto, più fotoni colpiscono il sensore, ottenendo una migliore qualità dell&#39;immagine. Tuttavia, questo approccio presenta una sfida: senza un treppiede, una velocità dell&#39;otturatore di 1/50 di secondo o più può sfocare l&#39;immagine. L&#39;uso di un treppiede elimina questo problema.&lt;/p&gt;
&lt;p&gt;Il bilanciamento del bianco è l&#39;ultimo parametro fondamentale. È importante disattivare l&#39;impostazione automatica e scegliere un profilo preimpostato (come &quot;Sunny day&quot;) o un valore personalizzato in Kelvin. Ad esempio, 5200K è un&#39;impostazione comune. I valori più bassi spostano la tonalità verso il giallo, mentre quelli più alti tendono al blu. Per evitare lunghe correzioni del colore in post-elaborazione, utilizzare lo stesso profilo di bilanciamento del bianco per tutte le foto di una serie.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/055/original/sh_photogrammetry_with_meshroom_6.png?1724833681&quot; alt=&quot;Makarios white balance&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;Profili WB. A sinistra &quot;Giorno di sole&quot;, a destra &quot;Auto&quot;.&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In sintesi, per acquisire foto di alta qualità per la fotogrammetria:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Utilizzare un treppiede quando la luce è insufficiente.&lt;/li&gt;
    &lt;li&gt;Chiudere l&#39;apertura quasi al minimo.&lt;/li&gt;
    &lt;li&gt;Impostare l&#39;ISO al valore minimo.&lt;/li&gt;
    &lt;li&gt;Scegliere una velocità dell&#39;otturatore che dia il risultato desiderato (o utilizzare l&#39;esposimetro integrato nella fotocamera).&lt;/li&gt;
    &lt;li&gt;Utilizzare la stessa preimpostazione del bilanciamento del bianco.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Scattare le foto&lt;/h2&gt;
&lt;p&gt;Parliamo di quante foto scattare e da quali angolazioni. Il tipo di oggetto e il suo sfondo influenzano in modo significativo il risultato finale. Gli oggetti senza superfici lucide, trasparenti o riflettenti sono ideali per la fotogrammetria. In pratica, oggetti come finestre e vetri richiedono spesso una correzione in un editor 3D. Tuttavia, la tecnica generale di ripresa rimane la stessa.&lt;/p&gt;
&lt;p&gt;Per gli oggetti piccoli posizionati su una superficie, immaginare una sfera intorno all&#39;oggetto. Scattare le foto come se la fotocamera girasse intorno all&#39;oggetto tre volte: una Volta™ dal basso, una Volta™ al centro e una Volta™ dall&#39;alto.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/056/original/sh_photogrammetry_with_meshroom_7.png?1724833713&quot; alt=&quot;Rabbit camera positions&quot;&gt;
&lt;p&gt;È fondamentale che l&#39;oggetto occupi almeno la metà, preferibilmente i tre quarti di ogni fotogramma. Invece di usare lo zoom, cercate di avvicinarvi fisicamente all&#39;oggetto. Quando si crea un punto nuvola, il software ha bisogno del maggior numero di pixel possibile.&lt;/p&gt;
&lt;p&gt;Quando si scatta, ricordarsi che il software combina i fotogrammi in un unico oggetto per ottenere una geometria corretta. È buona norma scattare almeno tre fotogrammi da ogni angolazione. Una Volta™ centrato l&#39;oggetto nell&#39;inquadratura, dividerlo mentalmente in verticale in tre parti uguali. Scattare tre foto, ognuna delle quali si concentra su un terzo dell&#39;oggetto. In questo modo si ottiene la sovrapposizione necessaria all&#39;applicazione per calcolare con precisione la posizione di ciascun punto nello spazio 3D. Dopo aver fotografato l&#39;oggetto da tutti i lati e le angolazioni possibili, si può iniziare a preparare il software.&lt;/p&gt;
&lt;h2&gt;Installare Meshroom&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://alicevision.org/&quot;&gt;Meshroom&lt;/a&gt; è un&#39;applicazione gratuita e multipiattaforma che esegue in sequenza tutte le fasi di elaborazione, utilizzando le risorse della CPU e della GPU. Anche se può essere eseguito su un normale computer di casa, ogni fase può richiedere molto tempo. Per progetti su larga scala che prevedono la ricostruzione 3D di numerosi oggetti, come la creazione di una scena 3D di grande effetto, il noleggio di un &lt;a href=&quot;https://www.leadergpu.it/&quot;&gt;server GPU dedicato&lt;/a&gt; potrebbe essere una soluzione pratica.&lt;/p&gt;
&lt;p&gt;Consideriamo un server LeaderGPU con la seguente configurazione: &lt;b translate=&quot;no&quot;&gt;2 x NVIDIA® RTX™ 3090, 2 x Intel® Xeon® Silver 4210 (3.20 GHz), 128GB RAM&lt;/b&gt;. Utilizzeremo Windows Server 2022 come sistema operativo. Prima di installare Meshroom, è necessario eseguire alcune operazioni preliminari:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/489-connettiti-a-un-server-windows&quot;&gt;Collegarsi a un server Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/500-installa-i-driver-nvidia-in-windows&quot;&gt;Installazione dei driver NVIDIA® in Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/513-rendering-gpu-in-rdp&quot;&gt;Rendering della GPU in RDP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visitare il sito web ufficiale del progetto per &lt;a href=&quot;https://alicevision.org/#meshroom&quot;&gt;scaricare Meshroom&lt;/a&gt;. Decomprimere l&#39;archivio ottenuto per trovare un&#39;applicazione pronta all&#39;uso che non richiede ulteriori installazioni. Avviare &lt;b translate=&quot;no&quot;&gt;Meshroom.exe&lt;/b&gt; per iniziare.&lt;/p&gt;
&lt;h3&gt;Caricare le immagini&lt;/h3&gt;
&lt;p&gt;La finestra principale dell&#39;applicazione è divisa in due parti: superiore e inferiore. La sezione superiore contiene la Galleria immagini, il Visualizzatore immagini e il Visualizzatore 3D. La sezione inferiore ospita l&#39;editor grafico e il Task Manager. Per iniziare, trascinare e rilasciare le foto acquisite nell&#39;area designata. Sono supportati sia i formati di file compressi (ad esempio, JPG) che quelli RAW. Si consiglia di utilizzare i file RAW perché contengono una quantità di dati significativamente maggiore per ogni fotogramma.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/057/original/sh_photogrammetry_with_meshroom_8.png?1724833779&quot; alt=&quot;Meshroom main window&quot;&gt;
&lt;p&gt;Si noti che per impostazione predefinita è già disponibile una pipeline standard pronta per l&#39;uso, visualizzata in modo schematico nell&#39;Editor grafico. Questo è uno dei controlli più importanti che aiuta a configurare tutti gli aspetti dell&#39;elaborazione delle immagini in ogni fase. È possibile eseguire manualmente ogni fase facendo clic con il pulsante destro del mouse e selezionando &lt;b translate=&quot;no&quot;&gt;Compute&lt;/b&gt; dal menu a discesa.&lt;/p&gt;
&lt;p&gt;Ma per la prima Volta™, è sufficiente fare clic sul pulsante verde &lt;b translate=&quot;no&quot;&gt;Start&lt;/b&gt; e l&#39;applicazione farà tutto per voi. Verrà richiesto di salvare il progetto, in modo da non perdere accidentalmente i risultati del calcolo. Fare clic su &lt;b translate=&quot;no&quot;&gt;Save&lt;/b&gt;, specificare un nome e una directory e salvare il progetto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/058/original/sh_photogrammetry_with_meshroom_9.png?1724833809&quot; alt=&quot;Meshroom save project&quot;&gt;
&lt;p&gt;Successivamente, l&#39;applicazione trasferisce tutte le fasi di elaborazione dall&#39;Editor grafico al Task Manager, che ne gestisce l&#39;esecuzione in un ordine specifico. Per controllare lo stato di ogni fase, selezionare il blocco corrispondente nell&#39;Editor grafico e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Log&lt;/b&gt; nell&#39;angolo inferiore destro dello schermo. È anche possibile vedere in tempo reale quale fase è in corso di elaborazione:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/059/original/sh_photogrammetry_with_meshroom_10.png?1724833857&quot; alt=&quot;Meshroom task manager&quot;&gt;
&lt;p&gt;Sul lato destro, si può vedere la nuvola di punti costruita. Il risultato finale, generato con la pipeline standard, è disponibile nella directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Your_Project_Path]\MeshroomCache\Texturing\[Random_Symbols]\texturedMesh.obj&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Naturalmente, se si fissa prima il percorso di uscita nel nodo finale della pipeline, l&#39;oggetto finirà sul percorso specificato. È quindi possibile importarlo in qualsiasi editor di testo per correggere le superfici, aggiungere fonti di luce e altri effetti prima del rendering.&lt;/p&gt;
&lt;h2&gt;Integrazione&lt;/h2&gt;
&lt;p&gt;Anche se il risultato iniziale può sembrare impressionante, spesso richiede un perfezionamento in un editor 3D. Meshroom semplifica questo processo consentendo di importare non solo il modello, ma anche la nuvola di punti e le posizioni della telecamera in editor di terze parti come &lt;a href=&quot;https://www.sidefx.com/&quot;&gt;Houdini&lt;/a&gt; o &lt;a href=&quot;https://www.blender.org/&quot;&gt;Blender&lt;/a&gt;. Nella sezione seguente vedremo come fare.&lt;/p&gt;
&lt;h3&gt;Houdini&lt;/h3&gt;
&lt;p&gt;In realtà, Meshroom è un&#39;interfaccia di facile utilizzo per il motore AliceVision, che gestisce tutte le operazioni di calcolo. Questa interfaccia implementa la pipeline e il task manager corrispondenti. Se si utilizza Houdini, è possibile creare la propria pipeline direttamente all&#39;interno dell&#39;applicazione e utilizzarla insieme ad altri strumenti, eliminando la necessità di lanciare Meshroom separatamente.&lt;/p&gt;
&lt;p&gt;Per iniziare, è meglio &lt;a href=&quot;https://www.sidefx.com/download/download-houdini/120709/&quot;&gt;scaricare&lt;/a&gt; e installare un launcher dedicato che gestisca gli aggiornamenti e i plugin di Houdini. Quindi, aggiungere il plugin SideFX Labs, che offre numerosi strumenti aggiuntivi, tra cui nodi specifici per AliceVision. Per farlo, fate clic sul pulsante &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;, quindi selezionate &lt;b translate=&quot;no&quot;&gt;Shelves&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/060/original/sh_photogrammetry_with_meshroom_11.png?1724833888&quot; alt=&quot;Houdini add Shelves Houdini add Shelves&quot;&gt;
&lt;p&gt;Scorrere l&#39;elenco e selezionare &lt;b translate=&quot;no&quot;&gt;SideFX Labs&lt;/b&gt;, quindi fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Update Toolset&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/061/original/sh_photogrammetry_with_meshroom_12.png?1724833916&quot; alt=&quot;Houdini SideFX Labs Update Toolset&quot;&gt;
&lt;p&gt;Per installare un plugin, procedere come segue: Fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Start Launcher&lt;/b&gt;, spostarsi nella sezione &lt;b translate=&quot;no&quot;&gt;Labs/Packages&lt;/b&gt; del menu di sinistra e selezionare &lt;b translate=&quot;no&quot;&gt;Install packages&lt;/b&gt;. Si aprirà una finestra in cui è possibile scegliere i pacchetti da installare:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/062/original/sh_photogrammetry_with_meshroom_13.png?1724833946&quot; alt=&quot;Add Houdini plugin&quot;&gt;
&lt;p&gt;Scegliete il pacchetto &lt;b translate=&quot;no&quot;&gt;Production Build&lt;/b&gt; per la vostra versione di Houdini e fate clic su &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;. Successivamente, riavviare l&#39;applicazione per assicurarsi che le icone dei nuovi effetti appaiano in alto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/063/original/sh_photogrammetry_with_meshroom_14.png?1724833974&quot; alt=&quot;Houdini new items&quot;&gt;
&lt;p&gt;È fondamentale notare che qui non troverete alcun riferimento ad AliceVision o Meshlab. Questo perché il plugin corrispondente funziona solo all&#39;interno della pipeline del contesto geometrico. Per verificarlo, fare clic sull&#39;icona &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;, quindi selezionare &lt;b translate=&quot;no&quot;&gt;New Pane Tab Type&lt;/b&gt;, e scegliere &lt;b translate=&quot;no&quot;&gt;Network View&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/064/original/sh_photogrammetry_with_meshroom_15.png?1724834004&quot; alt=&quot;Houdini Network View&quot;&gt;
&lt;p&gt;Premere il tasto &lt;b translate=&quot;no&quot;&gt;Tab&lt;/b&gt; e aggiungere un nodo &lt;b translate=&quot;no&quot;&gt;Geometry&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/065/original/sh_photogrammetry_with_meshroom_16.png?1724834038&quot; alt=&quot;Houdini add Geometry&quot;&gt;
&lt;p&gt;Fare doppio clic per aprire il nodo creato e digitare &lt;b translate=&quot;no&quot;&gt;av&lt;/b&gt; sulla tastiera. Il sistema visualizzerà immediatamente un elenco di nodi disponibili, a partire dai simboli Labs AV. Questi nodi consentono di controllare il motore AliceVision e di integrarlo nelle proprie pipeline:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/066/original/sh_photogrammetry_with_meshroom_17.png?1724834061&quot; alt=&quot;Houdini AliceVision nodes&quot;&gt;
&lt;p&gt;Per creare una pipeline adeguata, consultare la &lt;a href=&quot;https://www.sidefx.com/tutorials/alicevision-plugin/&quot;&gt;documentazione ufficiale&lt;/a&gt; del plugin. Inoltre, si consiglia di aggiungere la directory di AliceVision all&#39;elenco delle variabili ambientali nel file houdini.env. Per un&#39;installazione standard che utilizza il launcher, questo file si trova in genere nella directory &lt;b translate=&quot;no&quot;&gt;C:\Users\Administrator\Documents\houdini20.5\&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Aprire il file houdini.env con un qualsiasi editor di testo e aggiungere la seguente riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;ALICEVISION_PATH = [path to alicevision directory in Meshroom folder]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ad esempio, se avete installato Meshroom nella directory principale dell&#39;unità D:, il vostro percorso potrebbe essere il seguente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;ALICEVISION_PATH = D:\Meshroom\aliceVision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file, quindi riavviare l&#39;applicazione Houdini.&lt;/p&gt;
&lt;h3&gt;Blender&lt;/h3&gt;
&lt;p&gt;Per gli utenti di Blender, si consiglia il plugin &lt;b translate=&quot;no&quot;&gt;Meshroom2Blender&lt;/b&gt;. Pur funzionando in modo diverso dal plugin per Houdini, consente di esportare in Blender le nuvole di punti e le posizioni della telecamera calcolate da Meshroom. Per accedere al codice del plugin, aprire il link nel browser:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;https://raw.githubusercontent.com/tibicen/meshroom2blender/master/view3d_point_cloud_visualizer.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il codice come &lt;b translate=&quot;no&quot;&gt;view3d_point_cloud_visualizer.py&lt;/b&gt; in una cartella comoda. Quindi, aprire Blender e navigare in &lt;b translate=&quot;no&quot;&gt;Edit&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Preferences&lt;/b&gt;. Da qui, selezionare la scheda &lt;b translate=&quot;no&quot;&gt;Add-ons&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/067/original/sh_photogrammetry_with_meshroom_18.png?1724834088&quot; alt=&quot;Blender Preferences&quot;&gt;
&lt;p&gt;Fare clic sulla freccia verso il basso e selezionare &lt;b translate=&quot;no&quot;&gt;Install from Disk&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/068/original/sh_photogrammetry_with_meshroom_19.png?1724834111&quot; alt=&quot;Blender install addons&quot;&gt;
&lt;p&gt;Nella nuova finestra aperta, navigare nella directory in cui è stato salvato il plugin. Selezionare il file del plugin e fare clic su &lt;b translate=&quot;no&quot;&gt;Install from Disk button&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/069/original/sh_photogrammetry_with_meshroom_20.png?1724834139&quot; alt=&quot;Blender choose plugin file&quot;&gt;
&lt;p&gt;Il plugin è ora installato. Si consiglia di riavviare l&#39;applicazione. Dopo il riavvio, verrà visualizzata la voce &lt;b translate=&quot;no&quot;&gt;Point Cloud Visualizer&lt;/b&gt; nella modalità di visualizzazione. Il plugin richiede di specificare il percorso di un file con estensione &lt;b translate=&quot;no&quot;&gt;.ply&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/070/original/sh_photogrammetry_with_meshroom_21.png?1724834177&quot; alt=&quot;Blender new option&quot;&gt;
&lt;p&gt;Per impostazione predefinita, Meshroom non genera questo tipo di file. Per crearlo, aprire la pipeline e aggiungere il nodo &lt;b translate=&quot;no&quot;&gt;ConvertSfMFormat&lt;/b&gt;. Utilizzare il file &lt;b translate=&quot;no&quot;&gt;SfMData&lt;/b&gt; dal nodo &lt;b translate=&quot;no&quot;&gt;StructureFromMotion&lt;/b&gt; come input. Per l&#39;output, specificare il &lt;b translate=&quot;no&quot;&gt;Images Folder&lt;/b&gt; del nodo &lt;b translate=&quot;no&quot;&gt;Texturing&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/071/original/sh_photogrammetry_with_meshroom_22.png?1724834206&quot; alt=&quot;Meshroom add Convert node&quot;&gt;
&lt;p&gt;Il passo finale consiste nello specificare il formato. Fare clic su &lt;b translate=&quot;no&quot;&gt;SfM File Format&lt;/b&gt; nel nodo &lt;b translate=&quot;no&quot;&gt;ConvertSfMFormat&lt;/b&gt; e selezionare &lt;b translate=&quot;no&quot;&gt;ply&lt;/b&gt; dall&#39;elenco a discesa:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/072/original/sh_photogrammetry_with_meshroom_23.png?1724834239&quot; alt=&quot;Meshroom Convert format&quot;&gt;
&lt;p&gt;Fare clic con il tasto destro del mouse sul nodo creato e selezionare &lt;b translate=&quot;no&quot;&gt;Compute&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/073/original/sh_photogrammetry_with_meshroom_24.png?1724834267&quot; alt=&quot;Meshroom compute task&quot;&gt;
&lt;p&gt;Una Volta™ completato il processo, nella directory si troverà il file richiesto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Your_Project_Path]\MeshroomCache\ConvertSfMFormat\[Random_Symbols]\sfm.ply&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È possibile caricarlo in Blender in due modi: tramite il plugin sopra citato o tramite il processo di importazione standard &lt;b translate=&quot;no&quot;&gt;File&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Import&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Stanford PLY (.ply)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/074/original/sh_photogrammetry_with_meshroom_25.png?1724834291&quot; alt=&quot;Blender import points cloud&quot;&gt;
&lt;p&gt;Per ulteriori informazioni sull&#39;uso di questo plugin, si consiglia di consultare il &lt;a href=&quot;https://github.com/tibicen/meshroom2blender&quot;&gt;repository del progetto&lt;/a&gt; o una risorsa web specializzata.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;La fotogrammetria è un vasto campo di conoscenze, in cui abbiamo cercato di illustrare solo alcune tecniche di base per la conversione di immagini 2D in un modello 3D. È utilizzata in molti settori, dall&#39;architettura alla creazione di giochi per computer.&lt;/p&gt;
&lt;p&gt;Dopo aver acquisito la prima esperienza di ripresa di un set di dati e della sua trasformazione coerente in un modello 3D, sarete in grado di migliorare le vostre capacità e di trasferire oggetti fisici in uno spazio virtuale 3D. Ebbene, LeaderGPU vi aiuterà con la potenza di calcolo, riducendo il tempo di calcolo e liberando la vostra postazione di lavoro per altri compiti, spesso più prioritari.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/588-rendering-remoto-di-blender-con-flamenco&quot;&gt;Rendering remoto di Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/590-fooocus-ripensare-sd-e-mj&quot;&gt;Fooocus: Ripensare SD e MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/049/original/il_photogrammetry_with_meshroom.png?1724833423"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 09:38:44 +0100</pubDate>
      <guid isPermaLink="false">586</guid>
      <dc:date>2025-01-21 09:38:44 +0100</dc:date>
    </item>
    <item>
      <title>Open WebUI: Tutto in uno</title>
      <link>https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno</link>
      <description>&lt;p&gt;Open WebUI è stata originariamente sviluppata per Ollama, di cui abbiamo parlato in uno dei nostri articoli. In precedenza si chiamava Ollama WebUI, ma col tempo l&#39;attenzione si è spostata sull&#39;universalità dell&#39;applicazione e il nome è stato cambiato in Open WebUI. Questo software risolve il problema fondamentale di lavorare comodamente con modelli di reti neurali di grandi dimensioni collocati localmente o su server controllati dall&#39;utente.&lt;/p&gt;
&lt;h2&gt;Installazione&lt;/h2&gt;
&lt;p&gt;Il metodo di installazione principale e preferito è quello di distribuire un contenitore Docker. Questo permette di non pensare alla presenza di dipendenze o di altri componenti che garantiscono il corretto funzionamento del software. Tuttavia, è possibile installare Open WebUI clonando il repository del progetto da GitHub e costruendolo dal codice sorgente. In questo articolo prenderemo in considerazione entrambe le opzioni.&lt;/p&gt;
&lt;p&gt;Prima di iniziare, assicuratevi che i driver della GPU siano installati sul server. La nostra istruzione &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;Installare i driver NVIDIA® in Linux&lt;/a&gt; vi aiuterà a farlo.&lt;/p&gt;
&lt;h3&gt;Utilizzo di Docker&lt;/h3&gt;
&lt;p&gt;Se avete appena ordinato un server, vi mancheranno il motore Docker e il set di strumenti necessari per passare le GPU al container. Non consigliamo di installare Docker dal repository standard di Ubuntu, poiché potrebbe essere obsoleto e non supportare tutte le opzioni moderne. Sarebbe meglio utilizzare lo script di installazione pubblicato sul sito ufficiale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oltre a Docker, è necessario installare NVIDIA® Container Toolkit, quindi attivare il repository Nvidia:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare la cache dei pacchetti e installare NVIDIA® Container Toolkit:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Affinché la toolchain funzioni, è necessario riavviare il demone Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile eseguire il contenitore desiderato. Si noti che il comando seguente non isola i contenitori dalla rete dell&#39;host, perché in seguito si potranno attivare altre opzioni, come la generazione di immagini tramite la WebUI di Stable Diffusion. Questo comando scaricherà ed eseguirà automaticamente tutti i livelli dell&#39;immagine:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --network=host --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Utilizzo di Git&lt;/h3&gt;
&lt;h4&gt;Ubuntu 22.04&lt;/h4&gt;
&lt;p&gt;Per prima cosa, è necessario clonare il contenuto del repository:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/open-webui/open-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd open-webui/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare la configurazione di esempio (si può modificare se necessario), che imposterà le variabili d&#39;ambiente per la compilazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp -RPp .env.example .env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare il programma di installazione di NVM, che aiuterà a installare la versione richiesta di Node.js sul server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Successivamente, è necessario chiudere e riaprire la sessione SSH in modo che il comando successivo funzioni correttamente.&lt;/p&gt;
&lt;p&gt;Installare Node Package Manager:&lt;/p&gt;  
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install npm&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Installare la versione 22 di Node.js (attuale al momento della stesura di questo articolo):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm install 22&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare le dipendenze necessarie per un ulteriore assemblaggio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviamo la compilazione. Si noti che richiede più di 4 GB di RAM libera:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm run build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il frontend è pronto; ora è il momento di preparare il backend. Andare nella cartella con lo stesso nome:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ./backend&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare i pacchetti pip e ffmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-pip ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prima dell&#39;installazione, è necessario aggiungere un nuovo percorso alla variabile d&#39;ambiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungere la seguente riga alla fine del file:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PATH=&quot;/home/usergpu/.local/bin:$PATH&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiorniamo all&#39;ultima versione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m pip install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile installare le dipendenze:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt -U&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare Ollama:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tutto è pronto per lanciare l&#39;applicazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash start.sh&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Ubuntu 24.04 / 24.10&lt;/h4&gt;
&lt;p&gt;Quando installate OpenWebUI su Ubuntu 24.04/24.10, dovrete affrontare una sfida fondamentale: il sistema operativo utilizza Python 3.12 per impostazione predefinita, mentre OpenWebUI supporta solo la versione 3.11. Non è possibile effettuare un semplice downgrade di Python, perché ciò comporterebbe la rottura del sistema operativo. Non è possibile effettuare un semplice downgrade di Python, perché ciò comporterebbe la rottura del sistema operativo. Poiché il pacchetto python3.11 non è disponibile nei repository standard, dovrete creare un ambiente virtuale per utilizzare la versione corretta di Python.&lt;/p&gt;
&lt;p&gt;La soluzione migliore è usare il sistema di gestione dei pacchetti Conda. Conda funziona come pip, ma aggiunge il supporto di un ambiente virtuale simile a venv. Poiché sono necessarie solo le funzionalità di base, si utilizzerà Miniconda, una distribuzione leggera. Scaricate l&#39;ultima versione da GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -L -O &quot;https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash Miniforge3-$(uname)-$(uname -m).sh&lt;/code&gt;&lt;/pre&gt;
Creiamo un ambiente virtuale chiamato pyenv e specifichiamo la versione 3.11 di Python:&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create -n pyenv python=3.11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Attivare l&#39;ambiente creato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate pyenv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora si può procedere con i passaggi standard dell&#39;installazione di OpenWebUI per Ubuntu 22.04. L&#39;ambiente virtuale garantisce che tutti gli script di installazione vengano eseguiti senza conflitti di versione. L&#39;ambiente virtuale garantisce che tutti gli script di installazione vengano eseguiti senza problemi e senza conflitti di versione dei pacchetti.&lt;/p&gt;
&lt;h2&gt;Modelli&lt;/h2&gt;
&lt;h3&gt;Libreria Ollama&lt;/h3&gt;
&lt;p&gt;Open WebUI consente di caricare i modelli direttamente dall&#39;interfaccia web, specificando solo il nome nel formato &lt;b translate=&quot;no&quot;&gt;model:size&lt;/b&gt;. A tal fine, navigare in &lt;a href=&quot;http://192.168.88.20:8080/admin/settings&quot;&gt;http://192.168.88.20:8080/admin/settings&lt;/a&gt; e fare clic su &lt;b translate=&quot;no&quot;&gt;Connections&lt;/b&gt;. Quindi fare clic sull&#39;icona della chiave inglese di fronte alla stringa &lt;b translate=&quot;no&quot;&gt;http://localhost:11434&lt;/b&gt;. Dopo aver consultato i nomi dei modelli presenti nella &lt;a href=&quot;https://ollama.com/library&quot;&gt;libreria&lt;/a&gt;, inserire il nome e fare clic sull&#39;icona di caricamento:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/027/original/sh_open_webui_all_in_one_1.png?1722870065&quot; alt=&quot;Open WebUI manage models&quot;&gt;
&lt;p&gt;Il sistema scaricherà automaticamente il modello richiesto, che sarà immediatamente disponibile per l&#39;uso. A seconda delle dimensioni selezionate, il download può richiedere un tempo diverso. Prima di effettuare il download, assicurarsi che ci sia spazio sufficiente sul disco. Per ulteriori informazioni, consultare l&#39;articolo &lt;a href=&quot;https://www.leadergpu.it/articles/492-partizionamento-del-disco-in-linux&quot;&gt;Partizionamento del disco in Linux&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Modelli personalizzati&lt;/h3&gt;
&lt;p&gt;Se è necessario integrare un modello di rete neurale non presente nella libreria di Ollama, è possibile utilizzare la funzione sperimentale e caricare qualsiasi modello arbitrario in formato GGUF. A tale scopo, accedere a &lt;b translate=&quot;no&quot;&gt;Settings - Admin Settings - Connections&lt;/b&gt; e fare clic sull&#39;icona della chiave inglese di fronte a &lt;b translate=&quot;no&quot;&gt;http://localhost:11434&lt;/b&gt;. Fare clic su &lt;b translate=&quot;no&quot;&gt;Show&lt;/b&gt; nella sezione &lt;b translate=&quot;no&quot;&gt;Experimental&lt;/b&gt;. Per impostazione predefinita, è attivata la modalità file, che consente di caricare un file dal computer locale. Facendo clic su &lt;b translate=&quot;no&quot;&gt;File Mode&lt;/b&gt;, si passa a &lt;b translate=&quot;no&quot;&gt;URL Mode&lt;/b&gt;, che consente di specificare l&#39;URL del file del modello e il server lo scaricherà automaticamente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/028/original/sh_open_webui_all_in_one_2.png?1736411361&quot; alt=&quot;Open WebUI upload gguf model&quot;&gt;
&lt;h2&gt;RAG&lt;/h2&gt;
&lt;p&gt;Oltre a un&#39;interfaccia web comoda e funzionale, Open WebUI aiuta a espandere le capacità dei diversi modelli, garantendone l&#39;uso congiunto. Ad esempio, è facile caricare documenti per formare un database vettoriale RAG (Retrieval-augmented generation). Nel processo di generazione di una risposta all&#39;utente, LLM potrà fare affidamento non solo sui dati ottenuti direttamente come risultato dell&#39;addestramento, ma anche su quelli inseriti in un database vettoriale simile.&lt;/p&gt;
&lt;h3&gt;Documenti&lt;/h3&gt;
&lt;p&gt;Per impostazione predefinita, Open WebUI scansiona la directory /data/docs alla ricerca di file che possono essere inseriti nello spazio vettoriale del database ed esegue la trasformazione utilizzando il modello integrato &lt;a href=&quot;https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2&quot;&gt;all-MiniLM-L6-v2&lt;/a&gt;. Questo non è l&#39;unico modello adatto a questo compito, quindi è opportuno provare altre opzioni, ad esempio da questo elenco.&lt;/p&gt;
&lt;p&gt;I documenti di testo, privi di tag e altri caratteri speciali, sono i più adatti per RAG. Naturalmente, è possibile caricare i documenti così come sono, ma questo può influire notevolmente sull&#39;accuratezza delle risposte generate. Ad esempio, se si dispone di una base di conoscenza in formato Markdown, si può prima ripulirla dalla formattazione e solo successivamente caricarla in /data/docs.&lt;/p&gt;
&lt;h3&gt;Ricerca sul Web&lt;/h3&gt;
&lt;p&gt;Oltre ai documenti locali, il modello di rete neurale può essere istruito a utilizzare qualsiasi sito web come fonte di dati. Questo gli consentirà di rispondere alle domande utilizzando non solo i dati su cui è stato addestrato, ma anche quelli ospitati sui siti web specificati dall&#39;utente.&lt;/p&gt;
&lt;p&gt;In realtà, si tratta di un tipo di RAG, che riceve in ingresso pagine HTML e le trasforma in modo speciale, inserendole in un database vettoriale. La ricerca all&#39;interno di tale database sarà molto veloce; pertanto, il modello di rete neurale sarà in grado di generare rapidamente una risposta in base ai risultati ottenuti. Open WebUI supporta diversi motori di ricerca, ma può lavorare solo con uno alla Volta™, che viene specificato nelle impostazioni.&lt;/p&gt;
&lt;p&gt;Per includere i risultati della ricerca sul Web nelle risposte della rete neurale, fare clic su &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt; (simbolo più) e far scorrere l&#39;interruttore Ricerca Web:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/029/original/sh_open_webui_all_in_one_3.png?1722870140&quot; alt=&quot;Open WebUI enable Web Search&quot;&gt;
&lt;h2&gt;Generazione di immagini&lt;/h2&gt;
&lt;p&gt;Il punto forte di Open WebUI è che questo software consente di combinare più reti neurali con compiti diversi per risolvere un singolo problema. Ad esempio, Llama 3.1 è in grado di dialogare perfettamente con l&#39;utente in diverse lingue, ma le sue risposte saranno esclusivamente testuali. Non può generare immagini, quindi non c&#39;è modo di illustrare le sue risposte.&lt;/p&gt;
&lt;p&gt;Stable Diffusion, di cui abbiamo spesso scritto, è l&#39;opposto: questa rete neurale genera perfettamente immagini, ma non è in grado di lavorare con i testi. Gli sviluppatori di Open WebUI hanno cercato di combinare i punti di forza di entrambe le reti neurali in un unico dialogo e hanno implementato il seguente schema di lavoro.&lt;/p&gt;
&lt;p&gt;Quando si conduce un dialogo in Open WebUI, accanto a ogni risposta della rete neurale appare un pulsante speciale. Facendo clic su di esso, si riceve un&#39;illustrazione di questa risposta direttamente nella chat:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/030/original/sh_open_webui_all_in_one_4.png?1722870173&quot; alt=&quot;Open WebUI images in dialogue&quot;&gt;
&lt;p&gt;Questo si ottiene chiamando l&#39;API di Stable Diffusion WebUI; al momento sono disponibili una connessione con le versioni di Automatic1111 e una connessione con ComfyUI. È anche possibile generare immagini tramite la rete neurale Dall-E, che però non può essere distribuita localmente: si tratta di un servizio di generazione di immagini a pagamento con codice sorgente chiuso.&lt;/p&gt;
&lt;p&gt;Questa funzione funziona solo se, oltre a Open WebUI con Ollama, sul server è installata Stable Diffusion WebUI. Le istruzioni per l&#39;installazione sono disponibili &lt;a href=&quot;https://www.leadergpu.it/articles/565-stable-diffusion-webui&quot;&gt;qui&lt;/a&gt;. L&#39;unica cosa che vale la pena menzionare è che quando si esegue lo script ./webui.sh, è necessario specificare una chiave aggiuntiva per abilitare l&#39;API:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh --listen --api --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Un&#39;altra insidia può essere rappresentata dalla mancanza di memoria video. In questo caso, si possono usare due chiavi utili: &lt;b translate=&quot;no&quot;&gt;--medvram&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;--lowvram&lt;/b&gt;. In questo modo si eviterà l&#39;errore di memoria esaurita all&#39;avvio della generazione.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/583-come-funziona-ollama&quot;&gt;Come funziona Ollama&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/026/original/il_open_webui_all_in_one.png?1722870022"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 15:21:46 +0100</pubDate>
      <guid isPermaLink="false">584</guid>
      <dc:date>2025-01-20 15:21:46 +0100</dc:date>
    </item>
    <item>
      <title>Come funziona Ollama</title>
      <link>https://www.leadergpu.it/catalog/583-come-funziona-ollama</link>
      <description>&lt;p&gt;Ollama è uno strumento per l&#39;esecuzione di modelli di reti neurali di grandi dimensioni a livello locale. L&#39;uso di servizi pubblici è spesso percepito dalle aziende come un potenziale rischio di fuga di dati riservati e sensibili. Per questo motivo, l&#39;implementazione di LLM su un server controllato consente di gestire in modo indipendente i dati presenti su di esso, sfruttando al contempo i punti di forza di LLM.&lt;/p&gt;
&lt;p&gt;In questo modo si evita anche la spiacevole situazione di vendor lock-in, in cui qualsiasi servizio pubblico può interrompere unilateralmente la fornitura di servizi. Naturalmente, l&#39;obiettivo iniziale è quello di consentire l&#39;uso delle reti neurali generative in luoghi dove l&#39;accesso a Internet è assente o difficile (ad esempio, in aereo).&lt;/p&gt;
&lt;p&gt;L&#39;idea è quella di semplificare l&#39;avvio, il controllo e la messa a punto degli LLM. Invece di complesse istruzioni in più fasi, Ollama consente di eseguire un semplice comando e di ricevere il risultato finale dopo qualche tempo. Il risultato sarà presentato simultaneamente sotto forma di modello di rete neurale locale, con il quale è possibile comunicare utilizzando un&#39;interfaccia web e un&#39;API per una facile integrazione in altre applicazioni.&lt;/p&gt;
&lt;p&gt;Per molti sviluppatori, questo è diventato uno strumento molto utile, poiché nella maggior parte dei casi è stato possibile integrare Ollama con l&#39;IDE utilizzato e ricevere raccomandazioni o codice già pronto scritto direttamente mentre si lavora all&#39;applicazione.&lt;/p&gt;
&lt;p&gt;Inizialmente Ollama era destinato solo ai computer con sistema operativo macOS, ma in seguito è stato portato su Linux e Windows. È stata rilasciata anche una versione speciale per lavorare in ambienti containerizzati come Docker. Attualmente, funziona ugualmente bene sia sui desktop che su qualsiasi server dedicato con una GPU. Ollama supporta la possibilità di passare da un modello all&#39;altro e massimizza tutte le risorse disponibili. Naturalmente, questi modelli potrebbero non avere le stesse prestazioni su un normale desktop, ma funzionano in modo adeguato.&lt;/p&gt;
&lt;h2&gt;Come installare Ollama&lt;/h2&gt;
&lt;p&gt;Ollama può essere installato in due modi: senza usare la containerizzazione, usando uno script di installazione, e come contenitore Docker già pronto. Il primo metodo facilita la gestione dei componenti del sistema e dei modelli installati, ma è meno tollerante ai guasti. Il secondo metodo è più tollerante ai guasti, ma quando lo si utilizza è necessario tenere conto di tutti gli aspetti inerenti ai container: una gestione leggermente più complessa e un approccio diverso all&#39;archiviazione dei dati.&lt;/p&gt;
&lt;p&gt;Indipendentemente dal metodo scelto, sono necessari diversi passaggi aggiuntivi per preparare il sistema operativo.&lt;/p&gt;
&lt;h3&gt;I prerequisiti&lt;/h3&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti e i pacchetti installati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare tutti i driver GPU necessari usando la funzione di installazione automatica:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installazione tramite script&lt;/h3&gt;
&lt;p&gt;Il seguente script rileva l&#39;architettura del sistema operativo corrente e installa la versione appropriata di Ollama:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Durante il funzionamento, lo script creerà un utente separato &lt;b translate=&quot;no&quot;&gt;ollama&lt;/b&gt;, sotto il quale verrà lanciato il demone corrispondente. Per inciso, lo stesso script funziona bene in WSL2, consentendo l&#39;installazione della versione Linux di Ollama su Windows Server.&lt;/p&gt;
&lt;h3&gt;Installazione tramite Docker&lt;/h3&gt;
&lt;p&gt;Esistono vari metodi per installare Docker Engine su un server. Il modo più semplice è quello di utilizzare uno script specifico che installa la versione corrente di Docker. Questo approccio è efficace per Ubuntu Linux, dalla versione 20.04 (LTS) fino all&#39;ultima versione, Ubuntu 24.04 (LTS):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Affinché i contenitori Docker interagiscano correttamente con la GPU, è necessario installare un toolkit aggiuntivo. Poiché non è disponibile nei repository di base di Ubuntu, è necessario aggiungere un repository di terze parti utilizzando il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E installare il pacchetto &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html&quot;&gt;nvidia-container-toolkit&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non dimenticare di riavviare il demone docker tramite systemctl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È il momento di scaricare ed eseguire Ollama con l&#39;interfaccia web Open-WebUI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire il browser web e navigare su &lt;b translate=&quot;no&quot;&gt;http://[server-ip]:3000&lt;/b&gt;:&lt;/p&gt;
&lt;h2&gt;Scaricare ed eseguire i modelli&lt;/h2&gt;
&lt;h3&gt;Tramite riga di comando&lt;/h3&gt;
&lt;p&gt;È sufficiente eseguire il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama run llama3&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Tramite WebUI&lt;/h3&gt;
&lt;p&gt;Aprire &lt;b translate=&quot;no&quot;&gt;Settings &gt; Models&lt;/b&gt;, digitare il nome del modello necessario, ad esempio &lt;b translate=&quot;no&quot;&gt;llama3&lt;/b&gt; e fare clic sul pulsante con il simbolo di download:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/990/original/sh_how_does_ollama_work_1.png?1717153168&quot; alt=&quot;Models download&quot;&gt;
&lt;p&gt;Il modello verrà scaricato e installato automaticamente. Al termine, chiudere la finestra delle impostazioni e selezionare il modello scaricato. A questo punto è possibile iniziare a dialogare con esso:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/991/original/sh_how_does_ollama_work_2.png?1717153253&quot; alt=&quot;Start chatting&quot;&gt;
&lt;h2&gt;Integrazione VSCode&lt;/h2&gt;
&lt;p&gt;Se avete installato Ollama utilizzando lo script di installazione, potete lanciare qualsiasi modello supportato quasi istantaneamente. Nel prossimo esempio, verrà eseguito il modello predefinito previsto dall&#39;estensione Ollama Autocoder (&lt;b translate=&quot;no&quot;&gt;openhermes2.5-mistral:7b-q4_K_M&lt;/b&gt;):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama run openhermes2.5-mistral:7b-q4_K_M&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per impostazione predefinita, Ollama permette di lavorare attraverso un&#39;API, consentendo solo connessioni dall&#39;host locale. Pertanto, prima di installare e utilizzare l&#39;estensione per Visual Studio Code, è necessario effettuare il port forwarding. In particolare, è necessario inoltrare la porta remota &lt;b translate=&quot;no&quot;&gt;11434&lt;/b&gt; al computer locale. Un esempio di come farlo è riportato nel nostro articolo sulla &lt;a href=&quot;https://www.leadergpu.it/articles/598-easy-diffusion-ui&quot;&gt;WebUI di Easy Diffusion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Digitare &lt;b translate=&quot;no&quot;&gt;Ollama Autocoder&lt;/b&gt; in un campo di ricerca, quindi fare clic su &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/992/original/sh_how_does_ollama_work_3.png?1717153306&quot; alt=&quot;Install Ollama Autocoder&quot;&gt;
&lt;p&gt;Dopo aver installato l&#39;estensione, nella tavolozza dei comandi sarà disponibile una nuova voce intitolata &lt;b translate=&quot;no&quot;&gt;Autocomplete with Ollama&lt;/b&gt;. Iniziare la codifica e avviare questo comando.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/993/original/sh_how_does_ollama_work_4.png?1717153542&quot; alt=&quot;Autocomplete with Ollama&quot;&gt;
&lt;p&gt;L&#39;estensione si connetterà al server LeaderGPU utilizzando il port forwarding e, in pochi secondi, il codice generato verrà visualizzato sullo schermo:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/994/original/sh_how_does_ollama_work_5.png?1717153572&quot; alt=&quot;Test Python example&quot;&gt;
&lt;p&gt;È possibile assegnare questo comando a un tasto di scelta rapida. Utilizzatelo ogni Volta™ che volete integrare il vostro codice con un frammento generato. Questo è solo un esempio delle estensioni di VSCode disponibili. Il principio del port forwarding da un server remoto a un computer locale consente di configurare un singolo server con un LLM funzionante per un intero team di sviluppatori. Questa garanzia impedisce ad aziende terze o ad hacker di utilizzare il codice inviato.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/584-open-webui-tutto-in-uno&quot;&gt;Open WebUI: Tutto in uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/989/original/il_how_does_ollama_work.png?1717153121"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 15:16:02 +0100</pubDate>
      <guid isPermaLink="false">583</guid>
      <dc:date>2025-01-20 15:16:02 +0100</dc:date>
    </item>
    <item>
      <title>PrivateGPT: AI per i documenti</title>
      <link>https://www.leadergpu.it/catalog/581-privategpt-ai-per-i-documenti</link>
      <description>&lt;p&gt;I modelli linguistici di grandi dimensioni si sono evoluti notevolmente negli ultimi anni e sono diventati strumenti efficaci per molte attività. L&#39;unico problema del loro utilizzo è che la maggior parte dei prodotti basati su questi modelli utilizza servizi già pronti di aziende terze. Questo utilizzo ha il potenziale di far trapelare dati sensibili, per cui molte aziende evitano di caricare documenti interni su servizi LLM pubblici.&lt;/p&gt;
&lt;p&gt;Un progetto come PrivateGPT potrebbe essere una soluzione. Inizialmente è stato progettato per un uso completamente locale. Il suo punto di forza è che potete inviare vari documenti come input, e la rete neurale li leggerà per voi e fornirà i propri commenti in risposta alle vostre richieste. Ad esempio, è possibile &quot;dargli in pasto&quot; testi di grandi dimensioni e chiedergli di trarre delle conclusioni in base alle richieste dell&#39;utente. In questo modo è possibile risparmiare notevolmente tempo nella correzione delle bozze.&lt;/p&gt;
&lt;p&gt;Questo è particolarmente vero per i settori professionali come la medicina. Ad esempio, un medico può fare una diagnosi e chiedere alla rete neurale di confermarla sulla base della serie di documenti caricati. Ciò consente di ottenere un ulteriore parere indipendente, riducendo così il numero di errori medici. Poiché le richieste e i documenti non lasciano il server, si può essere certi che i dati ricevuti non appaiano di dominio pubblico.&lt;/p&gt;
&lt;p&gt;Oggi vi mostreremo come implementare una rete neurale sui server dedicati LeaderGPU con il sistema operativo Ubuntu 22.04 LTS in soli 20 minuti.&lt;/p&gt;
&lt;h2&gt;Preparazione del sistema&lt;/h2&gt;
&lt;p&gt;Iniziate aggiornando i pacchetti all&#39;ultima versione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A questo punto, installare altri pacchetti, librerie e il driver grafico NVIDIA®. Tutti questi elementi sono necessari per compilare il software ed eseguirlo sulla GPU:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install build-essential git gcc cmake make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev lzma liblzma-dev libbz2-dev&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installazione di CUDA® 12.4&lt;/h2&gt;
&lt;p&gt;Oltre al driver, è necessario installare il toolkit NVIDIA® CUDA®. Queste istruzioni sono state testate su CUDA® 12.4, ma tutto dovrebbe funzionare anche su CUDA® 12.2. Tuttavia, tenete presente che dovrete indicare la versione installata quando specificate il percorso dei file eseguibili.&lt;/p&gt;
&lt;p&gt;Eseguire il seguente comando in sequenza:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.14-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.14-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update &amp;&amp; sudo apt-get -y install cuda-toolkit-12-4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ulteriori informazioni sull&#39;installazione di CUDA® sono &lt;a href=&quot;https://www.leadergpu.it/articles/615-installare-il-toolkit-cuda-in-linux&quot;&gt;disponibili&lt;/a&gt; nella nostra Knowledge Base. A questo punto, riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;installare PyEnv&lt;/h2&gt;
&lt;p&gt;È il momento di installare una semplice utility di controllo della versione di Python, chiamata PyEnv. Si tratta di un fork notevolmente migliorato del progetto simile per Ruby (&lt;a href=&quot;https://github.com/rbenv/rbenv&quot;&gt;rbenv&lt;/a&gt;), configurato per funzionare con Python. Può essere installata con uno script di una riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl https://pyenv.run | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora, è necessario aggiungere alcune variabili alla fine del file di script, che viene eseguito al momento del login. Le prime tre righe sono responsabili del corretto funzionamento di PyEnv, mentre la quarta è necessaria per Poetry, che sarà installato in seguito:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PYENV_ROOT=&quot;$HOME/.pyenv&quot;
[[ -d $PYENV_ROOT/bin ]] &amp;&amp; export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;
eval &quot;$(pyenv init -)&quot;
export PATH=&quot;/home/usergpu/.local/bin:$PATH&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Applicare le impostazioni effettuate:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source .bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare la versione 3.11 di Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pyenv install 3.11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare un ambiente virtuale per Python 3.11:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pyenv local 3.11&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installazione della poesia&lt;/h2&gt;
&lt;p&gt;Il prossimo pezzo del puzzle è Poetry. Si tratta di un analogo di pip per la gestione delle dipendenze nei progetti Python. L&#39;autore di Poetry era stanco di avere costantemente a che fare con diversi metodi di configurazione, come &lt;b translate=&quot;no&quot;&gt;setup.cfg&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;requirements.txt&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;MANIFEST.ini&lt;/b&gt; e altri. Questo è stato il motore per lo sviluppo di un nuovo strumento che utilizza un file &lt;b translate=&quot;no&quot;&gt;pyproject.toml&lt;/b&gt;, che memorizza tutte le informazioni di base su un progetto, non solo un elenco di dipendenze.&lt;/p&gt;
&lt;p&gt;Installare la poesia:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://install.python-poetry.org | python3 -&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installazione di PrivateGPT&lt;/h2&gt;
&lt;p&gt;Ora che tutto è pronto, si può clonare il repository PrivateGPT:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/imartinez/privateGPT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Andare al repository scaricato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd privateGPT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire l&#39;installazione delle dipendenze utilizzando Poetry e abilitando i componenti aggiuntivi:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;ui&lt;/b&gt; - aggiunge un&#39;interfaccia web di gestione basata su &lt;a href=&quot;https://www.gradio.app/&quot;&gt;Gradio&lt;/a&gt; all&#39;applicazione backend;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;embedding-huggingface&lt;/b&gt; - abilita il supporto per l&#39;incorporazione dei modelli scaricati da &lt;a href=&quot;https://huggingface.co/&quot;&gt;HuggingFace&lt;/a&gt;;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;llms-llama-cpp&lt;/b&gt; - aggiunge il supporto per l&#39;inferenza diretta dei modelli in formato GGUF;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;vector-stores-qdrant&lt;/b&gt; - aggiunge il database vettoriale qdrant.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;poetry install --extras &quot;ui embeddings-huggingface llms-llama-cpp vector-stores-qdrant&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Impostare il token di accesso a Hugging Face. Per ulteriori informazioni, leggete &lt;a href=&quot;https://huggingface.co/docs/hub/security-tokens&quot; target=&quot;_blank&quot;&gt;questo articolo&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export HF_TOKEN=&quot;YOUR_HUGGING_FACE_ACCESS_TOKEN&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora, eseguite lo script di installazione, che scaricherà automaticamente il modello e i pesi (Meta Llama 3.1 8B Instruct di default):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;poetry run python scripts/setup&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il comando seguente ricompila &lt;b translate=&quot;no&quot;&gt;llms-llama-cpp&lt;/b&gt; separatamente per abilitare il supporto NVIDIA® CUDA®, al fine di scaricare i carichi di lavoro sulla GPU:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;CUDACXX=/usr/local/cuda-12/bin/nvcc CMAKE_ARGS=&quot;-DGGML_CUDA=on -DCMAKE_CUDA_ARCHITECTURES=native&quot; FORCE_CMAKE=1 pip install llama-cpp-python --no-cache-dir --force-reinstall --upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si ottiene un errore come &lt;b&gt;nvcc fatal : Unsupported gpu architecture &#39;compute_&#39;&lt;/b&gt; è sufficiente specificare l&#39;architettura esatta della GPU in uso. Ad esempio: &lt;b&gt;DCMAKE_CUDA_ARCHITECTURES=86&lt;/b&gt; per NVIDIA® RTX™ 3090.&lt;/p&gt;
&lt;p&gt;L&#39;ultimo passo prima di iniziare è installare il supporto per le chiamate asincrone (async/await):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install asyncio&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Eseguire PrivateGPT&lt;/h2&gt;
&lt;p&gt;Esegue PrivateGPT con un solo comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;make run&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprite il vostro browser web e andate alla pagina &lt;b translate=&quot;no&quot;&gt;http://[LeaderGPU_server_IP_address]:8001&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/984/original/sh_privategpt_ai_for_documents_1.png?1714731952&quot; alt=&quot;PrivateGPT WebUI&quot;&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/571-starcoder-il-vostro-assistente-di-codifica-locale&quot;&gt;StarCoder: il vostro assistente di codifica locale&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/590-fooocus-ripensare-sd-e-mj&quot;&gt;Fooocus: Ripensare SD e MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/983/original/il_privategpt_ai_for_documents.png?1714731899"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 12:01:00 +0100</pubDate>
      <guid isPermaLink="false">581</guid>
      <dc:date>2025-01-20 12:01:00 +0100</dc:date>
    </item>
    <item>
      <title> Qwen 2 vs Llama 3</title>
      <link>https://www.leadergpu.it/catalog/579-qwen-2-vs-llama-3</link>
      <description>&lt;p&gt;I grandi modelli linguistici (LLM) hanno avuto un impatto significativo sulla nostra vita. Nonostante la comprensione della loro struttura interna, questi modelli rimangono un punto focale per gli scienziati che spesso li paragonano a una &quot;scatola nera&quot;. Il risultato finale dipende non solo dalla progettazione del LLM, ma anche dalla sua formazione e dai dati utilizzati per l&#39;addestramento.&lt;/p&gt;
&lt;p&gt;Mentre gli scienziati trovano opportunità di ricerca, gli utenti finali sono interessati principalmente a due cose: velocità e qualità. Questi criteri giocano un ruolo fondamentale nel processo di selezione. Per confrontare accuratamente due LLM, è necessario standardizzare molti fattori apparentemente non correlati.&lt;/p&gt;
&lt;p&gt;L&#39;apparecchiatura utilizzata per le interferenze e l&#39;ambiente software, compresi il sistema operativo, le versioni dei driver e i pacchetti software, hanno l&#39;impatto più significativo. È essenziale selezionare una versione di LLM che funzioni su diverse apparecchiature e scegliere una metrica di velocità facilmente comprensibile.&lt;/p&gt;
&lt;p&gt;Abbiamo scelto come parametro &quot;tokens per secondo&quot; (tokens/s). È importante notare che un token ≠ una parola. L&#39;LLM scompone le parole in componenti più semplici, tipiche di una lingua specifica, denominate token.&lt;/p&gt;
&lt;p&gt;La prevedibilità statistica del carattere successivo varia da una lingua all&#39;altra, quindi la tokenizzazione sarà diversa. Ad esempio, in inglese, ogni 75 parole si ricavano circa 100 token. Nelle lingue che utilizzano l&#39;alfabeto cirillico, il numero di token per parola può essere maggiore. Quindi, 75 parole in una lingua cirillica, come il russo, potrebbero equivalere a 120-150 token.&lt;/p&gt;
&lt;p&gt;È possibile verificarlo utilizzando lo strumento &lt;a href=&quot;https://platform.openai.com/tokenizer&quot;&gt;Tokenizer&lt;/a&gt; di OpenAI. Questo strumento mostra in quanti tokens viene suddiviso un frammento di testo, rendendo i &quot;tokens per secondo&quot; un buon indicatore della velocità e delle prestazioni di elaborazione del linguaggio naturale di un LLM.&lt;/p&gt;
&lt;p&gt;Ogni test è stato condotto sul sistema operativo Ubuntu 22.04 LTS con i driver NVIDIA® versione 535.183.01 e il toolkit NVIDIA® CUDA® 12.5 installato. Le domande sono state formulate per valutare la qualità e la velocità dell&#39;LLM. La velocità di elaborazione di ogni risposta è stata registrata e contribuirà al valore medio per ogni configurazione testata.&lt;/p&gt;
&lt;p&gt;Abbiamo iniziato a testare diverse GPU, dai modelli più recenti a quelli più vecchi. Una condizione fondamentale per il test è stata quella di misurare le prestazioni di una sola GPU, anche se nella configurazione del server erano presenti più GPU. Questo perché le prestazioni di una configurazione con più GPU dipendono da fattori aggiuntivi come la presenza di un&#39;interconnessione ad alta velocità tra di esse (NVLink).&lt;/p&gt;
&lt;p&gt;Oltre alla velocità, abbiamo cercato di valutare anche la qualità delle risposte su una scala a 5 punti, dove 5 rappresenta il risultato migliore. Queste informazioni sono fornite solo per una comprensione generale. Ogni Volta™ porremo le stesse domande alla rete neurale e cercheremo di capire quanto accuratamente ognuna di esse comprenda ciò che l&#39;utente vuole da essa.&lt;/p&gt;
&lt;h2&gt;Qwen 2&lt;/h2&gt;
&lt;p&gt;Recentemente, un team di sviluppatori di Alibaba Group ha presentato la seconda versione della rete neurale generativa Qwen. Comprende 27 lingue ed è ben ottimizzata per esse. Qwen 2 è disponibile in diverse dimensioni per facilitarne l&#39;implementazione su qualsiasi dispositivo (da sistemi embedded ad alta limitazione di risorse a server dedicati con GPU):&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;0.5B: adatto per IoT e sistemi embedded;&lt;/li&gt;
    &lt;li&gt;1.5B: una versione estesa per i sistemi embedded, utilizzata quando le capacità di 0.5B non sono sufficienti;&lt;/li&gt;
    &lt;li&gt;7B: modello di medie dimensioni, adatto all&#39;elaborazione del linguaggio naturale;&lt;/li&gt;
    &lt;li&gt;57B: modello di grandi dimensioni ad alte prestazioni, adatto ad applicazioni complesse;&lt;/li&gt;
    &lt;li&gt;72B: il modello Qwen 2 definitivo, progettato per risolvere i problemi più complessi ed elaborare grandi volumi di dati.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le versioni 0.5B e 1.5B sono state addestrate su set di dati con una lunghezza di contesto di 32K. Le versioni 7B e 72B erano già state addestrate su un contesto di 128K. Il modello di compromesso 57B è stato addestrato su set di dati con un contesto di 64K. I creatori hanno definito Qwen 2 come un analogo di Llama 3 in grado di risolvere gli stessi problemi, ma molto più velocemente.&lt;/p&gt;
&lt;h2&gt;Llama 3&lt;/h2&gt;
&lt;p&gt;La terza versione della rete neurale generativa della famiglia MetaAI Llama è stata introdotta nell&#39;aprile 2024. A differenza di Qwen 2, è stata rilasciata in due sole versioni: 8B e 70B. Questi modelli sono stati posizionati come uno strumento universale per risolvere molti problemi in vari casi. Continuava la tendenza al multilinguismo e alla multimodalità, diventando al contempo più veloce delle versioni precedenti e supportando una maggiore lunghezza del contesto.&lt;/p&gt;
&lt;p&gt;I creatori di Llama 3 hanno cercato di perfezionare i modelli per ridurre la percentuale di allucinazioni statistiche e aumentare la varietà delle risposte. Llama 3 è quindi in grado di dare consigli pratici, aiutare a scrivere una lettera commerciale o speculare su un argomento specificato dall&#39;utente. I dataset su cui sono stati addestrati i modelli di Llama 3 avevano una lunghezza del contesto di 128K e più del 5% includeva dati in 30 lingue. Tuttavia, come si legge nel comunicato stampa, le prestazioni di generazione in inglese saranno significativamente superiori a quelle in qualsiasi altra lingua.&lt;/p&gt;
&lt;h2&gt;Confronto&lt;/h2&gt;
&lt;h3&gt;NVIDIA® RTX™ A6000&lt;/h3&gt;
&lt;p&gt;Iniziamo le nostre misurazioni di velocità con la GPU NVIDIA® RTX™ A6000, basata sull&#39;architettura Ampere (da non confondere con la NVIDIA® RTX™ A6000 Ada). Questa scheda ha caratteristiche molto modeste, ma allo stesso tempo dispone di 48 GB di VRAM, che le permettono di operare con modelli di reti neurali piuttosto grandi. Purtroppo, la bassa velocità di clock e la larghezza di banda sono le ragioni della bassa velocità di inferenza degli LLM testuali.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/995/original/il_qwen_2_vs_llama_3_1.png?1720184216&quot; alt=&quot;Nvidia A6000 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Subito dopo il lancio, la rete neurale Qwen 2 ha iniziato a superare le prestazioni di Llama 3. Rispondendo alle stesse domande, la differenza media di velocità è stata del 24% a favore di Qwen 2. La velocità di generazione delle risposte è stata dell&#39;ordine di 11-16 token al secondo. Si tratta di una velocità 2-3 volte superiore rispetto al tentativo di generazione anche su una CPU potente, ma nella nostra valutazione questo è il risultato più modesto.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ 3090&lt;/h3&gt;
&lt;p&gt;Anche la prossima GPU è costruita sull&#39;architettura Ampere, ha una memoria video 2 volte inferiore, ma allo stesso tempo opera a una frequenza superiore (19500 MHz contro 16000 Mhz). Anche la larghezza di banda della memoria video è maggiore (936,2 GB/s contro 768 GB/s). Entrambi questi fattori aumentano notevolmente le prestazioni della RTX™ 3090, anche tenendo conto del fatto che ha 256 core CUDA® in meno.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/996/original/il_qwen_2_vs_llama_3_2.png?1720184259&quot; alt=&quot;Nvidia RTX 3090 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Qui si vede chiaramente che Qwen 2 è molto più veloce (fino al 23%) di Llama 3 nell&#39;esecuzione degli stessi compiti. Per quanto riguarda la qualità della generazione, il supporto multilingue di Qwen 3 è davvero degno di lode e il modello risponde sempre nella stessa lingua in cui è stata posta la domanda. Con Llama 3, a questo proposito, capita spesso che il modello capisca la domanda stessa, ma preferisca formulare le risposte in inglese.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ 4090&lt;/h3&gt;
&lt;p&gt;Ora la cosa più interessante: vediamo come se la cava la NVIDIA® RTX™ 4090, costruita sull&#39;architettura Ada Lovelace, dal nome della matematica inglese Augusta Ada King, contessa di Lovelace. Ada Lovelace è diventata famosa per essere stata la prima programmatrice nella storia dell&#39;umanità, e all&#39;epoca in cui scrisse il suo primo programma non esisteva un computer assemblato in grado di eseguirlo. Tuttavia, è stato riconosciuto che l&#39;algoritmo descritto da Ada per il calcolo dei numeri di Bernoulli è stato il primo programma al mondo scritto per essere eseguito su un computer.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/997/original/il_qwen_2_vs_llama_3_3.png?1720184288&quot; alt=&quot;Nvidia RTX 4090 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Il grafico mostra chiaramente che la RTX™ 4090 ha affrontato l&#39;inferenza di entrambi i modelli con una velocità quasi doppia. È interessante notare che in una delle iterazioni Llama 3 è riuscito a superare Qwen 2 dell&#39;1,2%. Tuttavia, tenendo conto delle altre iterazioni, Qwen 2 ha mantenuto la sua leadership, rimanendo più veloce di Llama 3 del 7%. In tutte le iterazioni, la qualità delle risposte di entrambe le reti neurali è stata elevata, con un numero minimo di allucinazioni. L&#39;unico difetto è che in rari casi uno o due caratteri cinesi sono stati mescolati nelle risposte, il che non ha influito in alcun modo sul significato complessivo.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ A40&lt;/h3&gt;
&lt;p&gt;La successiva scheda NVIDIA® RTX™ A40, su cui abbiamo eseguito test simili, è nuovamente costruita sull&#39;architettura Ampere e dispone di 48 GB di memoria video sulla scheda madre. Rispetto alla RTX™ 3090, questa memoria è leggermente più veloce (20000 MHz contro 19500 MHz), ma ha una larghezza di banda inferiore (695,8 GB/s contro 936,2 GB/s). La situazione è compensata dal maggior numero di core CUDA® (10752 contro 10496), che nel complesso permette alla RTX™ A40 di essere leggermente più veloce della RTX™ 3090.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/998/original/il_qwen_2_vs_llama_3_4.png?1720184316&quot; alt=&quot;Nvidia A40 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Per quanto riguarda il confronto della velocità dei modelli, anche in questo caso Qwen 2 è superiore a Llama 3 in tutte le iterazioni. Quando viene eseguito su RTX™ A40, la differenza di velocità è di circa il 15% a parità di risposte. In alcuni compiti, Qwen 2 ha fornito informazioni un po&#39; più importanti, mentre Llama 3 è stato il più specifico possibile e ha fornito esempi. Ciononostante, è necessario ricontrollare tutto, poiché a volte entrambi i modelli iniziano a produrre risposte controverse.&lt;/p&gt;
&lt;h3&gt;NVIDIA® L20&lt;/h3&gt;
&lt;p&gt;L&#39;ultimo partecipante al nostro test è stato l&#39;NVIDIA® L20. Questa GPU è costruita, come la RTX™ 4090, sull&#39;architettura Ada Lovelace. Si tratta di un modello abbastanza nuovo, presentato nell&#39;autunno del 2023. A bordo ha 48 GB di memoria video e 11776 CUDA® core. La larghezza di banda della memoria è inferiore a quella della RTX™ 4090 (864 GB/s contro 936,2 GB/s), così come la frequenza effettiva. Pertanto, i punteggi di inferenza NVIDIA® L20 di entrambi i modelli saranno più vicini al 3090 che al 4090.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/999/original/il_qwen_2_vs_llama_3_5.png?1720184358&quot; alt=&quot;Nvidia L20 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Il test finale non ha riservato sorprese. Qwen 2 è risultato più veloce di Llama 3 in tutte le iterazioni.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Riuniamo tutti i risultati raccolti in un unico grafico. Qwen 2 è risultato più veloce di Llama 3 dal 7% al 24% a seconda della GPU utilizzata. In base a ciò, possiamo concludere chiaramente che se si desidera ottenere inferenze ad alta velocità da modelli come Qwen 2 o Llama 3 su configurazioni a singola GPU, il leader indiscusso sarà la RTX™ 3090. Una possibile alternativa potrebbe essere l&#39;A40 o l&#39;L20. Ma non vale la pena di eseguire l&#39;inferenza di questi modelli su schede Ampere di generazione A6000.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/000/original/il_qwen_2_vs_llama_3_6.png?1720184380&quot; alt=&quot;Conclusion chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Non abbiamo volutamente menzionato nei test le schede con una quantità inferiore di memoria video, ad esempio la NVIDIA® RTX™ 2080Ti, poiché non è possibile inserirvi i modelli 7B o 8B di cui sopra senza quantizzazione. Il modello Qwen 2 da 1,5B, purtroppo, non ha risposte di alta qualità e non può sostituire completamente il modello 7B.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/576-il-proprio-vicuna-in-linux&quot;&gt;Il proprio Vicuna in Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/107/original/il_qwen_2_vs_llama_3.png?1737368521"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 11:27:11 +0100</pubDate>
      <guid isPermaLink="false">579</guid>
      <dc:date>2025-01-20 11:27:11 +0100</dc:date>
    </item>
    <item>
      <title>Il proprio Qwen utilizzando HF</title>
      <link>https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf</link>
      <description>&lt;p&gt;I grandi modelli di reti neurali, con le loro straordinarie capacità, sono saldamente radicati nelle nostre vite. Riconoscendo questa opportunità di sviluppo futuro, le grandi aziende hanno iniziato a sviluppare le proprie versioni di questi modelli. Il gigante cinese Alibaba non è rimasto a guardare. Ha creato il proprio modello, QWen (Tongyi Qianwen), che è diventato la base per molti altri modelli di reti neurali.&lt;/p&gt;
&lt;h2&gt;Prerequisiti&lt;/h2&gt;
&lt;h3&gt;Aggiornare la cache e i pacchetti&lt;/h3&gt;
&lt;p&gt;Aggiorniamo la cache dei pacchetti e aggiorniamo il sistema operativo prima di iniziare a configurare Qwen. Inoltre, dobbiamo aggiungere Python Installer Packages (PIP), se non è già presente nel sistema. Si noti che per questa guida utilizziamo Ubuntu 22.04 LTS come sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade &amp;&amp; sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare i driver NVIDIA®&lt;/h3&gt;
&lt;p&gt;È possibile utilizzare l&#39;utilità automatica inclusa di default nelle distribuzioni Ubuntu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In alternativa, è possibile installare manualmente i driver NVIDIA® utilizzando la nostra &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;guida passo-passo&lt;/a&gt;. Non dimenticate di riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Generazione di testo dell&#39;interfaccia web&lt;/h2&gt;
&lt;h3&gt;Clonare il repository&lt;/h3&gt;
&lt;p&gt;Aprire la cartella di lavoro sull&#39;SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonare il repository del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare i requisiti&lt;/h3&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controllare e installare tutti i componenti mancanti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Aggiungere la chiave SSH a HF&lt;/h2&gt;
&lt;p&gt;Prima di iniziare, è necessario impostare il port forwarding (porta remota 7860 a 127.0.0.1:7860) nel proprio client SSH. Per ulteriori informazioni, consultare il seguente articolo: &lt;a href=&quot;https://www.leadergpu.it/articles/488-connettiti-a-un-server-linux&quot;&gt;Connettersi al server Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti e i pacchetti installati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generare e aggiungere una chiave SSH da utilizzare in Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando la coppia di chiavi è stata generata, è possibile visualizzare la chiave pubblica nell&#39;emulatore di terminale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare tutte le informazioni che iniziano con ssh-rsa e terminano con usergpu@gpuserver come mostrato nella seguente schermata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Aprire un browser web, digitare &lt;a href=&quot;https://huggingface.co/&quot;&gt;https://huggingface.co/&lt;/a&gt; nella barra degli indirizzi e premere &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Accedere al proprio account HF e aprire &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;Impostazioni profilo&lt;/a&gt;. Scegliere quindi &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Compilare &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; e incollare la &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiata dal terminale. Salvare la chiave premendo &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ora il vostro account HF è collegato alla chiave SSH pubblica. La seconda parte (chiave privata) è memorizzata sul server. Il passo successivo consiste nell&#39;installare un&#39;estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali. Aprire la propria home directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare ed eseguire lo script di shell. Questo script installa un nuovo repository di terze parti con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile installarlo utilizzando il gestore di pacchetti standard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configuriamo git per usare il nostro nickname HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E collegato all&#39;account di posta elettronica HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Scarica il modello&lt;/h2&gt;
&lt;p&gt;Il passo successivo è scaricare il modello utilizzando la tecnica di clonazione del repository comunemente usata dagli sviluppatori di software. L&#39;unica differenza è che Git-LFS, precedentemente installato, elaborerà automaticamente i file puntatori contrassegnati e scaricherà tutto il contenuto. Aprire la directory necessaria (/mnt/fastdisk nel nostro esempio):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo comando potrebbe richiedere un po&#39; di tempo per essere completato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:Qwen/Qwen1.5-32B-Chat-GGUF&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Eseguire il modello&lt;/h2&gt;
&lt;p&gt;Eseguire uno script che avvii il server web e specifichi /mnt/fastdisk come directory di lavoro con i modelli. Questo script potrebbe scaricare alcuni componenti aggiuntivi al primo avvio.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire il browser Web e selezionare &lt;b translate=&quot;no&quot;&gt;llama.cpp&lt;/b&gt; dall&#39;elenco a discesa &lt;b translate=&quot;no&quot;&gt;Model loader&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/986/original/sh_your_own_qwen_using_hf_1.png?1716463522&quot; alt=&quot;llama.cpp settings&quot;&gt;
&lt;p&gt;Assicurarsi di impostare il parametro &lt;b translate=&quot;no&quot;&gt;n-gpu-layers&lt;/b&gt;. È lui il responsabile della percentuale di calcoli che verrà scaricata sulla GPU. Se si lascia il numero a 0, tutti i calcoli verranno eseguiti dalla CPU, il che è piuttosto lento. Una Volta™ impostati tutti i parametri, fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt;. Successivamente, passare alla scheda &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt; e selezionare &lt;b translate=&quot;no&quot;&gt;Instruct mode&lt;/b&gt;. A questo punto, è possibile inserire qualsiasi richiesta e ricevere una risposta:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/987/original/sh_your_own_qwen_using_hf_2.png?1716463543&quot; alt=&quot;Qwen chat example&quot;&gt;
&lt;p&gt;L&#39;elaborazione verrà eseguita per impostazione predefinita su tutte le GPU disponibili, tenendo conto dei parametri precedentemente specificati:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/988/original/sh_your_own_qwen_using_hf_3.png?1716463565&quot; alt=&quot;Qwen task GPU loading&quot;&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/576-il-proprio-vicuna-in-linux&quot;&gt;Il proprio Vicuna in Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/985/original/il_your_own_qwen_using_hf.png?1716463472"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:43:46 +0100</pubDate>
      <guid isPermaLink="false">578</guid>
      <dc:date>2025-01-20 09:43:46 +0100</dc:date>
    </item>
    <item>
      <title>Il proprio Vicuna in Linux</title>
      <link>https://www.leadergpu.it/catalog/576-il-proprio-vicuna-in-linux</link>
      <description>&lt;p&gt;Questo articolo vi guiderà attraverso il processo di implementazione di un&#39;alternativa LLaMA di base su un server LeaderGPU. A questo scopo utilizzeremo il progetto &lt;a href=&quot;https://github.com/lm-sys/FastChat&quot;&gt;FastChat&lt;/a&gt; e il modello &lt;a href=&quot;https://lmsys.org/blog/2023-03-30-vicuna/&quot;&gt;Vicuna&lt;/a&gt;, disponibile gratuitamente. &lt;/p&gt;
&lt;p&gt;Il modello che utilizzeremo è basato sull&#39;architettura LLaMA di Meta, ma è stato ottimizzato per una distribuzione efficiente su hardware consumer. Questa configurazione offre un buon equilibrio tra prestazioni e requisiti di risorse, rendendola adatta sia agli ambienti di test che a quelli di produzione.&lt;/p&gt;
&lt;h2&gt;Preinstallazione&lt;/h2&gt;
&lt;p&gt;Prepariamo l&#39;installazione di FastChat aggiornando il repository della cache dei pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installare automaticamente i driver NVIDIA® utilizzando il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È anche possibile installare questi driver manualmente con la &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;nostra guida passo-passo&lt;/a&gt;. Quindi, riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il passo successivo è l&#39;installazione di PIP (Package Installer for Python):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Installare FastChat&lt;/h2&gt;
&lt;h3&gt;Da PyPi&lt;/h3&gt;
&lt;p&gt;Ci sono due modi possibili per installare FastChat. Si può installare direttamente da PyPi:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install &quot;fschat[model_worker,webui]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Da GitHub&lt;/h3&gt;
&lt;p&gt;In alternativa, è possibile clonare il repository FastChat da GitHub e installarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/lm-sys/FastChat.git&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd FastChat&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non dimenticate di aggiornare PIP prima di procedere:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install -e &quot;.[model_worker,webui]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Eseguire FastChat&lt;/h2&gt;
&lt;h3&gt;Primo avvio&lt;/h3&gt;
&lt;p&gt;Per garantire il successo dell&#39;avvio iniziale, si consiglia di richiamare manualmente FastChat direttamente dalla riga di comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questa azione recupera e scarica automaticamente il modello designato di vostra scelta, che deve essere specificato utilizzando il parametro --model-path. Il modello 7b rappresenta un modello con 7 miliardi di parametri. È il modello più leggero, adatto alle GPU con 16 GB di memoria video. I collegamenti ai modelli con un numero maggiore di parametri si trovano nel file &lt;a href=&quot;https://github.com/lm-sys/FastChat/blob/main/README.md&quot;&gt;Readme&lt;/a&gt; del progetto.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/965/original/sh_your_own_vicuna_in_linux_1.png?1714043790&quot; alt=&quot;Sample Vicuna conversation&quot;&gt;
&lt;p&gt;A questo punto si può scegliere di avviare una conversazione con il chatbot direttamente all&#39;interno dell&#39;interfaccia a riga di comando oppure si può impostare un&#39;interfaccia Web. Essa contiene tre componenti:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Controllore&lt;/li&gt;
    &lt;li&gt;Lavoratori&lt;/li&gt;
    &lt;li&gt;Server web Gradio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Impostare i servizi&lt;/h3&gt;
&lt;p&gt;Trasformiamo ogni componente in un servizio systemd separato. Creare 3 file separati con i seguenti contenuti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-controller.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna controller service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.controller
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna worker service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.5
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna web server
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.gradio_web_server
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Systemd di solito aggiorna il database dei demoni durante il processo di avvio del sistema. Tuttavia, è possibile farlo manualmente utilizzando il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aggiungiamo ora tre nuovi servizi all&#39;avvio e lanciamoli immediatamente usando l&#39;opzione &lt;b translate=&quot;no&quot;&gt;--now&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable vicuna-controller.service --now &amp;&amp; sudo systemctl enable vicuna-worker.service --now &amp;&amp; sudo systemctl enable vicuna-webserver.service --now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tuttavia, se si tenta di aprire un&#39;interfaccia Web all&#39;indirizzo http://[IP_ADDRESS]:7860, si troverà un&#39;interfaccia completamente inutilizzabile senza modelli disponibili. Per risolvere questo problema, interrompere il servizio di interfaccia Web:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl stop vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire manualmente il servizio Web:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m fastchat.serve.gradio_web_server&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Aggiungere un&#39;autenticazione&lt;/h3&gt;
&lt;p&gt;Questa azione richiama un altro script, che registrerà il modello precedentemente scaricato in un database interno di Gradio. Attendere qualche secondo e interrompere il processo utilizzando la scorciatoia &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;. Ci occuperemo anche della sicurezza e attiveremo un semplice meccanismo di autenticazione per l&#39;accesso all&#39;interfaccia web. Aprite il seguente file se avete installato FastChat da PyPI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /home/usergpu/.local/lib/python3.10/site-packages/fastchat/serve/gradio_web_server.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;oppure&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /home/usergpu/FastChat/fastchat/serve/gradio_web_server.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scorrere fino alla fine. Trovare questa riga:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;auth=auth,&lt;/pre&gt;
&lt;p&gt;Modificatela impostando un nome utente o una password a piacere:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;auth=(“username”,”password”),&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salvare il file e uscire, utilizzando la scorciatoia &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;. Infine, avviare l&#39;interfaccia web:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprite &lt;b translate=&quot;no&quot;&gt;http://[IP_ADDRESS]:7860&lt;/b&gt; nel vostro browser e godetevi FastChat con Vicuna:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/966/original/sh_your_own_vicuna_in_linux_2.png?1714043825&quot; alt=&quot;Sample Vicuna poem&quot;&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/964/original/il_your_own_vicuna_in_linux.jpg?1714043750"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:25:01 +0100</pubDate>
      <guid isPermaLink="false">576</guid>
      <dc:date>2025-01-20 09:25:01 +0100</dc:date>
    </item>
    <item>
      <title>Il vostro LLaMa 2 in Linux</title>
      <link>https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux</link>
      <description>&lt;h2&gt;Passo 1. Preparare il sistema operativo&lt;/h2&gt;
&lt;h3&gt;Aggiornare la cache e i pacchetti&lt;/h3&gt;
&lt;p&gt;Aggiorniamo la cache dei pacchetti e aggiorniamo il sistema operativo prima di iniziare a configurare LLaMa 2. Si noti che per questa guida utilizziamo Ubuntu 22.04 LTS come sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inoltre, dobbiamo aggiungere Python Installer Packages (PIP), se non è già presente nel sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare i driver NVIDIA®&lt;/h3&gt;
&lt;p&gt;È possibile utilizzare l&#39;utilità automatica inclusa di default nelle distribuzioni Ubuntu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In alternativa, è possibile installare manualmente i driver NVIDIA® utilizzando &lt;a href=&quot;https://www.leadergpu.it/articles/499-installa-i-driver-nvidia-in-linux&quot;&gt;la nostra guida passo-passo&lt;/a&gt;. Non dimenticate di riavviare il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 2. Ottenere i modelli da MetaAI&lt;/h2&gt;
&lt;h3&gt;Richiesta ufficiale&lt;/h3&gt;
&lt;p&gt;Aprite il seguente indirizzo nel vostro browser: &lt;a href=&quot;https://ai.meta.com/resources/models-and-libraries/llama-downloads/&quot;&gt;https://ai.meta.com/resources/models-and-libraries/llama-downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Compilare tutti i campi necessari, leggere il contratto d&#39;uso e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Agree and Continue&lt;/b&gt;. Dopo alcuni minuti (ore, giorni), riceverete uno speciale URL di download, che vi autorizza a scaricare i modelli per un periodo di 24 ore.&lt;/p&gt;
&lt;h3&gt;Clonare il repository&lt;/h3&gt;
&lt;p&gt;Prima di effettuare il download, verificare lo spazio di archiviazione disponibile:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Filesystem      Size  Used Avail Use% Mounted on
tmpfs            38G  3.3M   38G   1% /run
/dev/sda2        99G   24G   70G  26% /
tmpfs           189G     0  189G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1    1.8T   26G  1.7T   2% /mnt/fastdisk
tmpfs            38G  8.0K   38G   1% /run/user/1000&lt;/pre&gt;
&lt;p&gt;Se i dischi locali sono smontati, seguire le istruzioni riportate in &lt;a href=&quot;https://www.leadergpu.it/articles/492-partizionamento-del-disco-in-linux&quot;&gt;Partizionamento dei dischi in Linux&lt;/a&gt;. Questo è importante perché i modelli scaricati possono essere molto grandi e occorre pianificare in anticipo la loro posizione di archiviazione. In questo esempio, abbiamo un SSD locale montato nella directory /mnt/fastdisk. Apriamola:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Creare una copia del repository originale di LaMa:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/facebookresearch/llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se si verifica un errore di autorizzazione, è sufficiente concedere i permessi all&#39;utenteergpu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown -R usergpu:usergpu /mnt/fastdisk/&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Scaricamento tramite script&lt;/h3&gt;
&lt;p&gt;Aprire la directory scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./download.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Passare l&#39;URL fornito da MetaAI e selezionare tutti i modelli necessari. Si consiglia di scaricare tutti i modelli disponibili per evitare di richiedere nuovamente l&#39;autorizzazione. Tuttavia, se avete bisogno di un modello specifico, scaricate solo quello.&lt;/p&gt;
&lt;h3&gt;Test rapido tramite l&#39;applicazione di esempio&lt;/h3&gt;
&lt;p&gt;Per iniziare, possiamo verificare la presenza di eventuali componenti mancanti. Se mancano librerie o applicazioni, il gestore dei pacchetti le installerà automaticamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -e .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il passo successivo consiste nell&#39;aggiungere nuovi file binari al PATH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PATH=/home/usergpu/.local/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire l&#39;esempio dimostrativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;torchrun --nproc_per_node 1 /mnt/fastdisk/llama/example_chat_completion.py --ckpt_dir /mnt/fastdisk/llama-2-7b-chat/ --tokenizer_path /mnt/fastdisk/llama/tokenizer.model --max_seq_len 512 --max_batch_size 6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;applicazione creerà un processo di calcolo sulla prima GPU e simulerà una semplice finestra di dialogo con richieste tipiche, generando le risposte con LaMa 2.&lt;/p&gt;
&lt;h2&gt;Passo 3. Ottenere llama.cpp&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ggerganov/llama.cpp/tree/master&quot;&gt;LLaMa C++&lt;/a&gt; è un progetto creato dal fisico e sviluppatore di software bulgaro Georgi Gerganov. Contiene molte utili utility che facilitano il lavoro con questo modello di rete neurale. Tutte le parti di llama.cpp sono software open source e sono distribuite sotto la &lt;a href=&quot;https://github.com/ggerganov/llama.cpp/blob/master/LICENSE&quot;&gt;licenza MIT&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Clonare il repository&lt;/h3&gt;
&lt;p&gt;Aprire la directory di lavoro sull&#39;SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonare il repository del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/ggerganov/llama.cpp.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Compilare le applicazioni&lt;/h3&gt;
&lt;p&gt;Aprire la cartella clonata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama.cpp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Avviare il processo di compilazione con il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;make&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 4. Ottenere text-generation-webui&lt;/h2&gt;
&lt;h3&gt;Clonare il repository&lt;/h3&gt;
&lt;p&gt;Aprire la directory di lavoro sull&#39;SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonare il repository del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Installare i requisiti&lt;/h3&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controllare e installare tutti i componenti mancanti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passo 5. Conversione di PTH in GGUF&lt;/h2&gt;
&lt;h3&gt;Formati comuni&lt;/h3&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;PTH (Python TorcH)&lt;/b&gt; - Un formato consolidato. Essenzialmente, è un archivio ZIP standard con un dizionario di stato PyTorch serializzato. Tuttavia, questo formato ha alternative più veloci, come GGML e GGUF.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;GGML (Georgi Gerganov’s Machine Learning)&lt;/b&gt; - È un formato di file creato da Georgi Gerganov, l&#39;autore di llama.cpp. Si basa su un&#39;omonima libreria, scritta in C++, che ha aumentato in modo significativo le prestazioni dei modelli linguistici di grandi dimensioni. Ora è stato sostituito dal moderno formato GGUF.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;GGUF (Georgi Gerganov’s Unified Format)&lt;/b&gt; - Un formato di file ampiamente utilizzato per gli LLM, supportato da diverse applicazioni. Offre maggiore flessibilità, scalabilità e compatibilità per la maggior parte dei casi d&#39;uso.&lt;/p&gt;
&lt;h3&gt;script llama.cpp convert.py&lt;/h3&gt;
&lt;p&gt;Modifica i parametri del modello prima della conversione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /mnt/fastdisk/llama-2-7b-chat/params.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Correggere &lt;b translate=&quot;no&quot;&gt;&quot;vocab_size&quot;: -1&lt;/b&gt; in &lt;b translate=&quot;no&quot;&gt;&quot;vocab_size&quot;: 32000&lt;/b&gt;. Salvare il file e uscire. Aprire quindi la cartella llama.cpp:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk/llama.cpp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script che convertirà il modello in formato GGUF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 convert.py /mnt/fastdisk/llama-2-7b-chat/ --vocab-dir /mnt/fastdisk/llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se tutti i passaggi precedenti sono corretti, si riceverà un messaggio come questo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Wrote /mnt/fastdisk/llama-2-7b-chat/ggml-model-f16.gguf&lt;/pre&gt;
&lt;h2&gt;Passo 6. WebUI&lt;/h2&gt;
&lt;h3&gt;Come avviare la WebUI&lt;/h3&gt;
&lt;p&gt;Aprire la directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk/text-generation-webui/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script di avvio con alcuni parametri utili:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--model-dir&lt;/b&gt; indica il percorso corretto dei modelli&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--share&lt;/b&gt; crea un collegamento pubblico temporaneo (se non si vuole inoltrare una porta tramite SSH)&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gradio-auth&lt;/b&gt; aggiunge l&#39;autorizzazione con una login e una password (sostituire user:password con la propria)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk/llama-2-7b-chat/ --share --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo l&#39;avvio, si riceverà un link di condivisione locale e temporaneo per l&#39;accesso:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://e9a61c21593a7b251f.gradio.live
&lt;/pre&gt;
&lt;p&gt;Questo link di condivisione scade tra 72 ore.&lt;/p&gt;
&lt;h3&gt;Caricare il modello&lt;/h3&gt;
&lt;p&gt;Autorizzate la WebUI utilizzando il nome utente e la password selezionati e seguite questi 5 semplici passaggi:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Passare alla scheda &lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Selezionare &lt;b translate=&quot;no&quot;&gt;ggml-model-f16.gguf&lt;/b&gt; dal menu a discesa.&lt;/li&gt;
  &lt;li&gt;Scegliere il numero di livelli che si desidera calcolare sulla GPU (&lt;b translate=&quot;no&quot;&gt;n-gpu-layers&lt;/b&gt;).&lt;/li&gt;
  &lt;li&gt;Scegliere il numero di thread da avviare (&lt;b translate=&quot;no&quot;&gt;threads&lt;/b&gt;).  &lt;/li&gt;
  &lt;li&gt;Fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/967/original/sh_your_own_llama_2_in_linux_1.png?1714136367&quot; alt=&quot;Loading the model&quot;&gt;
&lt;h3&gt;Avvio della finestra di dialogo&lt;/h3&gt;
&lt;p&gt;Cambiare la scheda in &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt;, digitare la richiesta e fare clic su &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/968/original/sh_your_own_llama_2_in_linux_2.png?1714136407&quot; alt=&quot;Start the dialog&quot;&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/025/original/il_your_own_llama_2_in_Linux.png?1721999193"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:13:25 +0100</pubDate>
      <guid isPermaLink="false">574</guid>
      <dc:date>2025-01-20 09:13:25 +0100</dc:date>
    </item>
    <item>
      <title>Llama 3 usando Hugging Face</title>
      <link>https://www.leadergpu.it/catalog/573-llama-3-usando-hugging-face</link>
      <description>&lt;p&gt;Il 18 aprile 2024 è stato rilasciato Llama 3, il nuovo modello linguistico di MetaAI. Agli utenti sono state presentate due versioni: 8B e 70B. La prima versione contiene più di 15.000 token ed è stata addestrata su dati validi fino a marzo 2023. La seconda versione, più ampia, è stata addestrata su dati validi fino a dicembre 2023.&lt;/p&gt;

&lt;h2&gt;Fase 1. Preparare il sistema operativo&lt;/h2&gt;

&lt;h3&gt;Aggiornare la cache e i pacchetti&lt;/h3&gt;

&lt;p&gt;Aggiorniamo la cache dei pacchetti e aggiorniamo il sistema operativo prima di iniziare a configurare LLaMa 3. Si noti che per questa guida utilizziamo Ubuntu 22.04 LTS come sistema operativo:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Inoltre, dobbiamo aggiungere Python Installer Packages (PIP), se non è già presente nel sistema:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Installare i driver NVIDIA®&lt;/h3&gt;

&lt;p&gt;È possibile utilizzare l&#39;utilità automatica inclusa di default nelle distribuzioni Ubuntu:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In alternativa, è possibile installare i driver NVIDIA® manualmente. Non dimenticate di riavviare il server:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Passo 2. Ottenere il modello&lt;/h2&gt;

&lt;p&gt;Accedere a &lt;a href=&quot;https://huggingface.co/&quot;&gt;Hugging Face&lt;/a&gt; utilizzando il proprio nome utente e la propria password. Andare alla pagina corrispondente alla versione di LLM desiderata: &lt;a href=&quot;https://huggingface.co/meta-llama/Meta-Llama-3-8B&quot;&gt;Meta-Llama-3-8B&lt;/a&gt; o &lt;a href=&quot;https://huggingface.co/meta-llama/Meta-Llama-3-70B&quot;&gt;Meta-Llama-3-70B&lt;/a&gt;. Al momento della pubblicazione di questo articolo, l&#39;accesso al modello è fornito su base individuale. Compilare un breve modulo e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Submit&lt;/b&gt;:&lt;/p&gt;

&lt;h3&gt;Richiesta di accesso a HF&lt;/h3&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/905/original/sh_llama3_quick_start_1.png?1713533099&quot; alt=&quot;Fill the form&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Riceverete un messaggio che vi informa che la vostra richiesta è stata inoltrata:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/906/original/sh_llama3_quick_start_2.png?1713533131&quot; alt=&quot;Form submitted&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;L&#39;accesso avverrà dopo 30-40 minuti e sarete avvisati via e-mail.&lt;/p&gt;

&lt;h3&gt;Aggiungere la chiave SSH a HF&lt;/h3&gt;

&lt;p&gt;Generare e aggiungere una chiave SSH da utilizzare in Hugging Face:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;amp;&amp;amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Quando la coppia di chiavi è stata generata, è possibile visualizzare la chiave pubblica nell&#39;emulatore di terminale:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Copiare tutte le informazioni a partire da &lt;b translate=&quot;no&quot;&gt;ssh-rsa&lt;/b&gt; e fino a &lt;b translate=&quot;no&quot;&gt;usergpu@gpuserver&lt;/b&gt; come mostrato nella seguente schermata:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Aprire le &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;impostazioni del profilo di&lt;/a&gt; Hugging Face. Scegliere quindi &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; e fare clic sul pulsante Aggiungi chiave SSH:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Compilare &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; e incollare &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiato dal terminale. Salvare la chiave premendo &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Ora il vostro account HF è collegato alla chiave SSH pubblica. La seconda parte (chiave privata) è memorizzata sul server. Il passo successivo consiste nell&#39;installare un&#39;estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali. Aprire la propria home directory:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Scaricare ed eseguire lo script di shell. Questo script installa un nuovo repository di terze parti con git-lfs:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ora è possibile installarlo utilizzando il gestore di pacchetti standard:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Configuriamo git per usare il nostro nickname HF:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E collegato all&#39;account di posta elettronica HF:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Scarica il modello&lt;/h3&gt;

&lt;p&gt;Aprire la directory di destinazione:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E avviare il download del repository. Per questo esempio abbiamo scelto la versione 8B:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:meta-llama/Meta-Llama-3-8B&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Questo processo richiede fino a 5 minuti. È possibile monitorare questo processo eseguendo il seguente comando in un&#39;altra console SSH:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 0.5 df -h&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Qui si vedrà come lo spazio libero sul disco montato si riduce, assicurando che il download procede e che i dati vengono salvati. Lo stato si aggiorna ogni mezzo secondo. Per interrompere manualmente la visualizzazione, premere la scorciatoia Ctrl + C.&lt;/p&gt;

&lt;p&gt;In alternativa, è possibile installare &lt;a href=&quot;https://github.com/aristocratos/btop&quot;&gt;btop&lt;/a&gt; e monitorare il processo utilizzando questa utility:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install btop &amp;amp;&amp;amp; btop&lt;/code&gt;&lt;/pre&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/910/original/sh_llama3_quick_start_6.png?1713533300&quot; alt=&quot;Btop view&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Per uscire dall&#39;utilità btop, premere il tasto &lt;b translate=&quot;no&quot;&gt;Esc&lt;/b&gt; e selezionare &lt;b translate=&quot;no&quot;&gt;Quit&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;Passo 3. Eseguire il modello&lt;/h2&gt;

&lt;p&gt;Aprire la directory:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Scaricare il repository di Llama 3:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/meta-llama/llama3&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cambiare la directory:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama3&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Eseguire l&#39;esempio:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir /mnt/fastdisk/Meta-Llama-3-8B/original \
--tokenizer_path /mnt/fastdisk/Meta-Llama-3-8B/original/tokenizer.model \
--max_seq_len 128 \
--max_batch_size 4&lt;/code&gt;&lt;/pre&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/911/original/sh_llama3_quick_start_7.png?1713533328
&quot; alt=&quot;Llama3 example result&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Ora è possibile utilizzare Llama 3 nelle proprie applicazioni.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/904/original/il_llama3_quick_start.jpg?1713533056"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:05:10 +0100</pubDate>
      <guid isPermaLink="false">573</guid>
      <dc:date>2025-01-20 09:05:10 +0100</dc:date>
    </item>
    <item>
      <title>StarCoder: il vostro assistente di codifica locale</title>
      <link>https://www.leadergpu.it/catalog/571-starcoder-il-vostro-assistente-di-codifica-locale</link>
      <description>&lt;p&gt;Microsoft CoPilot ha portato una rivoluzione nel campo dello sviluppo software. Questo assistente AI aiuta notevolmente gli sviluppatori a svolgere diverse attività di codifica, semplificando loro la vita. Tuttavia, uno svantaggio è che non si tratta di un&#39;applicazione autonoma, ma di un servizio basato sul cloud. Ciò significa che gli utenti devono accettare i termini e le condizioni del servizio e pagare un abbonamento.&lt;/p&gt;
&lt;p&gt;Fortunatamente, il mondo del software open-source offre numerose alternative. Al momento della stesura di questo articolo, la più importante alternativa a CoPilot è StarCoder, sviluppato dal progetto BigCode. StarCoder è un modello di rete neurale esteso con 15,5 miliardi di parametri, addestrato su oltre 80 linguaggi di programmazione.&lt;/p&gt;
&lt;p&gt;Questo modello è distribuito su Hugging Face (HF) utilizzando un &lt;a href=&quot;https://huggingface.co/docs/hub/models-gated&quot; target=&quot;_blank&quot;&gt;modello gated&lt;/a&gt; sotto l&#39;&lt;a href=&quot;https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement&quot; target=&quot;_blank&quot;&gt;accordo di licenza BigCode OpenRAIL-M v1&lt;/a&gt;. È possibile scaricare e utilizzare questo modello gratuitamente, ma è necessario disporre di un account HF con una chiave SSH collegata. Prima di poterlo scaricare, è necessario eseguire alcuni passaggi aggiuntivi.&lt;/p&gt;
&lt;h2&gt;Aggiungere la chiave SSH a HF&lt;/h2&gt;
&lt;p&gt;Prima di iniziare, è necessario impostare il port forwarding (porta remota 7860 a 127.0.0.1:7860) nel proprio client SSH. Ulteriori informazioni sono disponibili nei seguenti articoli:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/597-stable-video-diffusion&quot;&gt;Diffusione video stabile&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/488-connettiti-a-un-server-linux&quot;&gt;Connettersi a un server Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aggiornare il repository della cache dei pacchetti e i pacchetti installati:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Installiamo il gestore dei pacchetti di sistema di Python (PIP):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generare e aggiungere una chiave SSH da utilizzare in Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando la coppia di chiavi è stata generata, è possibile visualizzare la chiave pubblica nell&#39;emulatore di terminale:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copiare tutte le informazioni che iniziano con ssh-rsa e terminano con usergpu@gpuserver come mostrato nella seguente schermata:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Aprire un browser web, digitare &lt;a href=&quot;https://huggingface.co/&quot; target=&quot;_blank&quot;&gt;https://huggingface.co/&lt;/a&gt; nella barra degli indirizzi e premere &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Accedere al proprio account HF e aprire &lt;a href=&quot;https://huggingface.co/settings/profile&quot; target=&quot;_blank&quot;&gt;Impostazioni profilo&lt;/a&gt;. Scegliere quindi &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; e fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Compilare &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; e incollare la &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiata dal terminale. Salvare la chiave premendo &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267
&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ora il vostro account HF è collegato alla chiave SSH pubblica. La seconda parte (chiave privata) è memorizzata sul server. Il passo successivo consiste nell&#39;installare un&#39;estensione specifica di Git LFS (Large File Storage), utilizzata per scaricare file di grandi dimensioni come i modelli di reti neurali. Aprire la propria home directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Scaricare ed eseguire lo script di shell. Questo script installa un nuovo repository di terze parti con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ora è possibile installarlo utilizzando il gestore di pacchetti standard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configuriamo git per usare il nostro nickname HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E collegato all&#39;account di posta elettronica HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Scarica il modello&lt;/h2&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Si noti che StarCoder in formato binario può occupare una quantità significativa di spazio su disco (&amp;gt;75 GB). Non dimenticate di fare riferimento a &lt;a href=&quot;https://www.leadergpu.it/articles/492-partizionamento-del-disco-in-linux&quot;&gt;questo articolo&lt;/a&gt; per assicurarvi di utilizzare la partizione montata correttamente.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Tutto è pronto per il download del modello. Aprire la directory di destinazione:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E avviare il download del repository:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:bigcode/starcoder&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo processo richiede fino a 15 minuti. Si prega di essere pazienti. È possibile monitorare il processo eseguendo il seguente comando in un&#39;altra console SSH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 0.5 df -h&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui si vedrà come lo spazio libero sul disco montato si riduce, assicurando che il download procede e che i dati vengono salvati. Lo stato si aggiorna ogni mezzo secondo. Per interrompere manualmente la visualizzazione, premere il collegamento &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Eseguire il modello completo con la WebUI&lt;/h2&gt;
&lt;p&gt;Clonare il repository del progetto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la cartella scaricata:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script di avvio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo script verificherà la presenza delle dipendenze necessarie sul server. Le dipendenze mancanti saranno installate automaticamente. All&#39;avvio dell&#39;applicazione, aprire il browser Web e digitare il seguente indirizzo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7860&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aprire la scheda &lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt; e selezionare il modello scaricato &lt;b translate=&quot;no&quot;&gt;starcoder&lt;/b&gt; dall&#39;elenco a discesa. Fare clic sull&#39;elenco &lt;b translate=&quot;no&quot;&gt;Model loader&lt;/b&gt; e scegliere &lt;b translate=&quot;no&quot;&gt;Transformers&lt;/b&gt;. Impostare il cursore della memoria massima della GPU per ogni GPU installata. Questo è molto importante, poiché impostandolo a 0 si limita l&#39;uso della VRAM e si impedisce il corretto caricamento del modello. È inoltre necessario impostare l&#39;utilizzo massimo della RAM. A questo punto, fare clic sul pulsante &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt; e attendere il completamento del processo di caricamento:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/969/original/sh_starcoder_your_local_coding_assistant_1.png?1714386546&quot; alt=&quot;Load StarCoder model&quot;&gt;
&lt;p&gt;Passare alla scheda &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt; e testare la conversazione con il modello. Si noti che Starcoder non è destinato a dialoghi come ChatGPT. Tuttavia, può essere utile per verificare la presenza di errori nel codice e suggerire soluzioni.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/970/original/sh_starcoder_your_local_coding_assistant_2.png?1714386599&quot; alt=&quot;Run the StarCoder&quot;&gt;
&lt;p&gt;Se volete ottenere un modello di dialogo completo, potete provare altri due modelli: &lt;a href=&quot;https://huggingface.co/HuggingFaceH4/starchat-alpha&quot; target=&quot;_blank&quot;&gt;starchat-alpha&lt;/a&gt; e &lt;a href=&quot;https://huggingface.co/HuggingFaceH4/starchat-beta&quot; target=&quot;_blank&quot;&gt;starchat-beta&lt;/a&gt;. Questi modelli sono stati messi a punto per condurre un dialogo proprio come fa ChatGPT. I comandi seguenti aiutano a scaricare ed eseguire questi modelli:&lt;/p&gt;
&lt;p&gt;Per starchat-alpha:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:HuggingFaceH4/starchat-alpha&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per starchat-beta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:HuggingFaceH4/starchat-beta&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La procedura di caricamento è la stessa descritta sopra. Inoltre, è possibile trovare l&#39;&lt;a href=&quot;https://github.com/bigcode-project/starcoder.cpp/tree/main&quot; target=&quot;_blank&quot;&gt;implementazione C++&lt;/a&gt; di starcoder, che sarà efficace per l&#39;inferenza della CPU.&lt;/p&gt;
&lt;p&gt;Vedere anche:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/574-il-vostro-llama-2-in-linux&quot;&gt;Il vostro LLaMa 2 in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/576-il-proprio-vicuna-in-linux&quot;&gt;Il proprio Vicuna in Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/catalog/578-il-proprio-qwen-utilizzando-hf&quot;&gt;Il proprio Qwen utilizzando HF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/971/original/il_starcoder_your_local_coding_assistant.jpg?1714386646"
        length="0"
        type="image/jpeg"/>
      <pubDate>Fri, 17 Jan 2025 14:52:58 +0100</pubDate>
      <guid isPermaLink="false">571</guid>
      <dc:date>2025-01-17 14:52:58 +0100</dc:date>
    </item>
    <item>
      <title>Modelli di Stable Diffusion: personalizzazione e opzioni</title>
      <link>https://www.leadergpu.it/catalog/566-modelli-di-stable-diffusion-personalizzazione-e-opzioni</link>
      <description>&lt;p&gt;La messa a punto è un modo eccellente per migliorare ogni auto o gadget. Anche le reti neurali generative possono essere messe a punto. Oggi non vogliamo approfondire la struttura della Diffusione Stabile, ma ci proponiamo di ottenere risultati migliori rispetto a una configurazione standard.&lt;/p&gt;
&lt;p&gt;Ci sono due modi semplici per farlo: installare modelli personalizzati e utilizzare le opzioni di ottimizzazione standard. In questo articolo scopriremo come installare nuovi modelli in Stable Diffusion e quali opzioni ci permettono di utilizzare l&#39;hardware in modo più efficace.&lt;/p&gt;
&lt;p&gt;Se si vogliono condividere immagini divertenti di gatti carini o di cibo dall&#39;aspetto fantastico, di solito le si pubblica su Instagram. Se si sviluppano applicazioni e si vuole rendere il codice disponibile a tutti, lo si pubblica su GitHub. Ma se addestrate un modello grafico di intelligenza artificiale e volete condividerlo, dovreste prestare attenzione a &lt;a href=&quot;https://civitai.com/&quot;&gt;CivitAI&lt;/a&gt;. Si tratta di un&#39;enorme piattaforma per condividere conoscenze e risultati con i membri della comunità.&lt;/p&gt;
&lt;p&gt;Prima di iniziare il download, è necessario cambiare la directory di lavoro. Tutti i modelli di intelligenza artificiale in Stable Diffusion sono collocati nella directory &quot;models&quot;: prima di iniziare il download, è necessario cambiare la directory di lavoro. Tutti i modelli di intelligenza artificiale in Stable Diffusion si trovano nella directory &quot;models&quot;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd stable-diffusion-webui/models/Stable-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verifichiamo quali sono i modelli forniti di default:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ls -a&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&#39;Put Stable Diffusion checkpoints here.txt&#39;
v1-5-pruned-emaonly.safetensors&lt;/pre&gt;
&lt;p&gt;C&#39;è solo un modello con il nome &quot;v1-5-pruned-emaonly&quot; e l&#39;estensione &quot;safetensors&quot;. Questo modello è un buon punto di partenza, ma ci sono altri cinque modelli interessanti. Scarichiamoli e confrontiamoli con il modello standard.&lt;/p&gt;
&lt;h2&gt;Modelli a diffusione stabile&lt;/h2&gt;
&lt;p&gt;Per mostrare visivamente la differenza tra i due modelli, abbiamo creato dei semplici prompt:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;princess, magic, fairy tales, portrait, 85mm, colorful&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Per molti modelli, la rappresentazione accurata della geometria e dei tratti del viso può rappresentare una sfida significativa. Per ovviare a questo problema, si possono aggiungere suggerimenti negativi per garantire la generazione di immagini prive di queste caratteristiche:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;poorly rendered face, poorly drawn face, poor facial details, poorly drawn hands, poorly rendered hands, low resolution, bad composition, mutated body parts, blurry image, disfigured, oversaturated, bad anatomy, deformed body features&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Impostare il valore massimo dei passi di campionamento (150) per ottenere maggiori dettagli nel risultato.&lt;/p&gt;
&lt;h3&gt;Modello standard&lt;/h3&gt;
&lt;p&gt;Il modello standard si comporta bene in questi compiti. Tuttavia, alcuni dettagli non sono del tutto accurati. Ad esempio, c&#39;è un problema con gli occhi: sono chiaramente sproporzionati:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/816/original/sh_stable_diffusion_models_customization_and_options_1.png?1712233278&quot; alt=&quot;Stable Diffusion Models standard&quot;&gt;
&lt;p&gt;Anche il diadema è storto e asimmetrico. Il resto dei dettagli è ben eseguito e corrisponde alle indicazioni fornite. Lo sfondo è sfocato perché abbiamo impostato la richiesta &quot;85 mm&quot;. Questa è una lunghezza focale molto usata per i ritratti nella fotografia professionale.&lt;/p&gt;
&lt;h3&gt;Visione realistica&lt;/h3&gt;
&lt;p&gt;Questo modello è ottimo per i ritratti. L&#39;immagine appare come se fosse stata scattata con un obiettivo di qualità con la lunghezza focale specificata. Le proporzioni del viso e del corpo sono precise, l&#39;abito si adatta perfettamente e il diadema sulla testa ha un aspetto esteticamente gradevole:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/817/original/sh_stable_diffusion_models_customization_and_options_2.png?1712233379&quot; alt=&quot;Stable Diffusion Models Realistic Vision&quot;&gt;
&lt;p&gt;A proposito, l&#39;autore raccomanda di utilizzare il seguente modello per i suggerimenti negativi:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ma anche con i nostri suggerimenti piuttosto semplici, il risultato è eccellente.&lt;/p&gt;
Scaricate il modello qui: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v20&quot;&gt;Visione realistica&lt;/a&gt;&lt;h3&gt;Deliberato&lt;/h3&gt;
&lt;p&gt;Un altro modello sorprendente per questi scopi. Anche qui i dettagli sono ben elaborati, ma fate attenzione e controllate il numero di dita. Questo è un problema molto comune con le reti neurali: spesso possono disegnare dita in più o addirittura interi arti.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/818/original/sh_stable_diffusion_models_customization_and_options_3.png?1712233625&quot; alt=&quot;Stable Diffusion Models Deliberate&quot;&gt;
&lt;p&gt;La creazione di linee visive è una delle tecniche cinematografiche preferite. Così, anche questo modello ha scelto di disegnare una persona sullo sfondo di un sentiero boschivo.&lt;/p&gt;
&lt;p&gt;Scaricate il modello qui: &lt;a href=&quot;https://huggingface.co/XpucT/Deliberate&quot;&gt;Deliberato&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Viaggio aperto&lt;/h3&gt;
&lt;p&gt;Tra le reti neurali generative, Midjourney (MJ) ha ricevuto particolare attenzione. MJ è stato un pioniere in questo campo e viene spesso additato come esempio per gli altri. Le immagini che crea hanno uno stile unico. OpenJourney si ispira allo stile di MJ ed è una Diffusione Stabile opportunamente ottimizzata.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/819/original/sh_stable_diffusion_models_customization_and_options_4.png?1712233730&quot; alt=&quot;Stable Diffusion Models OpenJourney&quot;&gt;
&lt;p&gt;Genera immagini che sembrano un cartone animato. Sono vibranti e luminose. Per ottenere risultati migliori, aggiungete il prompt dello stile &lt;b translate=&quot;no&quot;&gt;mdjrny-v4&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Scaricate il modello qui: &lt;a href=&quot;https://huggingface.co/prompthero/openjourney&quot;&gt;OpenJourney&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Qualsiasi cosa&lt;/h3&gt;
&lt;p&gt;Questo modello crea immagini simili a quelle di un artista manga professionista (una persona che disegna fumetti). Così, abbiamo una principessa in stile anime.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/820/original/sh_stable_diffusion_models_customization_and_options_5.png?1712233804&quot; alt=&quot;Stable Diffusion Models Anything&quot;&gt;
&lt;p&gt;Questo modello viene addestrato su immagini con una risoluzione di 768x768. È possibile impostare questa risoluzione per ottenere risultati migliori rispetto allo standard 512x512.&lt;/p&gt;
&lt;p&gt;Scaricate il modello qui: &lt;a href=&quot;https://civitai.com/models/66/anything-v3&quot;&gt;Qualsiasi cosa&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Azienda Memphis&lt;/h3&gt;
&lt;p&gt;Questo stile di immagini ha acquisito una popolarità selvaggia nei primi anni 2020 ed è stato ampiamente utilizzato come stile aziendale in diverse aziende high-tech. Nonostante le critiche, si trova spesso nelle presentazioni e nei siti web.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/821/original/sh_stable_diffusion_models_customization_and_options_6.png?1712233943&quot; alt=&quot;Stable Diffusion Models Corporate Memphis&quot;&gt;
&lt;p&gt;La principessa si è rivelata minimalista, ma piuttosto bella. Particolarmente divertenti sono stati i dettagli che la modella ha inserito sullo sfondo.&lt;/p&gt;
&lt;p&gt;Scaricate il modello qui: &lt;a href=&quot;https://huggingface.co/jinofcoolnes/corporate_memphis&quot;&gt;Memphis aziendale&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Opzioni di diffusione stabili&lt;/h2&gt;
&lt;p&gt;La diffusione stabile consuma molte risorse, per cui sono state sviluppate molte opzioni. La più popolare è &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt;. Questa opzione abilita due meccanismi di ottimizzazione. Il primo riduce il consumo di memoria e il secondo viene utilizzato per aumentare la velocità.&lt;/p&gt;
&lt;p&gt;Se si prova ad aggiungere --xformers senza ulteriori passaggi, si otterrà un errore che dice che i pacchetti&lt;a href=&quot;https://pypi.org/project/torch/&quot;&gt;(torch&lt;/a&gt; e &lt;a href=&quot;https://pypi.org/project/torchvision/&quot;&gt;torchvision&lt;/a&gt;) sono compilati per versioni diverse di CUDA®. Per risolvere questo problema, è necessario entrare nell&#39;ambiente virtuale Python (venv) utilizzato per Stable Diffusion. Successivamente, installare i pacchetti per la versione di CUDA® desiderata (v1.18).&lt;/p&gt;
&lt;p&gt;Per prima cosa dobbiamo aggiornare la cache dei pacchetti apt e installare il programma di installazione dei pacchetti per Python (pip). Il passo successivo è attivare Python venv con lo script &lt;b translate=&quot;no&quot;&gt;activate&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source stable-diffusion-webui/venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo di ciò, il prompt della riga di comando cambia in &lt;b translate=&quot;no&quot;&gt;(venv) username@hostname:~$&lt;/b&gt; Installiamo i pacchetti torch e torchvision con CUDA® 11.8:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 --index-url https://download.pytorch.org/whl/cu118&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo processo potrebbe richiedere diversi minuti perché i pacchetti sono piuttosto grandi. Avrete giusto il tempo di versarvi un caffè. Infine, è possibile disattivare l&#39;ambiente virtuale e avviare Stable Diffusion con l&#39;opzione &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt; (sostituire &lt;b translate=&quot;no&quot;&gt;[user]&lt;/b&gt; e &lt;b translate=&quot;no&quot;&gt;[password]&lt;/b&gt; con i propri valori):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui --xformers --listen --gradio-auth [user]:[password]&lt;/password&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&#39;alternativa più veloce a &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt; è &lt;b translate=&quot;no&quot;&gt;--opt-sdp-no-mem-attention&lt;/b&gt;, che consuma più memoria ma funziona un po&#39; più velocemente. È possibile utilizzare questa opzione senza ulteriori passaggi.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Oggi abbiamo esaminato le capacità di Stable Diffusion in combinazione con altri modelli aggiunti e opzioni di ottimizzazione. Ricordiamo che aumentando o diminuendo il numero di passaggi di campionamento, è possibile regolare il livello di dettaglio dell&#39;immagine finale.&lt;/p&gt;
&lt;p&gt;Naturalmente, questa è solo una piccola parte di ciò che si può fare con una rete neurale generativa di questo tipo. Quindi &lt;a href=&quot;https://www.leadergpu.it/#chose-best&quot;&gt;ordinate subito un server GPU&lt;/a&gt; e iniziate a sperimentare. Molte altre scoperte e opportunità vi attendono. Le schede video potenti e ad alta velocità vi aiuteranno a risparmiare tempo e a generare immagini fantastiche.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/565-stable-diffusion-webui&quot;&gt;WebUI di diffusione stabile&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/598-easy-diffusion-ui&quot;&gt;Interfaccia utente facile di Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/595-pytorch-per-linux&quot;&gt;PyTorch per Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/596-pytorch-per-windows&quot;&gt;PyTorch per Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/815/original/il_stable_diffusion_models_customization_and_options.png?1712233216"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 25 Nov 2024 13:30:16 +0100</pubDate>
      <guid isPermaLink="false">566</guid>
      <dc:date>2024-11-25 13:30:16 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion WebUI</title>
      <link>https://www.leadergpu.it/catalog/565-stable-diffusion-webui</link>
      <description>&lt;p&gt;Le reti neurali generative sembrano magiche. Rispondono a domande, creano immagini e scrivono persino codice in vari linguaggi di programmazione. Il successo di queste reti è dovuto a due componenti: modelli pre-addestrati e acceleratori hardware. Certo, è possibile utilizzare i core della CPU per questo carico di lavoro, ma sarebbe come una corsa di lumache. La generazione di una piccola immagine può richiedere una quantità di tempo significativa, decine di minuti. La generazione della stessa immagine su una GPU richiederebbe centinaia di volte meno.&lt;/p&gt;
&lt;p&gt;Il primo segreto sta nel numero di core. I core delle CPU sono universali e possono gestire istruzioni complesse. Tuttavia, i processori dei server tradizionali hanno un massimo di 64 core. Persino nei sistemi multiprocessore, il numero di core raramente supera i 256. I core delle GPU sono più semplici, ma di conseguenza se ne possono inserire molti di più nel chip. Ad esempio, una NVIDIA® RTX™ 4090 ha 16.384 core.&lt;/p&gt;
&lt;p&gt;Il secondo segreto è che il carico di lavoro può essere suddiviso in molti compiti semplici, che possono essere eseguiti in thread paralleli su core GPU dedicati. Questo trucco accelera notevolmente l&#39;elaborazione dei dati. Oggi vedremo come funziona e distribuiremo una rete neurale generativa &lt;a href=&quot;https://github.com/Stability-AI/stablediffusion&quot;&gt;Stable Diffusion Web UI&lt;/a&gt; sull&#39;infrastruttura &lt;a href=&quot;https://www.leadergpu.it/&quot;&gt;LeaderGPU&lt;/a&gt;. Prendiamo ad esempio un server con una NVIDIA® RTX™ 4090 che ha 16.384 core GPU. Come sistema operativo, abbiamo scelto l&quot;attuale versione LTS di Ubuntu 22.04 e abbiamo scelto l&#39;opzione &quot;Installa i driver NVIDIA® e CUDA® 11.8&quot;.&lt;/p&gt;
&lt;h2&gt;Preparazione del sistema&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/811/original/sh_stable_diffusion_webui_1.png?1712212269&quot; alt=&quot;Stable Diffusion WebUI system prepare&quot;&gt;
&lt;p&gt;Prima di iniziare, consideriamo la memoria. Stable Diffusion è un sistema di grandi dimensioni che può occupare fino a 13G sul disco rigido. Il disco virtuale standard in un&#39;installazione di LeaderGPU è di 100G. Il sistema operativo occupa 25G. Se distribuiamo Stable Diffusion senza estendere la partizione home, esauriremo tutta la memoria libera e incontreremo l&#39;errore &quot;No space left on device&quot;. È una buona idea estendere la nostra directory home.&lt;/p&gt;
&lt;h3&gt;Estendere la directory home&lt;/h3&gt;
&lt;p&gt;Per prima cosa, dobbiamo controllare tutti i dischi disponibili.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo fdisk -l&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: INTEL SSDSC2KB48
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: VIRTUAL-DISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9D4C1F0C-D4A7-406E-AECB-BF57E4726437&lt;/pre&gt;
&lt;p&gt;Poi dobbiamo creare una nuova partizione Linux sul nostro disco SSD fisico, /dev/sda:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo fdisk /dev/sda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Premete i seguenti tasti, uno alla volta: &lt;b translate=&quot;no&quot;&gt;g → n → Enter → Enter → Enter → w&lt;/b&gt;. Si otterrà così una nuova partizione /dev/sda1 senza filesystem. A questo punto, creare un filesystem ext4 su di essa:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkfs.ext4 /dev/sda1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quando il processo è terminato, si passa al passo successivo.&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Attenzione! Procedere con la massima cautela. Qualsiasi errore commesso durante la modifica del file fstab può comportare l&#39;impossibilità di avviare normalmente il server e può richiedere il ripristino completo del sistema operativo.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo blkid&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;/dev/sdb2: UUID=&quot;6b17e542-0934-4dba-99ca-a00bd260c247&quot; BLOCK_SIZE=&quot;4096&quot; TYPE=&quot;ext4&quot; PARTUUID=&quot;70030755-75d8-4339-a4e0-26a97f1d1c5d&quot;
/dev/loop1: TYPE=&quot;squashfs&quot;
/dev/sdb1: PARTUUID=&quot;63ff1714-bd29-4062-be04-21af32423c0a&quot;
/dev/loop4: TYPE=&quot;squashfs&quot;
/dev/loop0: TYPE=&quot;squashfs&quot;
/dev/sda1: UUID=&quot;fb2ba455-2b8d-4da0-8719-ce327d0026bc&quot; BLOCK_SIZE=&quot;4096&quot; TYPE=&quot;ext4&quot; PARTUUID=&quot;6e0108df-b000-5848-8328-b187daf37a4f&quot;
/dev/loop5: TYPE=&quot;squashfs&quot;
/dev/loop3: TYPE=&quot;squashfs&quot;&lt;/pre&gt;
&lt;p&gt;Copiare &lt;b translate=&quot;no&quot;&gt;UUID&lt;/b&gt; (fb2ba455-2b8d-4da0-8719-ce327d0026bc nell&#39;esempio) della partizione &lt;b translate=&quot;no&quot;&gt;/dev/sda1&lt;/b&gt;. Successivamente, si indicherà al sistema di montare automaticamente questa unità con il suo UUID all&#39;avvio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/fstab&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inserire questa riga prima di &lt;b translate=&quot;no&quot;&gt;/swap.img&lt;/b&gt;... stringa:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;/dev/disk/by-uuid/&lt;PARTITION UUID&gt; /home/usergpu ext4 defaults defaults&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esempio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;# /etc/fstab: static file system information.
#
# Use &#39;blkid&#39; to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
# / was on /dev/sdb2 during curtin installation
/dev/disk/by-uuid/6b17e542-0934-4dba-99ca-a00bd260c247 / ext4 defaults,_netdev 0 1
/dev/disk/by-uuid/fb2ba455-2b8d-4da0-8719-ce327d0026bc /home/usergpu ext4 defaults defaults
/swap.img       none    swap    sw      0       0&lt;/pre&gt;
&lt;p&gt;Uscire con la scorciatoia da tastiera &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt; e confermare il salvataggio del file premendo &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Le nuove impostazioni saranno applicate al successivo avvio del sistema. Riavviamo il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dopo il riavvio, possiamo controllare tutte le directory montate con il seguente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Filesystem      Size  Used Avail Use% Mounted on
tmpfs           6.3G  1.7M  6.3G   1% /run
/dev/sdb2        49G   23G   24G  50% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda1       440G   28K  417G   1% /home/usergpu
tmpfs           6.3G  4.0K  6.3G   1% /run/user/1000&lt;/pre&gt;
&lt;p&gt;Superbo! Ma ora non abbiamo accesso a scrivere qualcosa nella nostra home directory perché è stata modificata dal file di configurazione &lt;b translate=&quot;no&quot;&gt;fstab&lt;/b&gt;. È ora di recuperare la proprietà della directory:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown -R usergpu /home/usergpu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ottimo lavoro! Passiamo al passo successivo.&lt;/p&gt;
&lt;h3&gt;Installare i pacchetti di base&lt;/h3&gt;
&lt;p&gt;Aggiornate la cache del software dai repository ufficiali di Ubuntu e aggiornate alcuni pacchetti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il sistema ha informato che è stato installato un nuovo kernel che sarà operativo dopo il riavvio del sistema. Selezionate due volte &lt;b translate=&quot;no&quot;&gt;OK&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Successivamente, è necessario risolvere le dipendenze, che richiedono una diffusione stabile. Il primo pacchetto aggiunge la funzionalità di ambiente virtuale Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il secondo pacchetto aggiunge un&#39;implementazione della funzione &lt;b translate=&quot;no&quot;&gt;malloc()&lt;/b&gt; del linguaggio di programmazione C, personalizzata da Google. Previene l&#39;errore &lt;b translate=&quot;no&quot;&gt;“Cannot locate TCMalloc”&lt;/b&gt; e migliora l&#39;utilizzo della memoria della CPU.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y --no-install-recommends google-perftools&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Infine, riavviare nuovamente il server:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Diffusione stabile automatica 1111: installare lo script&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/812/original/sh_stable_diffusion_webui_2.png?1712212341&quot; alt=&quot;Stable Diffusion WebUI install script&quot;&gt;
&lt;p&gt;Il modo più semplice per installare Stable Diffusion con WebUI è utilizzare lo script preconfezionato scritto dall&#39;utente GitHub &lt;a href=&quot;https://github.com/AUTOMATIC1111&quot;&gt;AUTOMATIC1111&lt;/a&gt;. Questo script scarica e configura queste due parti e risolve tutte le dipendenze necessarie.&lt;/p&gt;
&lt;p&gt;Scarichiamo lo script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quindi, diamogli accesso ai dati di modifica ed eseguiamolo come programma:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod a+x webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eseguire lo script scaricato:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo processo può richiedere un paio di minuti. Tutto è pronto per creare immagini perfette con Stable Diffusion.&lt;/p&gt;
&lt;h3&gt;Risoluzione dei problemi&lt;/h3&gt;
&lt;p&gt;Se si verifica l&#39;errore &quot;Torch non è in grado di utilizzare la GPU&quot;, è possibile risolvere il problema reinstallando il programma tramite apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install nvidia-driver-535&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;È necessario riavviare il sistema operativo per abilitare il driver:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Generare&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/813/original/sh_stable_diffusion_webui_3.png?1712212549
&quot; alt=&quot;Stable Diffusion WebUI run script&quot;&gt;
&lt;p&gt;Lo script di installazione &lt;b translate=&quot;no&quot;&gt;./webui.sh&lt;/b&gt; ha un&#39;altra funzione. Serve contemporaneamente la parte server di Stable Diffusion e la WebUI. Tuttavia, se lo si usa senza argomenti, il server sarà disponibile come demone locale all&#39;indirizzo &lt;a href=&quot;http://127.0.0.1:7860&quot;&gt;http://127.0.0.1:7860.&lt;/a&gt; Questo problema può essere risolto in due modi: con un port forwarding attraverso un tunnel SSH o consentendo connessioni da IP esterni.&lt;/p&gt;
&lt;p&gt;Il secondo modo è più semplice: basta aggiungere l&#39;opzione &lt;b translate=&quot;no&quot;&gt;--listen&lt;/b&gt; e ci si può connettere all&#39;interfaccia web all&#39;indirizzo &lt;b translate=&quot;no&quot;&gt;http://[YOUR_LEADERGPU_SERVER_IP_ADDRESS]:7860&lt;/b&gt;. Tuttavia, questo è completamente insicuro, poiché ogni utente di Internet avrà accesso. Per evitare un uso non autorizzato, aggiungere l&#39;opzione &lt;b translate=&quot;no&quot;&gt;--gradio-auth&lt;/b&gt; accanto al nome utente e alla password, separati da due punti:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh --listen --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo script scaricherà per la prima Volta™ i modelli di base e le dipendenze necessarie:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/814/original/sh_stable_diffusion_webui_4.png?1712212654&quot; alt=&quot;Stable Diffusion WebUI Gradio&quot;&gt;
&lt;p&gt;Potete godervi il risultato. È sufficiente inserire alcune richieste, separate da virgole, e fare clic sul pulsante Genera. Dopo qualche secondo, verrà visualizzata un&#39;immagine generata dalla rete neurale.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Siamo passati da un server LeaderGPU vuoto con solo un sistema operativo preinstallato a un&#39;istanza pronta con Stable Diffusion e un&#39;interfaccia WebUI. La prossima Volta™ impareremo di più sulla regolazione delle prestazioni del software e su come potenziare correttamente la vostra istanza Stable Diffusion con nuove versioni di driver e pacchetti.&lt;/p&gt;
&lt;p&gt;Vedi anche:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/566-modelli-di-stable-diffusion-personalizzazione-e-opzioni&quot;&gt;Modelli di Stable Diffusion: personalizzazione e opzioni&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/598-easy-diffusion-ui&quot;&gt;Facile interfaccia di diffusione&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/595-pytorch-per-linux&quot;&gt;PyTorch per Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.it/articles/596-pytorch-per-windows&quot;&gt;PyTorch per Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/810/original/il_stable_diffusion_webui.png?1712212156"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 25 Nov 2024 13:24:45 +0100</pubDate>
      <guid isPermaLink="false">565</guid>
      <dc:date>2024-11-25 13:24:45 +0100</dc:date>
    </item>
  </channel>
</rss>