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

  1. Trainings-ONNX-Modell
  2. Evaluierungs-ONNX-Modell (optional)
  3. Optimierer-ONNX-Modell
  4. 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?) throws

    Parameter

    env

    Die ORTEnv Instanz, die für die Trainingssitzung verwendet werden soll.

    sessionOptions

    Die optionalen ORTSessionOptions, die für die Trainingssitzung verwendet werden sollen.

    Checkpoint

    Trainingszustände, die als Ausgangspunkt für das Training dienen.

    trainModelPath

    Der Pfad zum Trainings-ONNX-Modell.

    evalModelPath

    Der Pfad zum Evaluierungs-ONNX-Modell.

    optimizerModelPath

    Der Pfad zum Optimierer-ONNX-Modell, das zur Durchführung des Gradientenabstiegs verwendet wird.

    fehler

    Optionale 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 optimizerStep verbraucht werden können. Die Gradienten können durch Aufrufen der Methode lazyResetGrad verzögert zurückgesetzt werden.

    Deklaration

    Objective-C

    - (nullable NSArray<ORTValue *> *)
        trainStepWithInputValues:(nonnull NSArray<ORTValue *> *)inputs
                           error:(NSError *_Nullable *_Nullable)error;

    Swift

    func trainStep(withInputValues inputs: [ORTValue]) throws -> [ORTValue]

    Parameter

    inputs

    Die Eingabewerte für das Trainingsmodell.

    fehler

    Optionale 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

    Objective-C

    - (nullable NSArray<ORTValue *> *)
        evalStepWithInputValues:(nonnull NSArray<ORTValue *> *)inputs
                          error:(NSError *_Nullable *_Nullable)error;

    Swift

    func evalStep(withInputValues inputs: [ORTValue]) throws -> [ORTValue]

    Parameter

    inputs

    Die Eingabewerte für das Evaluierungsmodell.

    fehler

    Optionale 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 trainStep berechnet werden.

    Deklaration

    Objective-C

    - (BOOL)lazyResetGradWithError:(NSError *_Nullable *_Nullable)error;

    Swift

    func lazyResetGrad() throws

    Parameter

    fehler

    Optionale 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 trainStep verwendet werden können.

    Deklaration

    Objective-C

    - (BOOL)optimizerStepWithError:(NSError *_Nullable *_Nullable)error;

    Swift

    func optimizerStep() throws

    Parameter

    fehler

    Optionale 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 an trainStep übergeben wurde, verknüpft werden können.

    Deklaration

    Objective-C

    - (nullable NSArray<NSString *> *)getTrainInputNamesWithError:
        (NSError *_Nullable *_Nullable)error;

    Swift

    func getTrainInputNames() throws -> [String]

    Parameter

    fehler

    Optionale 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 an evalStep übergeben wurde, verknüpft werden können.

    Deklaration

    Objective-C

    - (nullable NSArray<NSString *> *)getEvalInputNamesWithError:
        (NSError *_Nullable *_Nullable)error;

    Swift

    func getEvalInputNames() throws -> [String]

    Parameter

    fehler

    Optionale 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 von trainStep zurückgegeben wurde, verknüpft werden können.

    Deklaration

    Objective-C

    - (nullable NSArray<NSString *> *)getTrainOutputNamesWithError:
        (NSError *_Nullable *_Nullable)error;

    Swift

    func getTrainOutputNames() throws -> [String]

    Parameter

    fehler

    Optionale 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 von evalStep zurückgegeben wurde, verknüpft werden können.

    Deklaration

    Objective-C

    - (nullable NSArray<NSString *> *)getEvalOutputNamesWithError:
        (NSError *_Nullable *_Nullable)error;

    Swift

    func getEvalOutputNames() throws -> [String]

    Parameter

    fehler

    Optionale 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) throws

    Parameter

    warmupStepCount

    Die Anzahl der Schritte für das lineare Aufwärmen.

    totalStepCount

    Die Gesamtzahl der Schritte für den linearen Abfall.

    initialLr

    Die anfängliche Lernrate.

    fehler

    Optionale 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() throws

    Parameter

    fehler

    Optionale 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 -> Float

    Parameter

    fehler

    Optionale 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) throws

    Parameter

    lr

    Die Lernrate, die von der Trainingssitzung verwendet werden soll.

    fehler

    Optionale 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) throws

    Parameter

    buffer

    Zusammenhängender Puffer, aus dem die Parameter geladen werden sollen.

    fehler

    Optionale 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 -> ORTValue

    Parameter

    onlyTrainable

    Wenn YES, gibt einen Puffer zurück, der nur die trainierbaren Parameter enthält, andernfalls gibt einen Puffer zurück, der alle Parameter enthält.

    fehler

    Optionale 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 ORTSession verwendet 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]) throws

    Parameter

    inferenceModelPath

    Der Pfad zum serialisierten Inferenzmodell.

    graphOutputNames

    Die Namen der Ausgaben, die im Inferenzmodell benötigt werden.

    fehler

    Optionale Fehlerinformationen, die gesetzt werden, wenn ein Fehler auftritt.

    Rückgabewert

    YES, wenn das Inferenzmodell erfolgreich exportiert wurde, NO andernfalls.