Τα βελτιωμένα μοντέλα μεγάλων γλωσσών (LLM) γίνονται όλο και πιο δημοφιλή σε εφαρμογές τεχνητής νοημοσύνης. Αυτά τα ισχυρά μοντέλα γλώσσας χρησιμοποιούνται ευρέως για την αυτοματοποίηση μιας σειράς εργασιών, τη βελτίωση της εξυπηρέτησης πελατών και τη δημιουργία περιεχομένου για συγκεκριμένο τομέα.

Ωστόσο, η εξυπηρέτηση αυτών των τελειοποιημένων LLMs σε κλίμακα συνοδεύεται από προκλήσεις. Αυτά τα μοντέλα καταναλώνουν υπολογιστικά. Τα μεγέθη τους είναι πολύ μεγαλύτερα από τις παραδοσιακές μικροϋπηρεσίες. Αυτά τα χαρακτηριστικά καθιστούν δύσκολη την αρχειοθέτηση της υπηρεσίας υψηλής απόδοσης και την κλιμάκωση χαμηλής ψυχρής εκκίνησης.

Αυτή η ανάρτηση θα παρουσιάσει την εμπειρία μας σχετικά με την υπηρεσία LLM με vLLM και την κλιμάκωση υπηρεσιών στο modelz.

Χρησιμοποιήστε vLLM για υπηρεσία LLM υψηλής απόδοσης

Το vLLM είναι μια μηχανή εξυπηρέτησης LLM υψηλής απόδοσης και αποδοτικής μνήμης. Προσφέρει συμβατό API με OpenAI, το οποίο καθιστά εύκολη την ενσωμάτωση με τις υπάρχουσες εφαρμογές LLM.

Το πρώτο πρόβλημα με τη χρήση του vLLM είναι η δημιουργία ενός περιβάλλοντος GPU για τη δημιουργία και εγκατάσταση του vLLM. Με τη βοήθεια του envd, αυτό μπορεί να γίνει σε ένα αρχείο όπως:

# syntax=v1

def build():
    base(dev=True)
    install.cuda(version="11.8.0")
    install.conda()
    install.python()
    install.apt_packages(name=["build-essential"])
    # install torch here to reuse the cache
    install.python_packages(name=["torch"])
    # install from source
    install.python_packages(name=["git+https://github.com/vllm-project/vllm.git"])

Εκτελώντας το envd up, μπορείτε να μπείτε στο περιβάλλον ανάπτυξης με όλα όσα χρειάζεστε. Εάν προτιμάτε το Dockerfile, έχουμε επίσης ένα πρότυπο.

Το vLLM υποστηρίζει ήδη πολλά LLM όπως LLaMA, Falcon, MPT, κ.λπ. Ωστόσο, για να υποστηρίξετε το δικό σας LLM, ίσως χρειαστεί να παρέχετε ένα πρότυπο προτροπής για συγκεκριμένο μοντέλο. Για να αντιμετωπίσουμε αυτό το ζήτημα, δημιουργούμε ένα εργαλείο που ονομάζεται llmspec, το οποίο παρέχει τα πρότυπα προτροπής με διεπαφή συμβατή με OpenAI. Μπορείτε να δημιουργήσετε τη γεννήτρια προτροπών πάνω από αυτήν τη βιβλιοθήκη.

Για να εκτελέσετε την υπηρεσία vLLM σε ένα σύμπλεγμα Kubernetes, υπάρχουν ορισμένες απαραίτητες διαμορφώσεις:

  • Να ρυθμίζετε πάντα το --worker-use-ray για να εκτελείται το συμπέρασμα μοντέλου σε άλλη διεργασία Python για να αποφύγετε την αποτυχία του ανιχνευτή υγείας.
  • Παρέχετε αρκετή κοινόχρηστη μνήμη (τουλάχιστον 30% RAM).
  • Μειώστε --gpu-memory-utilization για να αποφύγετε το GPU OOM για μεγάλες ακολουθίες.
  • Αυξήστε το --max-num-batched-tokens εάν θέλετε να λάβετε μεγάλες ακολουθίες.

Εάν θέλετε να προσομοιώσετε μια δοκιμή πολλαπλών ταυτόχρονων αιτημάτων, μπορείτε να χρησιμοποιήσετε το ακόλουθο σενάριο:

from random import randint
import concurrent.futures
import openai
openai.api_key = "EMPTY"
openai.api_base = "http://localhost:8000/v1"

def query(max_tokens=20):
    chat = openai.ChatCompletion.create(
        model="mosaicml/mpt-30b-chat",
        messages=[{
            "role": "user",
            "content": "Who are you?",
        }],
        stream=True,
        max_tokens=max_tokens,
    )
    for result in chat:
        delta = result.choices[0].delta
        print(delta.get('content', ''), end='', flush=True)
    print()

def batch_test():
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = [
            executor.submit(query, max_tokens=randint(20, 200)) for _ in range(20)
        ]
        for future in concurrent.futures.as_completed(futures):
            future.result()

if __name__ == "__main__":
    batch_test()

Scaling with Modelz

Το Modelz είναι μια πλήρως διαχειριζόμενη πλατφόρμα που παρέχει στους χρήστες ένα απλό API για την ανάπτυξη μοντέλων μηχανικής εκμάθησης. Χρησιμοποιώντας την πλατφόρμα μας, η υπηρεσία σας μπορεί να κλιμακωθεί σύμφωνα με την επίκληση API σε πραγματικό χρόνο. Η εικόνα του docker θα βελτιστοποιηθεί επίσης για να ελαχιστοποιηθεί ο χρόνος ψυχρής εκκίνησης του κοντέινερ.

Εάν θέλετε να αναπτύξετε μοντέλα στο ιδιωτικό σας σύμπλεγμα ή έναν διακομιστή GPU, δοκιμάστε το openmodelz. Φροντίζει για τις υποκείμενες τεχνικές λεπτομέρειες και παρέχει ένα απλό και εύχρηστο CLI για την ανάπτυξη και τη διαχείριση των υπηρεσιών μηχανικής εκμάθησης.

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με την ανάπτυξη μοντέλων στην παραγωγή, μη διστάσετε να απευθυνθείτε, εγγραφείτε στο Discord ή μέσω του [email protected].

Ώρα Διαφήμισης

  • mosec — Ένα γενικό πλαίσιο εξυπηρέτησης μηχανικής μάθησης υψηλής απόδοσης και εύκολο στη χρήση.
  • pgvecto.rs — Μια ισχυρή επέκταση Postgres για αναζήτηση ομοιότητας διανυσμάτων.