ONNX Runtime generate() C API

Hinweis: Diese API befindet sich in der Vorschau und kann sich ändern.

Übersicht

Modell-API

Modell erstellen

Erstellt ein Modell aus dem angegebenen Verzeichnis. Das Verzeichnis sollte eine Datei namens genai_config.json enthalten, die der Konfigurationsspezifikation entspricht.

Parameter

  • Input: config_path Der Pfad zum Modellkonfigurationsverzeichnis. Der Pfad wird in UTF-8 erwartet.
  • Ausgabe: out Das erstellte Modell.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Modellerstellung fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateModel(const char* config_path, OgaModel** out);

Modell zerstören

Zerstört das angegebene Modell.

Parameter

  • Input: model Das zu zerstörende Modell.

Rückgabewerte

void

OGA_EXPORT void OGA_API_CALL OgaDestroyModel(OgaModel* model);

Generieren

Generiert ein Array von Token-Arrays aus der Modellausführung basierend auf den angegebenen Generator-Parametern.

Parameter

  • Input: model Das für die Generierung zu verwendende Modell.
  • Input: generator_params Die für die Generierung zu verwendenden Parameter.
  • Ausgabe: out Die generierten Token-Sequenzen. Der Aufrufer ist verantwortlich für die Freigabe der Sequenzen mit OgaDestroySequences, nachdem er die Sequenzen nicht mehr benötigt.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Generierung fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGenerate(const OgaModel* model, const OgaGeneratorParams* generator_params, OgaSequences** out);

Tokenizer-API

Tokenizer erstellen

Parameter

  • Input: model. Das Modell, für das der Tokenizer erstellt werden soll

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Tokenizer-Erstellung fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateTokenizer(const OgaModel* model, OgaTokenizer** out);

Tokenizer zerstören

OGA_EXPORT void OGA_API_CALL OgaDestroyTokenizer(OgaTokenizer*);

Kodieren

Kodiert einen einzelnen String und fügt die kodierte Token-Sequenz zu den OgaSequences hinzu. Die OgaSequences müssen mit OgaDestroySequences freigegeben werden, wenn sie nicht mehr benötigt werden.

Parameter

Rückgabewerte

OGA_EXPORT OgaResult* OGA_API_CALL OgaTokenizerEncode(const OgaTokenizer*, const char* str, OgaSequences* sequences);

Dekodieren

Dekodiert eine einzelne Token-Sequenz und gibt einen nullterminierten UTF-8-String zurück. out_string muss mit OgaDestroyString freigegeben werden.

Parameter

Rückgabewerte

OGA_EXPORT OgaResult* OGA_API_CALL OgaTokenizerDecode(const OgaTokenizer*, const int32_t* tokens, size_t token_count, const char** out_string);

Batch kodieren

Parameter

  • OGA_EXPORT OgaResult* OGA_API_CALL OgaTokenizerEncodeBatch(const OgaTokenizer*, const char** strings, size_t count, TokenSequences** out);
    

Batch dekodieren

OGA_EXPORT OgaResult* OGA_API_CALL OgaTokenizerDecodeBatch(const OgaTokenizer*, const OgaSequences* tokens, const char*** out_strings);

Tokenizer-Strings zerstören

OGA_EXPORT void OGA_API_CALL OgaTokenizerDestroyStrings(const char** strings, size_t count);

Tokenizer-Stream erstellen

OgaTokenizerStream wird verwendet, um Token-Strings inkrementell, ein Token nach dem anderen, zu dekodieren.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateTokenizerStream(const OgaTokenizer*, OgaTokenizerStream** out);

Tokenizer-Stream zerstören

Parameter

OGA_EXPORT void OGA_API_CALL OgaDestroyTokenizerStream(OgaTokenizerStream*);

Stream dekodieren

Dekodiert ein einzelnes Token im Stream. Wenn dies zur Generierung eines Wortes führt, wird es in 'out' zurückgegeben. Der Aufrufer ist dafür verantwortlich, jeden Teil zusammenzufügen, um das vollständige Ergebnis zu generieren. 'out' ist gültig bis zum nächsten Aufruf von OgaTokenizerStreamDecode oder wenn OgaTokenizerStream zerstört wird.

OGA_EXPORT OgaResult* OGA_API_CALL OgaTokenizerStreamDecode(OgaTokenizerStream*, int32_t token, const char** out);

Generator-Parameter-API

Generator-Parameter erstellen

Erstellt OgaGeneratorParams aus dem angegebenen Modell.

Parameter

  • Input: model Das für die Generierung zu verwendende Modell.
  • Ausgabe: out Die erstellten Generator-Parameter.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Erstellung der Generator-Parameter fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateGeneratorParams(const OgaModel* model, OgaGeneratorParams** out);

Generator-Parameter zerstören

Zerstört die angegebenen Generator-Parameter.

Parameter

  • Input: generator_params Die zu zerstörenden Generator-Parameter.

Rückgabewerte

void

OGA_EXPORT void OGA_API_CALL OgaDestroyGeneratorParams(OgaGeneratorParams* generator_params);

Suchoption setzen (Nummer)

Setzt eine Suchoption, bei der die Option eine Nummer ist.

Parameter

  • generator_params: Das Generator-Parameter-Objekt, auf dem der Parameter gesetzt werden soll.
  • name: Der Name des Parameters.
  • value: Der zu setzende Wert.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Erstellung der Generator-Parameter fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsSetSearchNumber(OgaGeneratorParams* generator_params, const char* name, double value);

Suchoption setzen (Boolesch)

Setzt eine Suchoption, bei der die Option ein Boolescher Wert ist.

Parameter

  • generator_params: Das Generator-Parameter-Objekt, auf dem der Parameter gesetzt werden soll.
  • name: Der Name des Parameters.
  • value: Der zu setzende Wert.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls die Erstellung der Generator-Parameter fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsSetSearchBool(OgaGeneratorParams* generator_params, const char* name, bool value);

Graph-Erfassung mit maximaler Batch-Größe versuchen

Graph-Capture behebt die dynamischen Elemente des Berechnungsdiagramms zu konstanten Werten. Dies kann in einigen Umgebungen zu einer effizienteren Ausführung führen. Um im Graph-Capture-Modus auszuführen, muss die maximale Batch-Größe im Voraus bekannt sein. Diese Funktion kann fehlschlagen, wenn nicht genügend Speicher zum Zuweisen der angegebenen maximalen Batch-Größe vorhanden ist.

Parameter

  • generator_params: Das Generator-Parameter-Objekt, auf dem der Parameter gesetzt werden soll.
  • max_batch_size: Die maximal zuzuweisende Batch-Größe.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls der Graph-Capture-Modus nicht mit der angegebenen Batch-Größe konfiguriert werden konnte.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsTryGraphCaptureWithMaxBatchSize(OgaGeneratorParams* generator_params, int32_t max_batch_size);

Eingaben setzen

Setzt die Eingabe-IDs für die Generator-Parameter. Die Eingabe-IDs werden verwendet, um die Generierung zu starten.

Parameter

  • Input: generator_params Die Generator-Parameter, auf denen die Eingabe-IDs gesetzt werden sollen.
  • Input: input_ids Das Eingabe-ID-Array der Größe input_ids_count = batch_size * sequence_length.
  • Input: input_ids_count Die Gesamtzahl der Eingabe-IDs.
  • Input: sequence_length Die Sequenzlänge der Eingabe-IDs.
  • Input: batch_size Die Batch-Größe der Eingabe-IDs.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls das Setzen der Eingabe-IDs fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsSetInputIDs(OgaGeneratorParams* generator_params, const int32_t* input_ids, size_t input_ids_count, size_t sequence_length, size_t batch_size);

Eingabesequenz setzen

Setzt die Eingabe-ID-Sequenzen für die Generator-Parameter. Die Eingabe-ID-Sequenzen werden verwendet, um die Generierung zu starten.

Parameter

  • Input: generator_params Die Generator-Parameter, auf denen die Eingabe-IDs gesetzt werden sollen.
  • Input: sequences Die Eingabe-ID-Sequenzen.

Rückgabewerte

OgaResult mit der Fehlermeldung, falls das Setzen der Eingabe-ID-Sequenzen fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsSetInputSequences(OgaGeneratorParams* generator_params, const OgaSequences* sequences);

Modelleingabe setzen

Setzt eine zusätzliche Modelleingabe neben den input_ids.

Parameter

  • generator_params: Das Generator-Parameter-Objekt, auf dem die Eingabe gesetzt werden soll.
  • name: Der Name des zu setzenden Parameters.
  • tensor: Der Wert des Parameters.

Rückgabe

OgaResult mit der Fehlermeldung, falls das Setzen der Eingabe fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGeneratorParamsSetWhisperInputFeatures(OgaGeneratorParams*, OgaTensor* tensor);

Generator-API

Generator erstellen

Erstellt einen Generator aus dem angegebenen Modell und den Generator-Parametern.

Parameter

  • Input: model Das für die Generierung zu verwendende Modell.
  • Input: params Die für die Generierung zu verwendenden Parameter.
  • Ausgabe: out Der erstellte Generator.

Rückgabe

OgaResult mit der Fehlermeldung, falls die Generator-Erstellung fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateGenerator(const OgaModel* model, const OgaGeneratorParams* params, OgaGenerator** out);

Generator zerstören

Zerstört den angegebenen Generator.

Parameter

  • Input: generator Der zu zerstörende Generator.

Rückgabe

void

OGA_EXPORT void OGA_API_CALL OgaDestroyGenerator(OgaGenerator* generator);

Prüfen, ob die Generierung abgeschlossen ist

Gibt true zurück, wenn der Generator alle Sequenzen generiert hat.

Parameter

  • Input: generator Der Generator, der geprüft werden soll, ob er mit der Generierung aller Sequenzen fertig ist.

Rückgabe

True, wenn der Generator alle Sequenzen generiert hat, sonst false.

OGA_EXPORT bool OGA_API_CALL OgaGenerator_IsDone(const OgaGenerator* generator);

Eine Iteration des Modells ausführen

Berechnet die Logits aus dem Modell basierend auf den Eingabe-IDs und dem vergangenen Zustand. Die berechneten Logits werden im Generator gespeichert.

Parameter

  • Input: generator Der Generator, für den die Logits berechnet werden sollen.

Rückgabe

OgaResult mit der Fehlermeldung, falls die Berechnung der Logits fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGenerator_ComputeLogits(OgaGenerator* generator);

Nächstes Token generieren

Generiert das nächste Token basierend auf den berechneten Logits unter Verwendung der konfigurierten Generierungsparameter.

Parameter

  • Input: generator Der Generator, für den das nächste Token generiert werden soll.

Rückgabe

OgaResult mit der Fehlermeldung, falls die Generierung des nächsten Tokens fehlschlug.

OGA_EXPORT OgaResult* OGA_API_CALL OgaGenerator_GenerateNextToken(OgaGenerator* generator);

Anzahl der Tokens abrufen

Gibt die Anzahl der Tokens in der Sequenz am angegebenen Index zurück.

Parameter

  • Input: generator Der Generator, von dem die Anzahl der Tokens für die Sequenz am angegebenen Index abgefragt werden soll.
  • Input: index. Der Index, an dem die Tokens zurückgegeben werden sollen.

Rückgabe

Die Anzahl der Tokens in der Sequenz am angegebenen Index.

OGA_EXPORT size_t OGA_API_CALL OgaGenerator_GetSequenceCount(const OgaGenerator* generator, size_t index);

Sequenz abrufen

Gibt einen Zeiger auf die Sequenzdaten am angegebenen Index zurück. Die Anzahl der Tokens in der Sequenz wird von OgaGenerator_GetSequenceCount angegeben.

Parameter

  • Input: generator Der Generator, von dem die Sequenzdaten für die Sequenz am angegebenen Index abgerufen werden sollen. Der Zeiger auf die Sequenzdaten am angegebenen Index. Die Sequenzdaten gehören dem OgaGenerator und werden freigegeben, wenn der OgaGenerator zerstört wird. Der Aufrufer muss die Daten kopieren, wenn sie nach der Zerstörung des OgaGenerators verwendet werden müssen.
  • Input: index. Der Index, an dem die Sequenz abgerufen werden soll.

Rückgabe

Ein Zeiger auf die Token-Sequenz.

OGA_EXPORT const int32_t* OGA_API_CALL OgaGenerator_GetSequenceData(const OgaGenerator* generator, size_t index);

Laufzeitoption setzen

Eine API zum Setzen von Laufzeitoptionen. Weitere Parameter werden zu dieser generischen API hinzugefügt, um Laufzeitoptionen zu unterstützen. Ein Beispiel für die Verwendung dieser API zum Beenden der aktuellen Sitzung wäre der Aufruf von SetRuntimeOption mit dem Schlüssel „terminate_session“ und dem Wert „1“: OgaGenerator_SetRuntimeOption(generator, „terminate_session“, „1“)

Weitere Details zu den aktuellen Laufzeitoptionen finden Sie hier.

Parameter

  • Input: generator Der Generator, auf dem die Laufzeitoption gesetzt werden soll.
  • Input: key Der Schlüssel zum Setzen der Laufzeitoption.
  • Input: value Der Wert für den angegebenen Schlüssel.

Rückgabe

void

OGA_EXPORT void OGA_API_CALL OgaGenerator_SetRuntimeOption(OgaGenerator* generator, const char* key, const char* value);

Adapter-API

Diese API wird verwendet, um feinabgestimmte Adapter, wie z. B. LoRA-Adapter, zu laden und zu wechseln.

Adapter erstellen

Erstellt das Objekt, das die Adapter verwaltet. Dieses Objekt wird verwendet, um alle Modelladapter zu laden. Es ist verantwortlich für die Referenzzählung der geladenen Adapter.

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateAdapters(const OgaModel* model, OgaAdapters** out);

Parameter

  • model: das OgaModel, das zuvor erstellt wurde.

Ergebnisse

  • out: eine Referenz auf die Liste der erstellten OgaAdapters.

Adapter laden

Lädt den Modelladapter aus dem angegebenen Adapter-Dateipfad und Adapternamen.

OGA_EXPORT OgaResult* OGA_API_CALL OgaLoadAdapter(OgaAdapters* adapters, const char* adapter_file_path, const char* adapter_name);

Parameter

  • adapters: Das OgaAdapters-Objekt, in das der Adapter geladen werden soll.
  • adapter_file_path: Der Dateipfad des zu ladenden Adapters.
  • adapter_name: Eine eindeutige Kennung für den zu verwendenden Adapter zur Adapterabfrage.

Rückgabewert

OgaResult mit einer Fehlermeldung, falls das Laden des Adapters fehlschlug.

Adapter entladen

Entlädt den Adapter mit der angegebenen Kennung aus der Menge der zuvor geladenen Adapter. Wenn der Adapter nicht gefunden wird oder nicht entladen werden kann (wenn er in Gebrauch ist), wird ein Fehler zurückgegeben.

OGA_EXPORT OgaResult* OGA_API_CALL OgaUnloadAdapter(OgaAdapters* adapters, const char* adapter_name);

Parameter

  • adapters: Das OgaAdapters-Objekt, aus dem der Adapter entladen werden soll.
  • adapter_name: Der Name des zu entladenden Adapters.

Rückgabewert

OgaResult mit einer Fehlermeldung, falls das Entladen des Adapters fehlschlug. Dies kann auftreten, wenn die Methode mit einem Adapter aufgerufen wird, der noch nicht geladen wurde oder von einem noch verwendeten OgaGenerator als aktiv markiert wurde.

Aktiven Adapter setzen

Setzt den Adapter mit dem angegebenen Adapternamen als aktiv für das angegebene OgaGenerator-Objekt.

OGA_EXPORT OgaResult* OGA_API_CALL OgaSetActiveAdapter(OgaGenerator* generator, OgaAdapters* adapters, const char* adapter_name);

Parameter

  • generator: Das OgaGenerator-Objekt, für das der aktive Adapter gesetzt werden soll.
  • adapters: Das OgaAdapters-Objekt, das die Modelladapter verwaltet.
  • adapter_name: Der Name des Adapters, der als aktiv gesetzt werden soll.

Rückgabewert

OgaResult mit einer Fehlermeldung, falls der Adapter nicht als aktiv gesetzt werden konnte. Dies kann auftreten, wenn die Methode mit einem Adapter aufgerufen wird, der zuvor nicht geladen wurde.

Enums und Strukturen

typedef enum OgaDataType {
  OgaDataType_int32,
  OgaDataType_float32,
  OgaDataType_string,  // UTF8 string
} OgaDataType;
typedef struct OgaResult OgaResult;
typedef struct OgaGeneratorParams OgaGeneratorParams;
typedef struct OgaGenerator OgaGenerator;
typedef struct OgaModel OgaModel;
typedef struct OgaBuffer OgaBuffer;

Hilfsfunktionen

GPU-Geräte-ID setzen

OGA_EXPORT OgaResult* OGA_API_CALL OgaSetCurrentGpuDeviceId(int device_id);

GPU-Geräte-ID abrufen

OGA_EXPORT OgaResult* OGA_API_CALL OgaGetCurrentGpuDeviceId(int* device_id);

Fehlermeldung abrufen

Parameter

  • Input: result OgaResult, das die Fehlermeldung enthält.

Rückgabe

Fehlermeldung, die in der OgaResult enthalten ist. Der const char* gehört zur OgaResult und wird freigegeben, wenn die OgaResult zerstört wird.

OGA_EXPORT const char* OGA_API_CALL OgaResultGetError(OgaResult* result);

Ergebnis zerstören

Parameter

  • Input: result Zu zerstörende OgaResult.

Rückgabe

void

OGA_EXPORT void OGA_API_CALL OgaDestroyResult(OgaResult*);

String zerstören

Parameter

  • Input: Zu zerstörender String.

Rückgabe

OGA_EXPORT void OGA_API_CALL OgaDestroyString(const char*);

Puffer zerstören

Parameter

  • Input: Zu zerstörender Puffer.

Rückgabe

void

OGA_EXPORT void OGA_API_CALL OgaDestroyBuffer(OgaBuffer*);

Puffertyp abrufen

Parameter

  • Input: der Puffer.

Rückgabe

Der Typ des Puffers.

OGA_EXPORT OgaDataType OGA_API_CALL OgaBufferGetType(const OgaBuffer*);

Anzahl der Dimensionen eines Puffers abrufen

Parameter

  • Input: der Puffer.

Rückgabe

Die Anzahl der Dimensionen im Puffer.

OGA_EXPORT size_t OGA_API_CALL OgaBufferGetDimCount(const OgaBuffer*);

Pufferdimensionen abrufen

Ruft die Dimensionen eines Puffers ab.

Parameter

  • Input: der Puffer.
  • Ausgabe: ein Dimensionsarray.

Rückgabe

OgaResult.

OGA_EXPORT OgaResult* OGA_API_CALL OgaBufferGetDims(const OgaBuffer*, size_t* dims, size_t dim_count);

Pufferdaten abrufen

Ruft die Daten aus einem Puffer ab.

Parameter

Rückgabe

void

OGA_EXPORT const void* OGA_API_CALL OgaBufferGetData(const OgaBuffer*);

Sequenzen erstellen

OGA_EXPORT OgaResult* OGA_API_CALL OgaCreateSequences(OgaSequences** out);

Sequenzen zerstören

Parameter

  • Input: sequences Zu zerstörende OgaSequences.

Rückgabe

void

Rückgabe

OGA_EXPORT void OGA_API_CALL OgaDestroySequences(OgaSequences* sequences);

Anzahl der Sequenzen abrufen

Gibt die Anzahl der Sequenzen in den OgaSequences zurück.

Parameter

  • Input: sequences

Rückgabe

Die Anzahl der Sequenzen in den OgaSequences.

OGA_EXPORT size_t OGA_API_CALL OgaSequencesCount(const OgaSequences* sequences);

Anzahl der Tokens in einer Sequenz abrufen

Gibt die Anzahl der Tokens in der Sequenz am angegebenen Index zurück.

Parameter

  • Input: sequences

Rückgabe

Die Anzahl der Tokens in der Sequenz am angegebenen Index.

OGA_EXPORT size_t OGA_API_CALL OgaSequencesGetSequenceCount(const OgaSequences* sequences, size_t sequence_index);

Sequenzdaten abrufen

Gibt einen Zeiger auf die Sequenzdaten am angegebenen Index zurück. Die Anzahl der Tokens in der Sequenz wird von OgaSequencesGetSequenceCount angegeben.

Parameter

  • Input: sequences

Rückgabe

Der Zeiger auf die Sequenzdaten am angegebenen Index. Der Zeiger ist gültig, bis die OgaSequences zerstört wird.

OGA_EXPORT const int32_t* OGA_API_CALL OgaSequencesGetSequenceData(const OgaSequences* sequences, size_t sequence_index);