Μοντέλα και πλατφόρμες AI

Παρακολούθηση Μεγάλων Γλωσσικών Μοντέλων (LLM) με MLflow: Ένας Ολοκληρωμένος Οδηγός

mm
Προσθέστε το Unite.AI στις προτιμώμενες πηγές σας στο Google
div]:bg-bg-300 [&_pre]:-mr-4 md:[&pre]:-mr-9″>

Όσο οι Μεγάλες Γλωσσικές Μοντέλα (LLM) αυξάνονται σε πολυπλοκότητα και κλίμακα, η παρακολούθηση της απόδοσής τους, των πειραμάτων και των αναπτύξεων γίνεται ολοένα και πιο απαιτητική. Εδώ είναι όπου έρχεται το MLflow – παρέχοντας μια ολοκληρωμένη πλατφόρμα για τη διαχείριση του ολόκληρου κύκλου ζωής των μοντέλων μηχανικής μάθησης, συμπεριλαμβανομένων των LLM.

Σε αυτόν τον σε βάθος οδηγό, θα εξερευνήσουμε πώς να αξιοποιήσουμε το MLflow για την παρακολούθηση, αξιολόγηση και ανάπτυξη των LLM. Θα καλύψουμε όλα, από τη ρύθμιση του περιβάλλοντος μας μέχρι τις προηγμένες τεχνικές αξιολόγησης, με πολλά παραδείγματα κώδικα και besten πρακτικές κατά μήκος του δρόμου.

Λειτουργικότητα του MLflow σε Μεγάλες Γλωσσικές Μοντέλα (LLM)

MLflow έχει γίνει ένα βασικό εργαλείο στη κοινότητα της μηχανικής μάθησης και της επιστήμης των δεδομένων, ιδιαίτερα για τη διαχείριση του κύκλου ζωής των μοντέλων μηχανικής μάθησης. Όταν πρόκειται για Μεγάλες Γλωσσικές Μοντέλα (LLM), το MLflow προσφέρει μια ισχυρή σειρά εργαλείων που απλοποιούν σημαντικά τη διαδικασία ανάπτυξης, παρακολούθησης, αξιολόγησης και ανάπτυξης αυτών των μοντέλων. Εδώ είναι μια επισκόπηση του πώς το MLflow λειτουργεί στο χώρο των LLM και των πλεονεκτημάτων που προσφέρει στους μηχανικούς και τους επιστήμονες δεδομένων.

Μάθετε για τα βασικά συστατικά του MLflow

Παρακολούθηση και Διαχείριση των Διεργασιών LLM

Το σύστημα παρακολούθησης LLM του MLflow είναι μια βελτίωση των υφιστάμενων ικανοτήτων παρακολούθησης, προσαρμοσμένων στις ιδιαίτερες ανάγκες των LLM. Επιτρέπει την ολοκληρωμένη παρακολούθηση των διεργασιών του μοντέλου, συμπεριλαμβανομένων των ακόλουθων βασικών аспектών:

  • Παράμετροι: Καταγραφή ζευγών κλειδιών-τιμών που λεπτομερώς περιγράφουν τις εισαγωγικές παραμέτρους για το LLM, όπως παραμέτρους μοντέλου όπως top_k και temperature. Αυτό παρέχει контέκστ και διαμόρφωση για κάθε εκτέλεση, εξασφαλίζοντας ότι όλα τα аспекта της διαμόρφωσης του μοντέλου καταγράφονται.
  • Μέτρησεις: Ποσοτικές μετρήσεις που παρέχουν πληροφορίες για την απόδοση και την ακρίβεια του LLM. Αυτές μπορούν να ενημερωθούν δυναμικά καθώς η εκτέλεση προχωρά, προσφέροντας πραγματικό χρόνο ή μετά-επεξεργασία πληροφοριών.
  • Προβλέψεις: Για τα LLM, είναι κρίσιμο να καταγράφονται τόσο οι εισαγωγικές προτροπές όσο και οι εξαγωγές του μοντέλου. Το MLflow αποθηκεύει αυτές τις ως είδη σε δομημένο φορμά για εύκολη ανάκτηση και ανάλυση.
  • Είδη: Πέρα από τις προβλέψεις, το MLflow μπορεί να αποθηκεύσει διάφορα αρχεία εξόδου, όπως οπτικές αναπαραστάσεις, σειριοποιημένα μοντέλα και δομημένα αρχεία δεδομένων, επιτρέποντας λεπτομερή τεκμηρίωση και ανάλυση της απόδοσης του μοντέλου.

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

Αξιολόγηση των LLM

Η αξιολόγηση των LLM παρουσιάζει μοναδικές προκλήσεις λόγω της γεννητικής φύσης τους και της έλλειψης ενός ενιαίου γνώμονα. Το MLflow απλοποιεί αυτή τη διαδικασία με ειδικά εργαλεία αξιολόγησης σχεδιασμένα για τα LLM. Βασικά χαρακτηριστικά περιλαμβάνουν:

  • Πολυμορφική Αξιολόγηση Μοντέλων: Υποστηρίζει την αξιολόγηση διαφόρων τύπων LLM, είτε πρόκειται για ένα μοντέλο pyfunc του MLflow, μια διεύθυνση URI που δείχνει σε ένα καταχωρημένο μοντέλο MLflow, ή οποιαδήποτε Python κλήση που αντιπροσωπεύει το μοντέλο σας.
  • Ολοκληρωμένες Μέτρησεις: Προσφέρει eine σειρά μετρήσεων που έχουν σχεδιαστεί ειδικά για την αξιολόγηση των LLM, συμπεριλαμβανομένων τόσο των μετρήσεων που εξαρτώνται από το μοντέλο (π.χ. σχετικότητα απάντησης) όσο και των μετρήσεων που βασίζονται σε συναρτήσεις (π.χ. ROUGE, Flesch Kincaid).
  • Προκαθορισμένες Συλλογές Μετρήσεων: Ανεξάρτητα από την περίπτωση χρήσης, όπως η απάντηση σε ερωτήσεις ή η περίληψη κειμένου, το MLflow προσφέρει προκαθορισμένες μετρήσεις για να απλοποιήσει τη διαδικασία αξιολόγησης.
  • Δημιουργία Προσαρμοσμένων Μετρήσεων: Επιτρέπει στους χρήστες να ορίσουν και να υλοποιήσουν προσαρμοσμένες μετρήσεις για να ανταποκριθούν σε συγκεκριμένες ανάγκες αξιολόγησης, ενισχύοντας την ευελιξία και το βάθος της αξιολόγησης του μοντέλου.
  • Αξιολόγηση με Στατικά Δεδομένα: Επιτρέπει την αξιολόγηση στατικών δεδομένων χωρίς να καθορίσετε ένα μοντέλο, το οποίο είναι χρήσιμο για γρήγορες αξιολογήσεις χωρίς να ξανατρέχετε την εύρεση του μοντέλου.

Ανάπτυξη και Ένταξη

Το MLflow υποστηρίζει επίσης την άρτια ανάπτυξη και ένταξη των LLM:

  • Εξυπηρετητής Αναπτύξεων MLflow: Λειτουργεί ως μια ενιαία διεπαφή για την αλληλεπίδραση με πολλούς παρόχους LLM. Απλοποιεί τις εντάξεις, διαχειρίζεται τα διαπιστευτήρια ασφαλώς και προσφέρει μια συνεχή εμπειρία API. Αυτός ο εξυπηρετητής υποστηρίζει eine σειρά από θεμελιώδη μοντέλα από δημοφιλείς παρόχους SaaS καθώς και αυτοφιλοξενημένα μοντέλα.
  • Ενιαία Διεπαφή: Διευκολύνει την εύκολη εναλλαγή μεταξύ παρόχων χωρίς αλλαγές κώδικα, ελαχιστοποιώντας τον χρόνο εκτός λειτουργίας και αυξάνοντας την ευελιξία.
  • Ολοκληρωμένη Άποψη Αποτελεσμάτων: Παρέχει ολοκληρωμένα αποτελέσματα αξιολόγησης, τα οποία μπορούν να προσεγγιστούν απευθείας στον κώδικα ή μέσω της διεπαφής MLflow για λεπτομερή ανάλυση.

Το MLflow είναι μια ολοκληρωμένη σειρά εργαλείων και εντάξεων που το καθιστά一个 απαραίτητο περιουσιακό στοιχείο για τους μηχανικούς και τους επιστήμονες δεδομένων που εργάζονται με προηγμένα μοντέλα NLP.

Ρύθμιση του Περιβάλλοντος

Πριν ξεκινήσουμε την παρακολούθηση των LLM με το MLflow, ας ρυθμίσουμε το περιβάλλον ανάπτυξής μας. Θα χρειαστούμε να εγκαταστήσουμε το MLflow και beberapa άλλες βασικές βιβλιοθήκες:

pip install mlflow>=2.8.1
pip install openai
pip install chromadb==0.4.15
pip install langchain==0.0.348
pip install tiktoken
pip install 'mlflow[genai]'
pip install databricks-sdk --upgrade

Μετά την εγκατάσταση, είναι καλή πρακτική να επανεκκινήσουμε το περιβάλλον Python μας για να βεβαιωθούμε ότι όλες οι βιβλιοθήκες έχουν φορτωθεί σωστά. Σε ένα σημειωματάριο Jupyter, μπορείτε να χρησιμοποιήσετε:

import mlflow
import chromadb

<p>print(f"MLflow version: {mlflow.__version__}")
print(f"ChromaDB version: {chromadb.__version__}")

Αυτό θα επιβεβαιώσει τις εκδόσεις των βασικών βιβλιοθηκών που θα χρησιμοποιήσουμε.

Κατανόηση των Ικανοτήτων Παρακολούθησης LLM του MLflow

Το σύστημα παρακολούθησης LLM του MLflow βασίζεται στις υφιστάμενες ικανότητες παρακολούθησης, προσθέτοντας χαρακτηριστικά που έχουν σχεδιαστεί ειδικά για τις μοναδικές πτυχές των LLM. Ας αναλύσουμε τα βασικά συστατικά:

Εκτελέσεις και Πειράματα

Στο MLflow, μια “εκτέλεση” αντιπροσωπεύει μια seule εκτέλεση του κώδικα του μοντέλου μας, ενώ ένα “πείραμα” είναι μια συλλογή συναφών εκτελέσεων. Για τα LLM, μια εκτέλεση μπορεί να αντιπροσωπεύει μια seule ερώτηση ή μια παρτίδα προτροπών που επεξεργάζονται από το μοντέλο.

Βασικά Συστατικά Παρακολούθησης

  1. Παράμετροι: Αυτές είναι εισαγωγικές διαμορφώσεις για το LLM, όπως θερμοκρασία, top_k ή max_tokens. Μπορείτε να τις καταγράψετε χρησιμοποιώντας mlflow.log_param() ή mlflow.log_params().
  2. Μέτρησεις: Ποσοτικές μετρήσεις της απόδοσης του LLM, όπως ακρίβεια, καθυστέρηση ή προσαρμοσμένες βαθμολογίες. Χρησιμοποιήστε mlflow.log_metric() ή mlflow.log_metrics() για να παρακολουθήσετε αυτές.
  3. Προβλέψεις: Για τα LLM, είναι κρίσιμο να καταγράψετε τόσο τις εισαγωγικές προτροπές όσο και τις εξαγωγές του μοντέλου. Το MLflow αποθηκεύει αυτές ως είδη σε φορμά CSV χρησιμοποιώντας mlflow.log_table().
  4. Είδη: Οποιαδήποτε πρόσθετα αρχεία ή δεδομένα που σχετίζονται με την εκτέλεση του LLM, όπως σημεία μοντέλου, οπτικές αναπαραστάσεις ή δείγματα συνόλων δεδομένων. Χρησιμοποιήστε mlflow.log_artifact() για να αποθηκεύσετε αυτά.

Ας δούμε ένα βασικό παράδειγμα καταγραφής μιας εκτέλεσης LLM:

Αυτό το παράδειγμα δείχνει την καταγραφή παραμέτρων, μετρήσεων και της εισαγωγής/εξαγωγής ως είδη artifact.


import mlflow
import openai

<p>def query_llm(prompt, max_tokens=100):</p>

<p>response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=max_tokens
)
return response.choices[0].text.strip()</p>

<p>with mlflow.start_run():</p>

<p>prompt = "Εξηγήστε την έννοια της μηχανικής μάθησης με απλά λόγια."</p>

<p># Καταγραφή παραμέτρων
mlflow.log_param("model", "text-davinci-002")
mlflow.log_param("max_tokens", 100)</p>

<p># Ερώτηση στο LLM και καταγραφή του αποτελέσματος
result = query_llm(prompt)
mlflow.log_metric("response_length", len(result))</p>

<p># Καταγραφή της προτροπής και της απάντησης
mlflow.log_table("prompt_responses", {"prompt": [prompt], "response": [result]})</p>

<p>print(f"Απάντηση: {result}")

Ανάπτυξη LLM με MLflow

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

Δημιουργία Διεπαφής

Πρώτα, θα δημιουργήσουμε μια διεπαφή για το LLM μας χρησιμοποιώντας τον πελάτη ανάπτυξης του MLflow:

import mlflow
from mlflow.deployments import get_deploy_client

<p># Αρχικοποίηση του πελάτη ανάπτυξης
client = get_deploy_client("databricks")</p>

<p># Ορίσματα διαμόρφωσης διεπαφής
endpoint_name = "llm-endpoint"
endpoint_config = {
"served_entities": [{
"name": "gpt-model",
"external_model": {
"name": "gpt-3.5-turbo",
"provider": "openai",
"task": "llm/v1/completions",
"openai_config": {
"openai_api_type": "azure",
"openai_api_key": "{{secrets/scope/openai_api_key}}",
"openai_api_base": "{{secrets/scope/openai_api_base}}",
"openai_deployment_name": "gpt-35-turbo",
"openai_api_version": "2023-05-15",
},
},
}],
}</p>

<p># Δημιουργία διεπαφής
client.create_endpoint(name=endpoint_name, config=endpoint_config)

Αυτός ο κώδικας ρυθμίζει μια διεπαφή για ένα μοντέλο GPT-3.5-turbo χρησιμοποιώντας Azure OpenAI. Σημειώστε τη χρήση των μυστικών της Databricks για την ασφαλή διαχείριση των κλειδιών API.

Δοκιμή της Διεπαφής

Μόλις δημιουργηθεί η διεπαφή, μπορούμε να τη δοκιμάσουμε:

&lt;div class=&quot;relative flex flex-col rounded-lg&quot;&gt;

<p>response = client.predict(
endpoint=endpoint_name,
inputs={"prompt": "Εξηγήστε την έννοια των νευρωνικών δικτύων σύντομα.", "max_tokens": 100,},)</p>

print(response)

Αυτό θα στείλει μια προτροπή στο αναπτυγμένο μοντέλο μας και θα επιστρέψει την παραγμένη απάντηση.

Αξιολόγηση LLM με MLflow

Η αξιολόγηση είναι κρίσιμη για την κατανόηση της απόδοσης και της συμπεριφοράς των LLM. Το MLflow προσφέρει ολοκληρωμένα εργαλεία για την αξιολόγηση των LLM, συμπεριλαμβανομένων τόσο των ενσωματωμένων όσο και των προσαρμοσμένων μετρήσεων.

Προετοιμασία του LLM για Αξιολόγηση

Για να αξιολογήσετε το LLM σας με mlflow.evaluate(), το μοντέλο σας πρέπει να βρίσκεται σε μια από τις ακόλουθες μορφές:

  1. Ένα mlflow.pyfunc.PyFuncModel ή μια διεύθυνση URI που δείχνει σε ένα καταχωρημένο μοντέλο MLflow.
  2. Μια Python συνάρτηση που λαμβάνει εισαγωγές string και επιστρέφει μια seule string.
  3. Μια διεύθυνση URI αναπτύξεων MLflow.
  4. Ορίστε model=None και συμπεριλάβετε τις εξαγωγές του μοντέλου στα δεδομένα αξιολόγησης.

Ας δούμε ένα παράδειγμα χρησιμοποιώντας ένα καταχωρημένο μοντέλο MLflow:

import mlflow
import openai

<p>with mlflow.start_run():</p>

<p>system_prompt = "Απαντήστε στην ακόλουθη ερώτηση συντομως."</p>

<p>logged_model_info = mlflow.openai.log_model(
model="gpt-3.5-turbo",
task=openai.chat.completions,
artifact_path="model",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "{question}"},
],
)</p>

<p># Προετοιμασία δεδομένων αξιολόγησης
eval_data = pd.DataFrame({
"question": ["Τι είναι η μηχανική μάθηση;", "Εξηγήστε τα νευρωνικά δίκτυα."],
"ground_truth": [
"Η μηχανική μάθηση είναι ένα υποσύνολο της τεχνητής νοημοσύνης που επιτρέπει στα συστήματα να μάθουν και να βελτιωθούν από την εμπειρία χωρίς ρητή προγραμματισμό.",
"Τα νευρωνικά δίκτυα είναι υπολογιστικά συστήματα που εμπνέονται από τα βιολογικά νευρωνικά δίκτυα, αποτελούμενα από διασυνδεμένα σημεία που επεξεργάζονται και μεταδίδουν πληροφορίες.",
]
})</p>

<p># Αξιολόγηση του μοντέλου
results = mlflow.evaluate(
logged_model_info.model_uri,
eval_data,
targets="ground_truth",
model_type="question-answering",
)</p>

<p>print(f"Μέτρησεις αξιολόγησης: {results.metrics}")

Αυτό το παράδειγμα καταγράφει ένα μοντέλο OpenAI, προετοιμάζει δεδομένα αξιολόγησης και στη συνέχεια αξιολογεί το μοντέλο χρησιμοποιώντας τις ενσωματωμένες μετρήσεις του MLflow για εργασίες απάντησης σε ερωτήσεις.

Προσαρμοσμένες Μέτρησεις Αξιολόγησης

Το MLflow επιτρέπει την ορισμό προσαρμοσμένων μετρήσεων για την αξιολόγηση των LLM. Ας δούμε ένα παράδειγμα δημιουργίας μιας προσαρμοσμένης μετρικής για την αξιολόγηση του επαγγελματισμού των απαντήσεων:

from mlflow.metrics.genai import EvaluationExample, make_genai_metric

<p>professionalism = make_genai_metric(
name="professionalism",
definition="Μέτρηση του επίπεδου формάλια και κατάλληλης επικοινωνίας.",
grading_prompt=(
"Βαθμολογήστε τον επαγγελματισμό της απάντησης σε κλίμακα από 0 έως 4:\n"
"0: Πολύ άτυπο ή ακατάλληλο\n"
"1: Άτυπο αλλά σεβαστικό\n"
"2: Μετριοπαθές\n"
"3: Επαγγελματικό και κατάλληλο\n"
"4: Πολύ формάλλια και εμπειρικά διατυπωμένο"
),
examples=[
EvaluationExample(
input="Τι είναι η μηχανική μάθηση;",
output="Η μηχανική μάθηση είναι ένα υποσύνολο της τεχνητής νοημοσύνης που επιτρέπει στα συστήματα να μάθουν και να βελτιωθούν από την εμπειρία χωρίς ρητή προγραμματισμό.",
score=4,
justification="Η απάντηση είναι формάλλια, συντομη και επαγγελματικά διατυπωμένη.",
),
EvaluationExample(
input="Τι είναι η μηχανική μάθηση;",
output="Η μηχανική μάθηση είναι ένα πράγμα που κάνει τα ρομπότ να μάθουν.",
score=1,
justification="Η απάντηση είναι άτυπη και δεν παρέχει επαρκείς πληροφορίες.",
)
],
model="openai:/gpt-3.5-turbo-16k",
parameters={"temperature": 0.0},
aggregations=["mean", "variance"],
greater_is_better=True,
)</p>

<p># Χρήση της προσαρμοσμένης μετρικής στην αξιολόγηση
results = mlflow.evaluate(
logged_model_info.model_uri,
eval_data,
targets="ground_truth",
model_type="question-answering",
extra_metrics=[professionalism]
)</p>

<p>print(f"Μέτρηση επαγγελματισμού: {results.metrics['professionalism_mean']}")

Αυτή η προσαρμοσμένη μετρική χρησιμοποιεί το GPT-3.5-turbo για να βαθμολογήσει τον επαγγελματισμό των απαντήσεων, δείχνοντας πώς μπορείτε να αξιοποιήσετε τα LLM για την αξιολόγηση.

Προηγμένες Τεχνικές Αξιολόγησης LLM

Όσο τα LLM γίνονται πιο σύνθετα, così και οι τεχνικές αξιολόγησής τους. Ας εξερευνήσουμε κάποιες προηγμένες μεθόδους αξιολόγησης χρησιμοποιώντας το MLflow.

Αξιολόγηση RAG (Retrieval-Augmented Generation)

Τα συστήματα RAG συνδυάζουν τη δύναμη των μοντέλων ανάκτησης και γεννήσεων. Η αξιολόγηση των συστημάτων RAG απαιτεί την αξιολόγηση τόσο της ανάκτησης όσο και της γεννήτριας. Ας δούμε πώς να ρυθμίσουμε ένα σύστημα RAG και να το αξιολογήσουμε χρησιμοποιώντας το MLflow:

from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

<p># Φόρτωση και προετοιμασία εγγράφων
loader = WebBaseLoader(["https://mlflow.org/docs/latest/index.html"])
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)</p>

<p># Δημιουργία vector store
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)</p>

<p># Δημιουργία αλυσίδας RAG
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(),
return_source_documents=True
)</p>

<p># Συναρτήσεις αξιολόγησης
def evaluate_rag(question):</p>

<p>result = qa_chain({"query": question})
return result["result"], [doc.page_content for doc in result["source_documents"]]</p>

<p># Προετοιμασία δεδομένων αξιολόγησης
eval_questions = [
"Τι είναι η μηχανική μάθηση;",
"Πώς χειρίζεται το MLflow την παρακολούθηση πειραμάτων;",
"Ποια είναι τα κύρια συστατικά του MLflow;",
]</p>

<p># Αξιολόγηση χρησιμοποιώντας το MLflow
with mlflow.start_run():</p>

<p>for question in eval_questions:</p>

<p>answer, sources = evaluate_rag(question)</p>

<p>mlflow.log_param(f"question", question)
mlflow.log_metric("num_sources", len(sources))
mlflow.log_text(answer, f"answer_{question}.txt")</p>

<p>for i, source in enumerate(sources):</p>

<p>mlflow.log_text(source, f"source_{question}_{i}.txt")</p>

<p># Καταγραφή προσαρμοσμένων μετρήσεων
mlflow.log_metric("avg_sources_per_question", sum(len(evaluate_rag(q)[1]) for q in eval_questions) / len(eval_questions))

Αυτό το παράδειγμα ρυθμίζει ένα σύστημα RAG χρησιμοποιώντας LangChain και Chroma, και στη συνέχεια το αξιολογεί καταγράφοντας ερωτήσεις, απαντήσεις, ανακτημένες πηγές και προσαρμοσμένες μετρήσεις στο MLflow.

Αξιολόγηση Στρατηγικής Chunking

Ο τρόπος με τον οποίο χωρίζετε τα έγγραφα σας μπορεί να επηρεάσει σημαντικά την απόδοση του RAG. Το MLflow μπορεί να σας βοηθήσει να αξιολογήσετε διαφορετικές στρατηγικές chunking:

import mlflow
from langchain.text_splitter import CharacterTextSplitter, TokenTextSplitter

<p>def evaluate_chunking_strategy(documents, chunk_size, chunk_overlap, splitter_class):</p>

<p>splitter = splitter_class(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
chunks = splitter.split_documents(documents)</p>

<p>with mlflow.start_run():</p>

<p>mlflow.log_param("chunk_size", chunk_size)
mlflow.log_param("chunk_overlap", chunk_overlap)
mlflow.log_param("splitter_class", splitter_class.__name__)</p>

<p>mlflow.log_metric("num_chunks", len(chunks))
mlflow.log_metric("avg_chunk_length", sum(len(chunk.page_content) for chunk in chunks) / len(chunks))</p>

<p># Αξιολόγηση απόδοσης ανάκτησης (απλοποιημένη)
correct_retrievals = sum(1 for _ in range(100) if simulate_retrieval(chunks))
mlflow.log_metric("retrieval_accuracy", correct_retrievals / 100)</p>

<p># Αξιολόγηση διαφορετικών στρατηγικών
for chunk_size in [500, 1000, 1500]:</p>

<p>for chunk_overlap in [0, 50, 100]:</p>

<p>for splitter_class in [CharacterTextSplitter, TokenTextSplitter]:</p>

<p>evaluate_chunking_strategy(documents, chunk_size, chunk_overlap, splitter_class)</p>

<p># Σύγκριση αποτελεσμάτων
best_run = mlflow.search_runs(order_by=["metrics.retrieval_accuracy DESC"]).iloc[0]
print(f"Καλύτερη στρατηγική chunking: {best_run['params.splitter_class']} με μέγεθος {best_run['params.chunk_size']} και υπέρβαση {best_run['params.chunk_overlap']}")

Αυτό το σενάριο αξιολογεί διαφορετικές συνδυασίες μεγεθών chunk, υπερβάσεων και μεθόδων διαίρεσης, καταγράφοντας τα αποτελέσματα στο MLflow για εύκολη σύγκριση.

Οπτικοποίηση Αποτελεσμάτων Αξιολόγησης LLM

Το MLflow προσφέρει διάφορους τρόπους για την οπτικοποίηση των αποτελεσμάτων αξιολόγησης των LLM. Ας δούμε μερικές τεχνικές:

Χρήση της Διεπαφής MLflow

Μετά την εκτέλεση των αξιολογήσεων, μπορείτε να χρησιμοποιήσετε τη διεπαφή MLflow για να οπτικοποιήσετε τα αποτελέσματα:

  1. Ξεκινήστε τη διεπαφή MLflow: mlflow ui
  2. Ανοίξτε ένα πρόγραμμα περιήγησης και μεταβείτε στο http://localhost:5000
  3. Επιλέξτε το πείραμα και τις εκτελέσεις σας για να δείτε μετρήσεις, παράμετρους και είδη

Προσαρμοσμένες Οπτικοποιήσεις

Μπορείτε να δημιουργήσετε προσαρμοσμένες οπτικοποιήσεις των αποτελεσμάτων αξιολόγησής σας χρησιμοποιώντας βιβλιοθήκες όπως Matplotlib ή Plotly, και στη συνέχεια να τις καταγράψετε ως είδη:

import matplotlib.pyplot as plt
import mlflow

<p>def plot_metric_comparison(metric_name, run_ids):</p>

<p>plt.figure(figsize=(10, 6))
for run_id in run_ids:</p>

<p>run = mlflow.get_run(run_id)
metric_values = mlflow.get_metric_history(run_id, metric_name)
plt.plot([m.step for m in metric_values], [m.value for m in metric_values], label=run.data.tags.get("mlflow.runName", run_id))</p>

<p>plt.title(f"Σύγκριση {metric_name}")
plt.xlabel("Βήμα")
plt.ylabel(metric_name)
plt.legend()</p>

<p># Αποθήκευση και καταγραφή του πλάνου
plt.savefig(f"{metric_name}_comparison.png")
mlflow.log_artifact(f"{metric_name}_comparison.png")</p>

<p># Χρήση
with mlflow.start_run():</p>

<p>plot_metric_comparison("answer_relevance", ["run_id_1", "run_id_2", "run_id_3"])

Αυτή η συνάρτηση δημιουργεί ένα γραφικό σύγκρισης μιας μετρικής σε πολλαπλές εκτελέσεις και την καταγράφει ως είδος.

div]:bg-bg-300 [&_pre]:-mr-4 md:[&pre]:-mr-9″>

Εναλλακτικές Λύσεις στο Ανοιχτό MLflow

Υπάρχουν πολλές εναλλακτικές λύσεις στο ανοιχτό MLflow για τη διαχείριση των ροών μηχανικής μάθησης, κάθε μία με μοναδικά χαρακτηριστικά και ενσωματώσεις.

Διαχειριζόμενο MLflow από Databricks

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

Azure Machine Learning

Το Azure Machine Learning προσφέρει μια ολοκληρωμένη λύση μηχανικής μάθησης στο cloud πλατφόρμα Azure. Παρέχει συμβατότητα με συστατικά MLflow όπως το μητρώο μοντέλων και τον παρακολουθιστή πειραμάτων, αν και δεν βασίζεται στο MLflow.

Αφιερωμένα Πλαίσια ML

Πολλές εταιρείες προσφέρουν διαχειριζόμενες λύσεις ML με ποικίλες λειτουργίες:

  • neptune.ai: Εστιάζει στην παρακολούθηση πειραμάτων και διαχείριση μοντέλων.
  • Weights & Biases: Προσφέρει εκτεταμένη παρακολούθηση πειραμάτων, εκδόσεις συνόλων δεδομένων και εργαλεία συνεργασίας.
  • Comet ML: Παρέχει παρακολούθηση πειραμάτων, παρακολούθηση παραγωγής μοντέλων και καταγραφή δεδομένων.
  • Valohai: Ειδικεύεται σε πipelines μηχανικής μάθησης και ορchestration.

Metaflow

Το Metaflow, αναπτυγμένο από τη Netflix (NFLX ), είναι ένα ανοιχτό πλαίσιο για την ορchestration ροών δεδομένων και πipelines ML. Αν και excels στη διαχείριση μεγάλης κλίμακας αναπτύξεων, λείπει από ολοκληρωμένες λειτουργίες παρακολούθησης πειραμάτων και διαχείρισης μοντέλων σε σύγκριση με το MLflow.

Amazon SageMaker και Google’s Vertex AI

Και το Amazon SageMaker (AMZN ) και το Google’s Vertex AI (GOOGL ) προσφέρουν ολοκληρωμένες λύσεις MLOps ενσωματωμένες στις αντίστοιχες cloud πλατφόρμες. Αυτές οι υπηρεσίες προσφέρουν ροβούστα εργαλεία για την ανάπτυξη, εκπαίδευση και ανάπτυξη μοντέλων μηχανικής μάθησης σε κλίμακα.

Λεπτομερής Σύγκριση

Διαχειριζόμενο MLflow vs. Ανοιχτό MLflow

Το διαχειριζόμενο MLflow από Databricks προσφέρει πολλά πλεονεκτήματα σε σύγκριση με την ανοιχτή έκδοση, συμπεριλαμβανομένων:

  • Ρύθμιση και Ανάπτυξη: Άρτια ενσωμάτωση με το οικοσύστημα της Databricks μειώνει τον χρόνο ρύθμισης και προσπάθεια.
  • Κλιμακωσιμότητα: Ικανότητα να χειρίζεται μεγάλης κλίμακας φορτία μηχανικής μάθησης με ευκολία.
  • Ασφάλεια και Διαχείριση: Εξ ολοκλήρου ασφάλεια και διαχείριση με χαρακτηριστικά όπως έλεγχος πρόσβασης με βάση ρόλους (RBAC) και κρυπτογράφηση δεδομένων.
  • Ενσωμάτωση: Βαθιά ενσωμάτωση με τις υπηρεσίες της Databricks, αυξάνοντας την διαλειτουργικότητα και τη λειτουργικότητα.
  • Αποθήκευση Δεδομένων και Αναπαραγωγή: Αυτοματοποιημένες στρατηγικές αναπαραγωγής για την ασφάλεια και την αξιοπιστία των δεδομένων.
  • Κόστος: Οι χρήστες πληρώνουν για την πλατφόρμα, την αποθήκευση και τις υπολογιστικές πόρους.
  • Υποστήριξη και Συντήρηση: Αφιερωμένη υποστήριξη και συντήρηση από τη Databricks.

Συμπέρασμα

Η παρακολούθηση των Μεγάλων Γλωσσικών Μοντέλων με MLflow παρέχει ένα ροβούστο πλαίσιο για τη διαχείριση των πολυπλοκότητων της ανάπτυξης, αξιολόγησης και ανάπτυξης των LLM. Ακολουθώντας τις besten πρακτικές και αξιοποιώντας τις προηγμένες λειτουργίες που περιγράφονται σε αυτόν τον οδηγό, μπορείτε να δημιουργήσετε πιο οργανωμένα, αναπαραγώγιμα και ενημερωμένα πειράματα LLM.

Θυμηθείτε ότι ο τομέας των LLM εξελίσσεται ταχύτατα, και νέες τεχνικές αξιολόγησης και παρακολούθησης εμφανίζονται συνεχώς. Μείνετε ενημερωμένοι με τις τελευταίες εκδόσεις του MLflow και την έρευνα για LLM για να συνεχίσετε να βελτιώνετε τις διαδικασίες παρακολούθησης και αξιολόγησής σας.

Καθώς εφαρμόζετε αυτές τις τεχνικές στα προγράμματά σας, θα αναπτύξετε μια βαθύτερη κατανόηση της συμπεριφοράς και της απόδοσης των LLM, οδηγώντας σε πιο αποτελεσματικά και αξιόπιστα γλωσσικά μοντέλα.

Έχω περάσει τα τελευταία πέντε χρόνια βυθισμένος στον συναρπαστικό κόσμο της Μηχανικής Μάθησης και του Βαθιάς Μάθησης. Η δέσμευσή μου και η εξειδίκευσή μου με οδήγησαν να συμβάλλω σε πάνω από 50 διαφορετικά projects μηχανικής λογισμικού, με ιδιαίτερη έμφαση στο AI/ML. Η συνεχής περιέργειά μου με έχει οδηγήσει επίσης προς την Επεξεργασία Φυσικής Γλώσσας, ένα πεδίο που είμαι πρόθυμος να εξερευνήσω περαιτέρω.