> ## Content Index
> Fetch the complete content index at: https://adrianoamalfi.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Camoscio GPT: Alternativa a Chat-GPT in Italiano anche su Windows con Ubuntu WSL2
- URL: https://adrianoamalfi.com/tech-scratchpad/camoscio-alternativa-a-chat-gpt-in-italiano-su-windows-wsl2/
- Published: 2023-04-24T15:23:06.000Z
- Updated: 2026-04-15T20:01:17.000Z
- Author: Adriano Amalfi
- Tags: #Tech Scratchpad: Appunti avanzati e esperimenti per esperti e amatoriali, Intelligenza Artificiale, Tecnologia & Digitale

[Camoscio](https://gladia.di.uniroma1.it/project/camoscio-gpt/?ref=adrianoamalfi.com) è un modello di linguaggio basato su [LLaMA](https://ai.facebook.com/blog/large-language-model-llama-meta-ai/?ref=adrianoamalfi.com), una famiglia di modelli aperti sviluppata da [Facebook AI Research](https://ai.facebook.com/research/?ref=adrianoamalfi.com), è stato addestrato con una tecnica chiamata **low-rank adaptation** ([LoRA](https://arxiv.org/abs/2106.09685?ref=adrianoamalfi.com)) per rispondere a istruzioni in italiano, usando un dataset tradotto dello [Stanford Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?ref=adrianoamalfi.com) instruction-tuning dataset.

Camoscio è disponibile sul hub di Hugging Face e può essere usato per generare testi in italiano seguendo le istruzioni fornite dall'utente con performance in termini di risultato vicino al GPT 3.5 [text-davinci-003](https://platform.openai.com/docs/models/gpt-3-5?ref=adrianoamalfi.com) .

Camoscio è stato cretato da [Andrea Santilli](https://gladia.di.uniroma1.it/authors/santilli/?ref=adrianoamalfi.com) del gruppo di ricerca [GLADIA](https://gladia.di.uniroma1.it/?ref=adrianoamalfi.com) della Sapienza di Roma.

### Predisposizione Windows Subsystem Linux 2 con Ubuntu e Nvidia CUDA

Per configurare WSL2 con Ubuntu e **CUDA 12.0**, è necessario seguire alcuni passaggi preliminari:

- Installare **Windows 11** o **Windows 10**, versione **[21H2 ](https://support.microsoft.com/it-it/topic/kb5003791-aggiornamento-a-windows-10-versione-21h2-usando-un-pacchetto-di-abilitazione-8bc077be-18d7-4aac-81ce-6f6dad2cd384?ref=adrianoamalfi.com)**o successiva.
- Scaricare e installare il driver **NVIDIA CUDA** abilitato per WSL dal sito web di NVIDIA. [Enable NVIDIA CUDA on WSL 2 | Microsoft Learn](https://learn.microsoft.com/en-us/windows/ai/directml/gpu-cuda-in-wsl?ref=adrianoamalfi.com)
- Abilitare **WSL** e installare una **distribuzione basata su glibc** (come Ubuntu o Debian). [Windows 11: installiamo una distribuzione UBUNTU con WSL (redhotcyber.com)](https://www.redhotcyber.com/post/windows-11-installiamo-una-distribuzione-ubuntu-con-wsl/?ref=adrianoamalfi.com)
- Assicurarsi di avere l'[ultima versione del kernel WSL](https://learn.microsoft.com/it-it/windows/wsl/kernel-release-notes?ref=adrianoamalfi.com) (5.10.43.3 o superiore).

Dopo aver completato questi passaggi, è possibile procedere con l'installazione del toolkit CUDA su Ubuntu seguendo una delle due opzioni:

- Opzione 1: Installazione del **toolkit CUDA** Linux x86 usando il pacchetto WSL-Ubuntu - Raccomandato. Il pacchetto WSL-Ubuntu contiene solo il toolkit CUDA e non il driver **NVIDIA Linux GPU**, quindi è sufficiente seguire le istruzioni sulla pagina di download di CUDA per WSL-Ubuntu.
- Opzione 2: Installazione del **toolkit CUDA** Linux x86 usando il meta pacchetto. Il meta pacchetto contiene sia il toolkit CUDA che il driver **NVIDIA Linux GPU**, quindi è necessario disinstallare il driver prima di usare questa opzione. Per maggiori dettagli, consultare la guida utente di CUDA su WSL.

![](https://docs.nvidia.com/cuda/_static/favicon.ico)

Una volta installato il toolkit CUDA, è possibile iniziare a usare le applicazioni esistenti che usano NVIDIA CUDA per l'accelerazione hardware GPU all'interno di un'istanza WSL, come PyTorch e TensorFlow, tramite NVIDIA Docker o installandoli direttamente su WSL.

### Eseguire Camoscio GPT su WSL Ubuntu e CUDA 12.0

1. Creare un ambiente virtual env dedicato e installare le librerie necessarie

```shell
python3 -m venv venv
source venv/bin/activate
pip install -r https://raw.githubusercontent.com/teelinsan/camoscio/main/requirements.txt

```

1. Fix della libreria bitsandbytes per WSL

```shell
# get python version
PYTHON_VERSION=$(python --version | cut -c8-11)
# Fix bitsandbytes library
cp venv/lib/python$PYTHON_VERSION/site-packages/bitsandbytes/libbitsandbytes_cuda120.so venv/lib/python$PYTHON_VERSION/site-packages/bitsandbytes/libbitsandbytes_cpu.so
# create python file camoscio.py
touch camoscio.py

```

1. Modificare il file camoscio.py ed inserire il seguente contenuto

```python

# import delle librerie necessarie
import torch
from peft import PeftModel
import transformers
import gradio as gr

from peft import PeftModel
from transformers import LLaMATokenizer, LLaMAForCausalLM, GenerationConfig

# impostazione del runtime su CUDA
assert torch.cuda.is_available(), "Change the runtime type to GPU"
device = "cuda"

# Inizializzo Tokenizer e Model LLAMA 
tokenizer = LLaMATokenizer.from_pretrained("decapoda-research/llama-7b-hf")
model = LLaMAForCausalLM.from_pretrained(
    "decapoda-research/llama-7b-hf",
    load_in_8bit=True,
    device_map="auto",
)

# Introduco il modello camoscio
model = PeftModel.from_pretrained(model, "teelinsan/camoscio-7b-llama")

# Routine per la generazione del prompt
def generate_prompt(instruction, input=None):
    if input:
        return f"""Di seguito è riportata un'istruzione che descrive un task, insieme ad un input che fornisce un contesto più ampio. Scrivete una risposta che completi adeguatamente la richiesta.

### Istruzione:
{instruction}

### Input:
{input}

### Risposta:"""
    else:
        return f"""Di seguito è riportata un'istruzione che descrive un task. Scrivete una risposta che completi adeguatamente la richiesta.

### Istruzione:
{instruction}

### Risposta:"""

# Configurazione dei parametri di generazione
generation_config = GenerationConfig(
    temperature=0.2,
    top_p=0.75,
    top_k=40,
    num_beams=4,
)

# Routine per la valutazione del prompt 
def evaluate(instruction, input=None):
    prompt = generate_prompt(instruction, input)
    inputs = tokenizer(prompt, return_tensors="pt")
    input_ids = inputs["input_ids"].cuda()
    with torch.no_grad():
      generation_output = model.generate(
          input_ids=input_ids,
          generation_config=generation_config,
          return_dict_in_generate=True,
          output_scores=True,
          max_new_tokens=256
      )
    s = generation_output.sequences[0]
    output = tokenizer.decode(s)
    return output.split("### Risposta:")[1].strip()

# Rimuovo i warnings
import warnings
warnings.filterwarnings("ignore")

# Inizializzo l'interfaccia gradio
g = gr.Interface(
    fn=evaluate,
    inputs=[
        gr.components.Textbox(
            lines=2, label="Instruction", placeholder="Scrivi una breve biografia su Dante Alighieri"
        ),
        gr.components.Textbox(lines=2, label="Input", placeholder="none")
    ],
    outputs=[
        gr.inputs.Textbox(
            lines=7,
            label="Output",
        )
    ],
    title="🇮🇹🦙 Camoscio | adrianoamalfi.com guide")
g.launch()

```

1. Lanciare il programma Python e accedere all'interfaccia gradio all'indirizzo [http://127.0.0.1:7860](http://127.0.0.1:7860/?ref=adrianoamalfi.com)

```shell
python camoscio.py

```

### Utilizzo di Camoscio GTP

Si può accedere all'interfaccia Camoscio - gradio all'indirizzo [http://127.0.0.1:7860](http://127.0.0.1:7860/?ref=adrianoamalfi.com).

Senza un **contesto di input** sarà possibile chiedere al modello informazioni come ad esempio una breve **Biografia di [Elon Musk](https://it.wikipedia.org/wiki/Elon%5FMusk?ref=adrianoamalfi.com)** e la risposta sarà

> Elon Reeve Musk è un imprenditore, ingegnere, scienziato e filantropo canadese-americano. È il fondatore e CEO di Tesla, SpaceX, Neuralink, The Boring Company e OpenAI. Ha anche fondato PayPal e Zip2\. Ha ricevuto numerosi premi e riconoscimenti per il suo lavoro, tra cui l'Ordine dell'Imperatore del Giappone, il premio Breakthrough Prize in Life Sciences e il premio Breakthrough Prize in Fundamental Physics.

![](https://adrianoamalfi.com/content/images/camoscio-alternativa-a-chat-gpt-in-italiano-su-windows-wsl2/camoscio-alternativa-a-chat-gpt-in-italiano-su-windows-wsl2-2.webp)

Camoscio-GPT esempio senza contesto di input

Oppure ad esempio è possibile aggiungere informazioni di contesto nel box Input per dare informazioni al modello. Ad esempio tramite la descrizione della [pagina about](https://adrianoamalfi.com/about/) (in inglese ma ovviamente funziona anche in italiano) gli ho chiesto una breve **Biografia di Adriano Amalfi** con questo risultato

> Adriano Amalfi è un ingegnere informatico italiano con oltre 20 anni di esperienza nel campo dell'informatica. Ha lavorato nel settore bancario e finanziario dal 1999, specializzandosi nell'ICT Strategy, Innovation & Digital Transformation, ICT Governance, Risk e Compliance (GRC), End User Services e Datacenter Administration & Operations.

![](https://adrianoamalfi.com/content/images/camoscio-alternativa-a-chat-gpt-in-italiano-su-windows-wsl2/camoscio-alternativa-a-chat-gpt-in-italiano-su-windows-wsl2-3.webp)

Camoscio-GPT esempio con un contesto di input

### Extra: Modalità semplice per effettuare il test

Per effettuare un test semplice è possibile ho creato un [repository su Github](https://github.com/adrianoamalfi/camosciogpt-wsl2?ref=adrianoamalfi.com)

eseguire i seguenti comandi all'interno della shell

```shell
git clone https://github.com/adrianoamalfi/camosciogpt-wsl2.git 
cd camosciogpt-wsl2/
chmod +x run.sh 
./run.sh

```

il comando run.sh installa le dipendenze alla prima esecuzione ed esegue il programma python

```shell
DIR=venv

if [ -d "$DIR" ];
then
    echo "$DIR directory exists."
    source venv/bin/activate
    python camoscio.py
else
	echo "$DIR directory does not exist."
    python3 -m venv venv
    source venv/bin/activate
    pip install -r https://raw.githubusercontent.com/teelinsan/camoscio/main/requirements.txt
    # get python version
    PYTHON_VERSION=$(python --version | cut -c8-11)
    # Fix bitsandbytes library
    cp venv/lib/python$PYTHON_VERSION/site-packages/bitsandbytes/libbitsandbytes_cuda120.so venv/lib/python$PYTHON_VERSION/site-packages/bitsandbytes/libbitsandbytes_cpu.so
    python camoscio.py
fi

```

![](https://github.com/fluidicon.png)

### Link utili

![](https://gladia.di.uniroma1.it/media/icon_hu270427df1d22e4290f01c704a02d4aac_88840_180x180_fill_lanczos_center_3.png)

![](https://gladia.di.uniroma1.it/media/icon_hu270427df1d22e4290f01c704a02d4aac_88840_180x180_fill_lanczos_center_3.png)

![](https://github.com/fluidicon.png)

![](https://github.com/fluidicon.png)

![](https://github.com/fluidicon.png)

![](https://huggingface.co/favicon.ico)

![](https://huggingface.co/favicon.ico)

📣

Le **opinioni** espresse sono **personali** e non riflettono necessariamente le posizioni o le politiche dell'azienda o dell'ente per cui lavoro. Si prega di fare la propria valutazione critica del contenuto e di non considerare le informazioni fornite come consiglio professionale.

🤖

Il **contenuto** di questo post è stato generato con l'aiuto dell'**intelligenza artificiale.** Si prega di notare che le informazioni fornite possono non essere complete o accurate. Si raccomanda di fare ulteriori ricerche prima di prendere decisioni importanti basate sul contenuto di questo post