Condividi tramite


Esercitazione: Introduzione al modello di ragionamento DeepSeek-R1 nei modelli di Microsoft Foundry

Annotazioni

Questo documento fa riferimento al portale Microsoft Foundry (versione classica).

🔄 Passa alla nuova documentazione di Microsoft Foundry se si usa il nuovo portale.

Annotazioni

Questo documento fa riferimento al portale Microsoft Foundry (nuovo).

In questa esercitazione si apprenderà come distribuire e usare un modello di ragionamento DeepSeek in Microsoft Foundry. Questa esercitazione usa DeepSeek-R1 per l'illustrazione. Tuttavia, il contenuto si applica anche al modello di ragionamento DeepSeek-R1-0528 più recente.

I passaggi eseguiti in questa esercitazione sono:

  • Creare e configurare le risorse di Azure per l'uso di DeepSeek-R1 nei modelli Foundry.
  • Configurare la distribuzione del modello.
  • Usare DeepSeek-R1 con le API OpenAI di Azure v1 di nuova generazione per usare il modello nel codice

Prerequisiti

Per completare questo articolo, devi avere quanto segue:

Modelli di ragionamento

I modelli di ragionamento possono raggiungere livelli più elevati di prestazioni in domini come matematica, codifica, scienza, strategia e logistica. Il modo in cui questi modelli producono output consiste nell'usare in modo esplicito la catena di pensiero per esplorare tutti i possibili percorsi prima di generare una risposta. Verificano le loro risposte man mano che li producono, che aiutano ad arrivare a conclusioni più accurate. Di conseguenza, i modelli di ragionamento potrebbero richiedere meno contesto per generare risultati efficaci.

Questo modo di ridimensionare le prestazioni di un modello viene definito tempo di calcolo dell'inferenza perché scambia le prestazioni rispetto a una latenza e un costo più elevati. Al contrario, altri approcci possono essere ridimensionati tramite il tempo di calcolo del training.

I modelli di ragionamento producono due tipi di contenuto come output:

  • Completamenti di ragionamenti
  • Completamenti dell'output

Entrambi questi completamenti vengono conteggiati per il contenuto generato dal modello. Di conseguenza, contribuiscono ai limiti e ai costi dei token associati al modello. Alcuni modelli, ad esempio DeepSeek-R1, potrebbero rispondere con il contenuto di ragionamento. Altri, ad esempio o1, generano solo i completamenti.

Creare le risorse

Per creare un progetto Foundry che supporta la distribuzione per DeepSeek-R1, seguire questa procedura. È anche possibile creare le risorse usando l'interfaccia della riga di comando di Azure o l'infrastruttura come codice, con Bicep.

Suggerimento

Siccome è possibile personalizzare il riquadro sinistro nel portale Microsoft Foundry, è possibile che vengano visualizzati elementi diversi rispetto a quelli mostrati in questi passaggi. Se non viene visualizzato ciò che si sta cercando, selezionare ... Altro nella parte inferiore del riquadro sinistro.

  1. Accedere a Microsoft Foundry. Assicurarsi che l'interruttore Nuovo Foundry sia disattivato. Questi passaggi fanno riferimento a Foundry (versione classica).

    Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia attivato. Questi passaggi fanno riferimento a Foundry (nuovo).These steps refer to Foundry (new).

  2. Nella pagina di destinazione passare alla sezione "Esplorare modelli e funzionalità" e selezionare Vai al catalogo dei modelli completo per aprire il catalogo dei modelli. Screenshot della home page del portale Foundry che mostra la sezione del catalogo dei modelli.

  3. Cercare il modello DeepSeek-R1 e aprire la scheda del modello.

  4. Selezionare Usa questo modello. Questa azione apre una procedura guidata per creare un progetto e le risorse Foundry in cui si lavorerà. È possibile mantenere il nome predefinito per il progetto o modificarlo.

    Suggerimento

    Stai utilizzando Azure OpenAI nei modelli Foundry? Quando si è connessi al portale foundry usando una risorsa OpenAI di Azure, nel catalogo vengono visualizzati solo i modelli OpenAI di Azure. Per visualizzare l'elenco completo dei modelli, incluso DeepSeek-R1, usare la sezione Annunci principali e individuare la scheda con l'opzione Esplora altri modelli.

    Screenshot che mostra la scheda con l'opzione per esplorare tutti i modelli dal catalogo.

    Viene visualizzata una nuova finestra con l'elenco completo dei modelli. Selezionare DeepSeek-R1 nell'elenco e selezionare Distribuisci. La procedura guidata chiede di creare un nuovo progetto.

  5. Selezionare l'elenco a discesa nella sezione "Opzioni avanzate" della procedura guidata per visualizzare i dettagli sulle impostazioni e altre impostazioni predefinite create insieme al progetto. Queste impostazioni predefinite sono selezionate per una funzionalità ottimale e includono:

    Proprietà Descrizione
    Gruppo di risorse Contenitore principale per tutte le risorse in Azure. Questo contenitore consente di organizzare le risorse che interagiscono. Consente inoltre di avere un ambito per i costi associati all'intero progetto.
    Area geografica Area delle risorse che stai creando.
    Risorsa Foundry Risorsa che consente l'accesso ai modelli di punta nel catalogo dei modelli Foundry. In questa esercitazione viene creato un nuovo account, ma le risorse Foundry (in precedenza note come risorsa di Servizi di intelligenza artificiale di Azure) possono essere condivise tra più hub e progetti. Gli hub usano una connessione alla risorsa per avere accesso alle implementazioni del modello disponibili lì. Per informazioni su come creare connessioni alle risorse Foundry per usare i modelli, vedere Connettere il progetto di intelligenza artificiale.
  6. Selezionare Crea per creare il progetto Foundry insieme agli altri valori predefiniti. Attendere il completamento della creazione del progetto. Questo processo richiede qualche minuto.

  1. Accedere a Microsoft Foundry. Assicurarsi che l'interruttore Nuovo Foundry sia disattivato. Questi passaggi fanno riferimento a Foundry (versione classica).
    Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia attivato. Questi passaggi fanno riferimento a Foundry (nuovo).These steps refer to Foundry (new).
  2. Il progetto su cui si sta lavorando viene visualizzato nell'angolo superiore sinistro.
  3. Per creare un nuovo progetto, selezionare il nome del progetto e quindi Crea nuovo progetto.
  4. Assegnare un nome al progetto e selezionare Crea progetto.

Distribuire il modello

  1. Quando si crea il progetto e le risorse, viene visualizzata una procedura guidata di distribuzione. DeepSeek-R1 è disponibile come modello Foundry venduto direttamente da Azure. È possibile esaminare i dettagli dei prezzi per il modello selezionando la scheda DeepSeek nella pagina dei prezzi dei modelli di foundry.

  2. Configurare le impostazioni di distribuzione. Per impostazione predefinita, la distribuzione riceve il nome del modello che si sta distribuendo. Il nome della distribuzione viene usato nel parametro model per le richieste di instradamento a questa particolare distribuzione del modello. Questa configurazione consente di configurare nomi specifici per i modelli quando si allegano configurazioni specifiche.

  3. Foundry seleziona automaticamente la risorsa Foundry creata in precedenza con il progetto. Usare l'opzione Personalizza per modificare la connessione in base alle esigenze. DeepSeek-R1 è attualmente disponibile nel tipo di distribuzione Standard globale , che offre una velocità effettiva e prestazioni più elevate.

    Screenshot che mostra come distribuire il modello.

  4. Seleziona Distribuisci.

  5. Al termine della distribuzione, viene visualizzata la pagina dei Dettagli della distribuzione. Il nuovo modello è ora pronto per l'uso.

  1. Aggiungere un modello al progetto. Selezionare Compila al centro della pagina e quindi Modello.
  2. Selezionare Distribuisci modello di base per aprire il catalogo dei modelli.
  3. Trovare e selezionare il riquadro del modello DeepSeek-R1 per aprire la scheda del modello e selezionare Distribuisci. È possibile selezionare Distribuzione rapida per usare le impostazioni predefinite oppure selezionare Personalizza distribuzione per visualizzare e modificare le impostazioni di distribuzione.

Al termine della distribuzione, si viene reindirizzati al relativo playground, in cui è possibile iniziare a interagire con la distribuzione.

Usare il modello nel playground

È possibile iniziare usando il modello nel playground per ottenere un'idea delle funzionalità del modello.

  1. Nella pagina dei dettagli della distribuzione, selezionare l'opzione Apri nel playground nella barra superiore. Questa azione apre lo spazio sperimentale della chat.

  2. Nel menu a tendina Distribuzione dell'area di prova della chat, la distribuzione creata è già selezionata automaticamente.

  3. Configurare il prompt di sistema come necessario. In generale, i modelli di ragionamento non usano messaggi di sistema allo stesso modo di altri tipi di modelli.

    Screenshot che mostra come selezionare una distribuzione del modello da usare in playground, configurare il messaggio di sistema e testarlo.

  4. Digita il prompt e visualizza gli output.

  5. Usare Visualizza codice per visualizzare i dettagli su come accedere alla distribuzione del modello a livello di codice.

  1. Inserisci i tuoi suggerimenti, come "Quante lingue esistono nel mondo?" nell'area di test.

Modelli di ragionamento rapido

Quando si creano istruzioni per modelli di ragionamento, prendere in considerazione quanto segue:

  • Usare istruzioni semplici ed evitare l'uso delle tecniche di concatenazione di pensieri.
  • Le funzionalità di ragionamento predefinite rendono efficaci semplici richieste zero-shot come i metodi più complessi.
  • Quando si forniscono contesto o documenti aggiuntivi, ad esempio negli scenari RAG, includere solo le informazioni più rilevanti può impedire al modello di complicare la risposta in modo eccessivo.
  • I modelli di ragionamento possono supportare l'uso dei messaggi di sistema. Tuttavia, potrebbero non seguirli rigorosamente come altri modelli privi di ragionamento.
  • Quando si creano applicazioni a più turni, è consigliabile aggiungere solo la risposta finale dal modello, senza il suo contenuto di ragionamento, come illustrato nella sezione Contenuto di ragionamento.

Si noti che i modelli di ragionamento possono richiedere più tempo per generare risposte. Usano lunghe catene di ragionamento di pensiero che consentono una risoluzione dei problemi più profonda e più strutturata. Eseguono anche la verifica automatica per un controllo incrociato delle proprie risposte e per correggere i propri errori, mostrando comportamenti emergenti autoriflessivi.

Usare il modello nel codice

Usare l'endpoint e le credenziali dei modelli Foundry per connettersi al modello:

Screenshot che mostra come ottenere l'URL e la chiave associati alla distribuzione.

  1. Selezionare il riquadro Dettagli nel riquadro superiore di Playgrounds per visualizzare i dettagli della distribuzione. Qui è possibile trovare l'URI e la chiave API della distribuzione.
  2. Recuperare il nome della risorsa dall'URI della distribuzione per usarlo nell'inferenza del modello tramite codice.

Usare le API OpenAI di Azure v1 di nuova generazione per usare il modello nel codice. Questi esempi di codice usano un approccio di autenticazione sicuro e senza chiave, Microsoft Entra ID, tramite la libreria di identità di Azure.

Installare il pacchetto openai usando la propria gestione pacchetti, come pip:

pip install --upgrade openai

L'esempio seguente illustra come creare un client per utilizzare i completamenti della chat e quindi generare e stampare la risposta:


from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)
response = client.chat.completions.create(
  model="DeepSeek-R1", # Replace with your model deployment name.
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "How many languages are in the world?"}
  ]
)

#print(response.choices[0].message)
print(response.model_dump_json(indent=2))

Il ragionamento potrebbe generare risposte più lunghe e utilizzare un numero maggiore di token. È possibile visualizzare i limiti di frequenza applicabili ai modelli di DeepSeek-R1. Valutare la una strategia di retry per gestire i limiti di frequenza applicati. È anche possibile richiedere aumenti ai limiti predefiniti.

Ragionamento del contenuto

Alcuni modelli di ragionamento, ad esempio DeepSeek-R1, generano completamenti e includono il motivo sottostante. Il ragionamento associato al completamento è incluso nel contenuto della risposta all'interno dei tag <think> e </think>. Il modello potrebbe selezionare gli scenari per cui generare contenuto di ragionamento. L'esempio seguente illustra come generare il contenuto di ragionamento usando Python:

import re

match = re.match(r"<think>(.*?)</think>(.*)", response.choices[0].message.content, re.DOTALL)

print("Response:", )
if match:
    print("\tThinking:", match.group(1))
    print("\tAnswer:", match.group(2))
else:
    print("\tAnswer:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.

Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage: 
  Prompt tokens: 11
  Total tokens: 897
  Completion tokens: 886

Parametri

In generale, i modelli di ragionamento non supportano i parametri seguenti che è possibile trovare nei modelli di completamento della chat:

  • Temperatura
  • Penalità di presenza
  • Penalità di ripetizione
  • Parametro top_p