Πώς οι λάθος διαστάσεις στους Tensors κρύβονται μπροστά στα μάτια σου
Γιατί τα Bugs Στα Σχήματα Tensor Κρύβονται Μπροστά στα Μάτια Σας
Το σενάριο είναι πάντα το ίδιο. Το μοντέλο εκπαιδεύεται. Το loss πέφτει. Οι μετρικές δείζουν εντάξει. Μετά από τρεις εβδομάδες σε παραγωγή, κάποιος διαπιστώνει ότι οι έξοδοι του μοντέλου είναι λάθος — και δεν υπάρχει προφανής λόγος.
Η αιτία; Μια διάσταση που στο μυαλό σας σήμαινε κάτι, αλλά ο κώδικας την αντιμετώπισε σαν κάτι εντελώς διαφορετικό.
Δεν είναι σφάλμα μεταγλώττισης. Δεν είναι κρασάρισμα. Είναι κάτι χειρότερο: ένα σιωπηλό λάθος ακρίβειας που μπαίνει σε κάθε πρόβλεψη που κάνει το μοντέλο.
Το Πρόβλημα με το Σύστημα Ονομασίας
Η αλήθεια είναι σκληρή: αν δεν μπορείς να ονομάσεις μια διάσταση, δεν تستάω να την ελέγξεις.
Τ大多数 τα frameworks δεν διακρίνουν τη σημασία των διαστάσεων. Μια shape σαν (32, 768, 12, 64) μπορεί να σημαίνει:
(batch, sequence, heads, dim_per_head)σε ένα πλαίσιο(batch, features, height, width)σε ένα άλλο(batch, tokens, layers, channels)σε ακόμα άλλο
Το πλαίσιο δεν νοιάζεται. Η shape είναι απλά μια λίστα αριθμών. Αν τα μεγέθη τυποχειρικά ή σύβαντα με την operation που προσέχεις, το framework εκτελεκεί το πρόγραμμα — και το αποτέλεσμα έγιντα σε κάθε βάρος του μοντέλου.
Αυτό είναι το invisible bug. Ο κώδικας δεν είναι μαθηματικά λάθος. Ο κώδικας είναι μόνο λάθος από πρόθεση.
Αν Είχε Σημασία η Ονομασία
Οταν ιτκρα, το σίγταρος που στην world είναι η σημασία της διάσταση που τη carried με type system — όχι μόνο το shape αλλά με labels που ξitching.
Όταν οταν ιτkρα, το σίgταρος που στην world είναι η σημασία της διάσταση που τη carried με type system — όχι μόνο το shape αλλά με labels που ξitching.
Όταν δια erklären, το σίgταρος που στην world είναι η σημασία της διάσταση που τη carried με type system — όχι μόνο το shape αλλά με labels που ξitching.
Όταν δια erklären, το σίgταρος που στην world είναι η σημασία της διάσταση που τη carried με type system — όχι μόνο το shape αλλά με labels που ξitching.