ORTTrainingSession
Objective-C
@interface ORTTrainingSession : NSObject
Swift
class ORTTrainingSession : NSObject
Trainer-Klasse, die Methoden zum Trainieren, Bewerten und Optimieren von ONNX-Modellen bereitstellt.
Die Trainingssitzung erfordert vier Trainingsartefakte
- Trainings-ONNX-Modell
- Evaluierungs-ONNX-Modell (optional)
- Optimierer-ONNX-Modell
- Checkpoint-Verzeichnis
onnxruntime-training python utility kann verwendet werden, um die oben genannten Trainingsartefakte zu generieren.
Verfügbar seit 1.16.
Hinweis
Diese Klasse ist nur verfügbar, wenn die Trainings-APIs aktiviert sind.-
Nicht verfügbar
Deklaration
Objective-C
- (instancetype)init NS_UNAVAILABLE; -
Erstellt eine Trainingssitzung aus den Trainingsartefakten, die zum Starten oder Fortsetzen des Trainings verwendet werden kann.
Der Initialisierer instanziiert die Trainingssitzung basierend auf den bereitgestellten Umgebung und Sitzungsoptionen, die zum Starten oder Fortsetzen des Trainings von einem gegebenen Checkpoint-Zustand verwendet werden können. Der Checkpoint-Zustand repräsentiert die Parameter der Trainingssitzung, die bei Bedarf auf das in den Sitzungsoptionen angegebene Gerät verschoben werden.
Hinweis
Beachten Sie, dass die mit einem Checkpoint-Zustand erstellte Trainingssitzung diesen Zustand verwendet, um den gesamten Trainingszustand (einschließlich Modellparameter, seiner Gradienten, der Optimiererzustände und der Eigenschaften) zu speichern. Die Trainingssitzung behält einen starken (besitzenden) Zeiger auf den Checkpoint-Zustand.
Deklaration
Objective-C
- (nullable instancetype)initWithEnv:(nonnull ORTEnv *)env sessionOptions: (nullable ORTSessionOptions *)sessionOptions checkpoint:(nonnull ORTCheckpoint *)checkpoint trainModelPath:(nonnull NSString *)trainModelPath evalModelPath:(nullable NSString *)evalModelPath optimizerModelPath:(nullable NSString *)optimizerModelPath error:(NSError *_Nullable *_Nullable)error;Swift
init(env: ORTEnv, sessionOptions: ORTSessionOptions?, checkpoint: ORTCheckpoint, trainModelPath: String, evalModelPath: String?, optimizerModelPath: String?) throwsParameter
envDie
ORTEnvInstanz, die für die Trainingssitzung verwendet werden soll.sessionOptionsDie optionalen
ORTSessionOptions, die für die Trainingssitzung verwendet werden sollen.CheckpointTrainingszustände, die als Ausgangspunkt für das Training dienen.
trainModelPathDer Pfad zum Trainings-ONNX-Modell.
evalModelPathDer Pfad zum Evaluierungs-ONNX-Modell.
optimizerModelPathDer Pfad zum Optimierer-ONNX-Modell, das zur Durchführung des Gradientenabstiegs verwendet wird.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Instanz oder nil, wenn ein Fehler auftritt.
-
Führt einen Trainingsschritt durch, der einem Forward- und Backward-Durchlauf in einem einzigen Schritt entspricht.
Der Trainingsschritt berechnet die Ausgaben des Trainingsmodells und die Gradienten der trainierbaren Parameter für die gegebenen Eingabewerte. Der Trainingsschritt wird basierend auf dem Trainingsmodell durchgeführt, das der Trainingssitzung zur Verfügung gestellt wurde. Er entspricht der Ausführung eines Forward- und Backward-Durchlaufs in einem einzigen Schritt. Die berechneten Gradienten werden im Zustand der Trainingssitzung gespeichert, damit sie später von
optimizerStepverbraucht werden können. Die Gradienten können durch Aufrufen der MethodelazyResetGradverzögert zurückgesetzt werden.Deklaration
Parameter
inputsDie Eingabewerte für das Trainingsmodell.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Ausgabewerte des Trainingsmodells.
-
Führt einen Evaluierungsschritt durch, der die Ausgaben des Evaluierungsmodells für die gegebenen Eingaben berechnet. Der Evaluierungsschritt wird basierend auf dem Evaluierungsmodell durchgeführt, das der Trainingssitzung zur Verfügung gestellt wurde.
Deklaration
Parameter
inputsDie Eingabewerte für das Evaluierungsmodell.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Ausgabewerte des Evaluierungsmodells.
-
Setzt die Gradienten aller trainierbaren Parameter verzögert auf Null zurück.
Das Aufrufen dieser Methode setzt den internen Zustand der Trainingssitzung so, dass die Gradienten der trainierbaren Parameter im ORTCheckpoint zurückgesetzt werden, bevor die neuen Gradienten bei der nächsten Aufforderung der Methode
trainStepberechnet werden.Deklaration
Objective-C
- (BOOL)lazyResetGradWithError:(NSError *_Nullable *_Nullable)error;Swift
func lazyResetGrad() throwsParameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn die Gradienten erfolgreich zurückgesetzt wurden, NO andernfalls.
-
Führt die Gewichtsaktualisierungen für die trainierbaren Parameter unter Verwendung des Optimierermodells durch. Der Optimiererschritt wird basierend auf dem Optimierermodell durchgeführt, das der Trainingssitzung zur Verfügung gestellt wurde. Die aktualisierten Parameter werden im Trainingszustand gespeichert, damit sie vom nächsten Aufruf der Methode
trainStepverwendet werden können.Deklaration
Objective-C
- (BOOL)optimizerStepWithError:(NSError *_Nullable *_Nullable)error;Swift
func optimizerStep() throwsParameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn der Optimiererschritt erfolgreich durchgeführt wurde, NO andernfalls.
-
Gibt die Namen der Benutzereingaben für das Trainingsmodell zurück, die mit dem
ORTValue, der antrainStepübergeben wurde, verknüpft werden können.Deklaration
Objective-C
- (nullable NSArray<NSString *> *)getTrainInputNamesWithError: (NSError *_Nullable *_Nullable)error;Swift
func getTrainInputNames() throws -> [String]Parameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Namen der Benutzereingaben für das Trainingsmodell.
-
Gibt die Namen der Benutzereingaben für das Evaluierungsmodell zurück, die mit dem
ORTValue, der anevalStepübergeben wurde, verknüpft werden können.Deklaration
Objective-C
- (nullable NSArray<NSString *> *)getEvalInputNamesWithError: (NSError *_Nullable *_Nullable)error;Swift
func getEvalInputNames() throws -> [String]Parameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Namen der Benutzereingaben für das Evaluierungsmodell.
-
Gibt die Namen der Benutzerausgaben für das Trainingsmodell zurück, die mit dem
ORTValue, der vontrainStepzurückgegeben wurde, verknüpft werden können.Deklaration
Objective-C
- (nullable NSArray<NSString *> *)getTrainOutputNamesWithError: (NSError *_Nullable *_Nullable)error;Swift
func getTrainOutputNames() throws -> [String]Parameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Namen der Benutzerausgaben für das Trainingsmodell.
-
Gibt die Namen der Benutzerausgaben für das Evaluierungsmodell zurück, die mit dem
ORTValue, der vonevalStepzurückgegeben wurde, verknüpft werden können.Deklaration
Objective-C
- (nullable NSArray<NSString *> *)getEvalOutputNamesWithError: (NSError *_Nullable *_Nullable)error;Swift
func getEvalOutputNames() throws -> [String]Parameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die Namen der Benutzerausgaben für das Evaluierungsmodell.
-
Registriert einen linearen Lernraten-Scheduler für die Trainingssitzung.
Der Scheduler verringert allmählich die Lernrate vom Anfangswert auf Null im Laufe des Trainings. Die Verringerung erfolgt durch Multiplikation der aktuellen Lernrate mit einem linear aktualisierten Faktor. Vor der Verringerung wird die Lernrate während einer Aufwärmphase allmählich von Null auf den Anfangswert erhöht.
Deklaration
Objective-C
- (BOOL) registerLinearLRSchedulerWithWarmupStepCount:(int64_t)warmupStepCount totalStepCount:(int64_t)totalStepCount initialLr:(float)initialLr error:(NSError *_Nullable *_Nullable) error;Swift
func registerLinearLRScheduler(withWarmupStepCount warmupStepCount: Int64, totalStepCount: Int64, initialLr: Float) throwsParameter
warmupStepCountDie Anzahl der Schritte für das lineare Aufwärmen.
totalStepCountDie Gesamtzahl der Schritte für den linearen Abfall.
initialLrDie anfängliche Lernrate.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn der Scheduler erfolgreich registriert wurde, NO andernfalls.
-
Aktualisiert die Lernrate basierend auf dem registrierten Lernraten-Scheduler.
Führt einen Scheduler-Schritt aus, der die Lernrate aktualisiert, die von der Trainingssitzung verwendet wird. Diese Funktion sollte typischerweise vor dem Aufrufen des Optimiererschritts für jede Runde oder nach Bedarf aufgerufen werden, um die von der Trainingssitzung verwendete Lernrate zu aktualisieren.
Hinweis
Ein gültiger vordefinierter Lernraten-Scheduler muss zuerst registriert werden, um diese Methode aufzurufen.
Deklaration
Objective-C
- (BOOL)schedulerStepWithError:(NSError *_Nullable *_Nullable)error;Swift
func schedulerStep() throwsParameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn der Scheduler-Schritt erfolgreich durchgeführt wurde, NO andernfalls.
-
Gibt die aktuelle Lernrate zurück, die von der Trainingssitzung verwendet wird.
Deklaration
Objective-C
- (float)getLearningRateWithError:(NSError *_Nullable *_Nullable)error;Swift
func getLearningRate() throws -> FloatParameter
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Die aktuelle Lernrate oder 0.0f, wenn ein Fehler auftritt.
-
Legt die Lernrate fest, die von der Trainingssitzung verwendet wird.
Die aktuelle Lernrate wird von der Trainingssitzung beibehalten und kann durch Aufrufen dieser Methode mit der gewünschten Lernrate überschrieben werden. Diese Funktion sollte nicht verwendet werden, wenn ein gültiger Lernraten-Scheduler registriert ist. Sie sollte entweder verwendet werden, um die Lernrate festzulegen, die von einem benutzerdefinierten Lernraten-Scheduler abgeleitet wurde, oder um eine konstante Lernrate festzulegen, die während der gesamten Trainingssitzung verwendet werden soll.
Hinweis
Sie legt nicht die anfängliche Lernrate fest, die von den vordefinierten Lernraten-Schedulern benötigt werden könnte. Um die anfängliche Lernrate für Lernraten-Scheduler festzulegen, verwenden Sie die Methode
registerLinearLRScheduler.Deklaration
Objective-C
- (BOOL)setLearningRate:(float)lr error:(NSError *_Nullable *_Nullable)error;Swift
func setLearningRate(_ lr: Float) throwsParameter
lrDie Lernrate, die von der Trainingssitzung verwendet werden soll.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn die Lernrate erfolgreich festgelegt wurde, NO andernfalls.
-
Lädt die Modellparameter der Trainingssitzung aus einem zusammenhängenden Puffer.
Deklaration
Objective-C
- (BOOL)fromBufferWithValue:(nonnull ORTValue *)buffer error:(NSError *_Nullable *_Nullable)error;Swift
func fromBuffer(with buffer: ORTValue) throwsParameter
bufferZusammenhängender Puffer, aus dem die Parameter geladen werden sollen.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn die Parameter erfolgreich geladen wurden, NO andernfalls.
-
Gibt einen zusammenhängenden Puffer zurück, der eine Kopie aller Trainingszustandsparameter enthält.
Deklaration
Objective-C
- (nullable ORTValue *)toBufferWithTrainable:(BOOL)onlyTrainable error: (NSError *_Nullable *_Nullable)error;Swift
func toBuffer(withTrainable onlyTrainable: Bool) throws -> ORTValueParameter
onlyTrainableWenn YES, gibt einen Puffer zurück, der nur die trainierbaren Parameter enthält, andernfalls gibt einen Puffer zurück, der alle Parameter enthält.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
Ein zusammenhängender Puffer, der eine Kopie aller Trainingszustandsparameter enthält.
-
Exportiert das Modell der Trainingssitzung, das für die Inferenz verwendet werden kann.
Wenn der Trainingssitzung ein Evaluierungsmodell zur Verfügung gestellt wurde, kann die Trainingssitzung ein Inferenzmodell generieren, wenn sie die Ausgaben des Inferenzgraphen kennt. Die Eingabe-Inferenzgraphenausgaben werden verwendet, um das Evaluierungsmodell zu beschneiden, sodass die Ausgaben des Inferenzmodells mit den bereitgestellten Ausgaben übereinstimmen. Das exportierte Modell wird am bereitgestellten Pfad gespeichert und kann für die Inferenz mit
ORTSessionverwendet werden.Hinweis
Die Methode lädt das Evaluierungsmodell vom im Initialisierer angegebenen Pfad neu und erwartet, dass dieser Pfad gültig ist.
Deklaration
Objective-C
- (BOOL) exportModelForInferenceWithOutputPath:(nonnull NSString *)inferenceModelPath graphOutputNames: (nonnull NSArray<NSString *> *)graphOutputNames error:(NSError *_Nullable *_Nullable)error;Swift
func exportModelForInference(withOutputPath inferenceModelPath: String, graphOutputNames: [String]) throwsParameter
inferenceModelPathDer Pfad zum serialisierten Inferenzmodell.
graphOutputNamesDie Namen der Ausgaben, die im Inferenzmodell benötigt werden.
fehlerOptionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.
Rückgabewert
YES, wenn das Inferenzmodell erfolgreich exportiert wurde, NO andernfalls.
Auf GitHub anzeigen
ORTTrainingSession Klassenreferenz