Ricerca nel sito web

Come utilizzare la CLI LLM per distribuire il modello GPT-4o su droplet GPU


Introduzione

Con l’avvento dei modelli linguistici di grandi dimensioni (LLM), sta diventando sempre più pratico eseguire questi modelli di intelligenza artificiale generativa su un’infrastruttura cloud. DigitalOcean ha recentemente introdotto GPU Droplets, che consentono agli sviluppatori di eseguire attività computazionalmente pesanti come la formazione e la distribuzione di LLM in modo efficiente. In questo tutorial imparerai a configurare e utilizzare la CLI LLM e a distribuire il modello GPT-4o di OpenAI su un Droplet GPU DigitalOcean utilizzando la riga di comando.

LLM CLI è un'utilità della riga di comando e una libreria Python per l'interazione con modelli linguistici di grandi dimensioni, sia tramite API remote che modelli che possono essere installati ed eseguiti sul proprio computer.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Un account DigitalOcean Cloud.
  • Una droplet GPU distribuita e in esecuzione.
  • Familiarità con la riga di comando di Linux. Per saperne di più, puoi visitare questa guida sul primer della riga di comando di Linux.
  • Lo strumento CLI LLM installato sulla tua GPU Droplet.
  • Una chiave API OpenAI configurata per l'accesso al modello GPT-4o.

Passaggio 1: configurare il droplet GPU

1.Crea un nuovo progetto: dovrai creare un nuovo progetto dal pannello di controllo cloud e collegarlo a un Droplet GPU.

2.Crea un droplet GPU: accedi al tuo account DigitalOcean, crea un nuovo droplet GPU e scegli AI/ML Ready come sistema operativo. Questa immagine del sistema operativo installa tutti i driver GPU NVIDIA necessari. Puoi fare riferimento alla nostra documentazione ufficiale su come creare un Droplet GPU.

3.Aggiungi una chiave SSH per l'autenticazione: è necessaria una chiave SSH per l'autenticazione con GPU Droplet e aggiungendo la chiave SSH, puoi accedere a GPU Droplet dal tuo terminale.

4.Finalizza e crea il droplet GPU: una volta completati tutti i passaggi precedenti, finalizza e crea un nuovo droplet GPU.

Passaggio 2: installare le dipendenze

Una volta che la GPU Droplet è pronta e distribuita. Puoi accedere tramite SSH alla GPU Droplet dal tuo terminale.

ssh root@<your-droplet-ip>

La CLI di LLM richiede l'installazione di Python e pip sul tuo Droplet GPU.

sudo apt install python3 python3-pip -y

Assicurati che il tuo Droplet GPU basato su Ubuntu sia aggiornato:

sudo apt update && sudo apt upgrade -y

Passaggio 3: installare l'interfaccia a riga di comando LLM

Installiamo questo strumento CLI utilizzando pip:

pip install llm

Verifichiamo l'installazione:

llm --version
llm, version 0.16

Puoi utilizzare il comando seguente per ottenere un elenco di comandi llm:

llm --help
Usage: llm [OPTIONS] COMMAND [ARGS]...

  Access large language models from the command-line

  Documentation: https://llm.datasette.io/

  To get started, obtain an OpenAI key and set it like this:

      $ llm keys set openai
      Enter key: ...

  Then execute a prompt like this:

      llm 'Five outrageous names for a pet pelican'

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  prompt*       Execute a prompt
  aliases       Manage model aliases
  chat          Hold an ongoing chat with a model.
  collections   View and manage collections of embeddings
  embed         Embed text and store or return the result
  embed-models  Manage available embedding models
  embed-multi   Store embeddings for multiple strings at once
  install       Install packages from PyPI into the same environment as LLM
  keys          Manage stored API keys for different models
  logs          Tools for exploring logged prompts and responses
  models        Manage available models
  openai        Commands for working directly with the OpenAI API
  plugins       List installed plugins
  replicate     Commands for working with models hosted on Replicate
  similar       Return top N similar IDs from a collection
  templates     Manage stored prompt templates
  uninstall     Uninstall Python packages from the LLM environment

Passaggio 4: gestione delle chiavi API

Molti modelli LLM richiedono una chiave API. Queste chiavi API possono essere fornite a questo strumento utilizzando diversi meccanismi.

In questo tutorial, poiché stai distribuendo il modello GPT-4o di OpenAI, puoi ottenere una chiave API per i modelli linguistici di OpenAI dalla pagina delle chiavi API sul loro sito.

Una volta pronta e salvata la chiave API, utilizzare il comando seguente per archiviare e salvare la chiave API:

llm keys set openai

Ti verrà richiesto di inserire la chiave in questo modo:

Enter key:<paste_your_api_key>

Passaggio 5: distribuire ed eseguire il modello GPT-4o utilizzando la CLI LLM

La CLI di LLM viene fornita con un plug-in predefinito per comunicare con l'API di OpenAI. Utilizza il modello gpt-3.5-turbo come plugin predefinito. Puoi anche installare plugin LLM per utilizzare modelli di altri fornitori come Claude, gpt4all, llama ecc., inclusi modelli con licenza aperta su cui eseguire direttamente il tuo computer.

Tutti questi plugin ti aiutano a eseguire LLM direttamente sul tuo computer.

Per verificare l'elenco dei plugin dei modelli LLM disponibili, puoi utilizzare il seguente comando:

llm models

Questo dovrebbe darti un elenco dei modelli attualmente installati.

OpenAI Chat: gpt-3.5-turbo (aliases: 3.5, chatgpt)
OpenAI Chat: gpt-3.5-turbo-16k (aliases: chatgpt-16k, 3.5-16k)
OpenAI Chat: gpt-4 (aliases: 4, gpt4)
OpenAI Chat: gpt-4-32k (aliases: 4-32k)
OpenAI Chat: gpt-4-1106-preview
OpenAI Chat: gpt-4-0125-preview
OpenAI Chat: gpt-4-turbo-2024-04-09
OpenAI Chat: gpt-4-turbo (aliases: gpt-4-turbo-preview, 4-turbo, 4t)
OpenAI Chat: gpt-4o (aliases: 4o)
OpenAI Chat: gpt-4o-mini (aliases: 4o-mini)
OpenAI Chat: o1-preview
OpenAI Chat: o1-mini
OpenAI Completion: gpt-3.5-turbo-instruct (aliases: 3.5-instruct, chatgpt-instruct)
Anthropic Messages: claude-3-opus-20240229 (aliases: claude-3-opus)
Anthropic Messages: claude-3-sonnet-20240229 (aliases: claude-3-sonnet)
Anthropic Messages: claude-3-haiku-20240307 (aliases: claude-3-haiku)
Anthropic Messages: claude-3-5-sonnet-20240620 (aliases: claude-3.5-sonnet)

È possibile utilizzare il comando llm install (un sottile wrapper attorno a pip install) per installare altri plugin.

Esegui un prompt dalla CLI

Innanzitutto passeremo da ChatGPT 3.5 (predefinito) a GPT-4o. Puoi iniziare a interagire con esso eseguendo una query direttamente dalla riga di comando. Ad esempio, chiedi al modello una domanda come questa:

llm -m gpt-4o "What is DigitalOcean GPU Droplet?"
DigitalOcean GPU Droplets are specialized cloud-based virtual machines designed to handle high-performance computing tasks that require GPU acceleration. These Droplets are equipped with powerful graphics processing units (GPUs) that excel at parallel processing tasks, making them ideal for applications such as machine learning, data analysis, scientific computing, and rendering tasks that require significant computational power.

With GPU Droplets, users can leverage the processing capability of GPUs to speed up tasks that would otherwise take a long time on standard CPU-based instances. DigitalOcean provides these GPU instances with various configurations, allowing users to select the number of GPUs and the specific type of GPU that suits their workload requirements.

The key features and benefits of DigitalOcean GPU Droplets include:

1. **High Performance**: Access to powerful GPUs which are optimized for intensive computational tasks.

2. **Flexible Pricing**: Pay-as-you-go pricing model allows users to scale resources up or down based on demand.

3. **Scalability**: Easily scale GPU-powered compute resources according to the needs of your application.

4. **Integration and Ease of Use**: Easy integration with other DigitalOcean products and services, providing a unified cloud infrastructure handling both compute and storage needs.

5. **Developer-Friendly**: DigitalOcean's intuitive dashboard and developer-friendly infrastructure make it simpler for developers to deploy and manage GPU-intensive applications.

Nota: la sintassi di base per eseguire un prompt utilizzando la CLI di LLM è llm "". È possibile passare --model per utilizzare un modello diverso con il prompt.

Puoi anche inviare un prompt allo standard input, ad esempio. Se invii testo allo standard input e fornisci argomenti, il prompt risultante sarà costituito dal contenuto reindirizzato seguito dagli argomenti.

Ad esempio, puoi reindirizzare il comando llm per chiedergli di spiegare uno script Python o una parte di codice in un file.

cat factorial.py | llm "Explain this code and find any bugs"
The code provided is a Python implementation of a recursive function to calculate the factorial of a non-negative integer. Here's a breakdown of how the code works along with potential issues:

### Code Explanation:

1. **Function Definition**:
   - `def factorial(n):` defines a function named `factorial` that takes one argument `n`.

2. **Base Case**:
   - The first `if` statement `if n == 0 or n == 1:` checks whether `n` is either 0 or 1. The factorial of both 0 and 1 is 1, so if this condition is true, the function returns 1.

3. **Recursive Case**:
   - The `else:` clause is executed if `n` is greater than 1. The function calls itself recursively with the argument `n - 1` and multiplies the result by `n`. This recursive calling continues until it reaches the base case.

4. **Example Usage**:
   - The code asks the user to enter a number, converts that input into an integer using `int()`, and then prints the factorial of the given number by calling the `factorial` function.

### Bug and Issues:

1. **Input Validation**:
   - The code does not handle invalid inputs, such as negative numbers or non-integer values. Factorial is defined only for non-negative integers. If the user enters a negative integer or a non-integer (such as a string), the program will either return a stack overflow error (for negative numbers leading to infinite recursion) or crash with a `ValueError` for non-integer inputs.
   
   To fix this, you could add input validation to ensure `n` is a non-negative integer:
   while True:
       try:
           number = int(input("Enter a non-negative integer: "))
           if number < 0:
               print("Please enter a non-negative integer.")
           else:
               break
       except ValueError:
           print("Invalid input. Please enter a valid integer.")

Per impostazione predefinita, lo strumento avvierà una nuova conversazione ogni volta che lo esegui. Puoi però scegliere di continuare la conversazione precedente passando l'opzione -c/--continue:

llm "Give me more ways to optimize the code" -c
Certainly! There are several ways to optimize the code for calculating the factorial. Here are some approaches, each with its own advantages:

### 1. Iterative Approach

The iterative approach is generally more efficient in terms of memory usage compared to the recursive approach:


def factorial(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

### 2. Memoization

Using memoization can help store previously computed factorials to reduce redundant calculations. This is particularly useful if you're computing factorials of multiple numbers:


memo = {0: 1, 1: 1}  # Base case

def factorial(n):
    if n in memo:
        return memo[n]
    else:
        memo[n] = n * factorial(n - 1)
        return memo[n]


### 3. Using Python's Built-in Functions

Python has a built-in function for calculating factorials in the `math` module, which is highly optimized:

import math

number = int(input("Enter a non-negative integer: "))
print(f"The factorial of {number} is {math.factorial(number)}")

Esistono numerosi casi d'uso per utilizzare la CLI LLM sul tuo sistema per interagire, creare e distribuire applicazioni di intelligenza artificiale generativa. Puoi controllare di più qui.

Conclusione

Seguendo questa guida, hai distribuito con successo il modello OpenAI GPT-4o utilizzando la CLI LLM su un Droplet GPU DigitalOcean. Ora puoi utilizzare questa configurazione per varie applicazioni che richiedono modelli linguistici ad alte prestazioni, come la generazione di contenuti, chatbot o l'elaborazione del linguaggio naturale.

Sentiti libero di sperimentare altri modelli supportati dalla CLI LLM o ridimensionare la tua distribuzione eseguendo più modelli o aumentando le risorse del tuo Droplet GPU.

Articoli correlati: