Εξερεύνηση δεδομένων σε μόνιμο πυρήνα
Αυτός ο οδηγός δείχνει πώς να φορτώνει ένας πράκτορας κάτι ακριβό μία φορά και μετά να του θέτει πολλές ερωτήσεις, αντί να πληρώνει το κόστος της φόρτωσης σε κάθε ερώτηση.
Το εργαλείο eval εκτελεί έναν μόνιμο διερμηνευτή. Οι μεταβλητές, τα imports και τα δεδομένα που έχουν φορτωθεί επιβιώνουν ανάμεσα στις κλήσεις.
Γιατί να μην εκτελέσετε απλώς ένα σενάριο
Ενότητα με τίτλο «Γιατί να μην εκτελέσετε απλώς ένα σενάριο»Ένα εφάπαξ python -c πληρώνει την προετοιμασία σε κάθε ερώτηση. Η φόρτωση ενός dataframe κοστίζει δευτερόλεπτα και εκατό megabyte· η σχεδίασή του κοστίζει χιλιοστά του δευτερολέπτου. Όταν κάθε ερώτηση κοστίζει τη φόρτωση, ένας πράκτορας κάνει λιγότερες ερωτήσεις από όσες θα έπρεπε — και κάθε απάντηση επιστρέφει ως κείμενο που πρέπει μετά να ξαναναλύσει.
Φορτώστε μία φορά και μετά ρωτήστε
Ενότητα με τίτλο «Φορτώστε μία φορά και μετά ρωτήστε»Φόρτωσε το
data/runs.csvκαι πες μου τη διάρκεια p95 ανά πράκτορα.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Η τελευταία έκφραση επιστρέφεται όπως σε ένα notebook, οπότε το len(runs) αναφέρει τον αριθμό των γραμμών χωρίς print.
Έπειτα, σε ξεχωριστή κλήση:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()Το runs είναι ακόμη φορτωμένο. Ένα frame της pandas επιστρέφεται αποδοσμένο ως πίνακας και όχι ως αναπαράσταση.
Τα γραφήματα φτάνουν στη συνομιλία
Ενότητα με τίτλο «Τα γραφήματα φτάνουν στη συνομιλία»import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Τα σχήματα συλλαμβάνονται μετά το κελί και επιστρέφονται ως εικόνες, τις οποίες αποδίδει η μεταγραφή. Βλέπετε το γράφημα· το βλέπει και ο πράκτορας.
Τα σχήματα κλείνουν μετά τη σύλληψη. Ένα σχήμα που δεν συλλέχθηκε θα ξανασχεδιαζόταν και θα ξαναστέλνονταν και από το επόμενο κελί, οπότε μια συνεδρία πέντε κελιών θα εξέπεμπε το πρώτο γράφημα πέντε φορές.
Τα ιδιώματα που θα πληκτρολογούσατε ούτως ή άλλως
Ενότητα με τίτλο «Τα ιδιώματα που θα πληκτρολογούσατε ούτως ή άλλως»Αυτά ξαναγράφονται σε απλό κώδικα αντί να προκαλούν σφάλμα:
| Πληκτρολογείτε | Τι συμβαίνει |
|---|---|
%pip install x |
Εκτελεί το pip και μετά καθαρίζει την προσωρινή μνήμη αρθρωμάτων, ώστε το επόμενο import να το δει |
%cd path |
os.chdir |
!command |
Μια καταγεγραμμένη υποδιεργασία |
%%bash |
Το υπόλοιπο του κελιού ως σενάριο κελύφους |
%%timeit |
1000 χρονομετρημένες εκτελέσεις |
Η εκκαθάριση της προσωρινής μνήμης από το %pip είναι αυτή που έχει σημασία: η εγκατάσταση σε έναν ζωντανό διερμηνευτή δεν κάνει τίποτα για ένα άρθρωμα που έχει ήδη εισαχθεί, οπότε χωρίς αυτήν η έκδοση που μόλις εγκαταστήσατε δεν είναι αυτή που εκτελείται.
Κλήση των δικών σας εργαλείων μέσα από ένα κελί
Ενότητα με τίτλο «Κλήση των δικών σας εργαλείων μέσα από ένα κελί»paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...Το tool(name, args) επανεισέρχεται στο μητρώο εργαλείων του ίδιου του πράκτορα. Αυτό σημαίνει ότι ένα κελί μπορεί να απλωθεί σε εκατό αρχεία ή να αναθέσει μέσω του task, χωρίς το μοντέλο να ξοδεύει έναν γύρο ανά στοιχείο.
Μια κλήση μέσω γέφυρας αναστέλλει το χρονικό όριο του κελιού όσο εκκρεμεί. Ο προϋπολογισμός μετρά την αδράνεια, όχι τον πραγματικό χρόνο — ένα κελί που απλώνεται σε υποπράκτορες και περιμένει τέσσερα λεπτά δεν έχει κολλήσει, και ο τερματισμός του στη μέση της διασποράς θα έχανε όλη την κατάσταση του πυρήνα.
Ξεκινώντας από την αρχή
Ενότητα με τίτλο «Ξεκινώντας από την αρχή»eval(code: "…", reset: true, description: "Start a clean interpreter")Πετάει τον διερμηνευτή και ξεκινά έναν καθαρό. Ό,τι έχει φορτωθεί χάνεται, κι αυτός είναι ο σκοπός.
Πού εκτελείται ο πυρήνας
Ενότητα με τίτλο «Πού εκτελείται ο πυρήνας»Μέσα στο περίβλημα της συνομιλίας όταν αυτή έχει ένα, αλλιώς στον κεντρικό υπολογιστή.
Ένας μόνιμος διερμηνευτής που τον οδηγεί ένα μοντέλο διαβάζοντας ένα μη αξιόπιστο αποθετήριο είναι ακριβώς ο λόγος ύπαρξης της εκτέλεσης αποκλειστικά μέσα σε περίβλημα: μια εφάπαξ κλήση bash τουλάχιστον τελειώνει, ενώ ένας πυρήνας είναι ένα κέλυφος που θυμάται.
Δεν εκκινεί περίβλημα για να φτάσει εκεί — ο ίδιος κανόνας που εμποδίζει μια καρτέλα σταθμού να ξεκινήσει αυτόματα. Αν θέλετε ο πυρήνας μέσα σε περίβλημα, ανοίξτε πρώτα το κέλυφος της συνομιλίας. Δείτε Δώστε σε πράκτορα μηχανή για δοκιμές.
- Ένα κελί τη φορά ανά πυρήνα. Δύο κελιά που συναγωνίζονται σε έναν διερμηνευτή είναι δύο μισά από δύο προγράμματα, αλληλοδιαπλεγμένα σε ένα namespace.
- Η έξοδος είναι περιορισμένη. Ένα κελί μέσα σε βρόχο εκτυπώσεων κόβεται αντί να του επιτραπεί να γεμίσει το παράθυρο πλαισίου.
- Τέσσερις εικόνες ανά κελί. Ένας βρόχος σχεδίασης μπορεί να παράγει ένα σχήμα ανά επανάληψη, και κάθε εικόνα είναι ένα μεγάλο σταθερό κόστος στο αίτημα που τη μεταφέρει.
- Ο πυρήνας πεθαίνει μαζί με την εκτέλεση. Ένας πυρήνας που κρατά ακόμη ένα dataframe αφού τελείωσε η συνομιλία είναι διαρροή.
Σχετικά
Ενότητα με τίτλο «Σχετικά»- Sandbox και ασφάλεια — τι σημαίνει εδώ το «απομονωμένο»
- Δώστε σε πράκτορα μηχανή για δοκιμές — το άνοιγμα του περιβλήματος
- Ενσωματωμένα εργαλεία πράκτορα — τα ορίσματα