onnxruntime

Форк
0
/
run-options.ts 
72 строки · 2.4 Кб
1
// Copyright (c) Microsoft Corporation. All rights reserved.
2
// Licensed under the MIT License.
3

4
import { InferenceSession } from 'onnxruntime-common';
5

6
import { getInstance } from './wasm-factory';
7
import { allocWasmString, checkLastError, iterateExtraOptions } from './wasm-utils';
8

9
export const setRunOptions = (options: InferenceSession.RunOptions): [number, number[]] => {
10
  const wasm = getInstance();
11
  let runOptionsHandle = 0;
12
  const allocs: number[] = [];
13

14
  const runOptions: InferenceSession.RunOptions = options || {};
15

16
  try {
17
    if (options?.logSeverityLevel === undefined) {
18
      runOptions.logSeverityLevel = 2; // Default to warning
19
    } else if (
20
      typeof options.logSeverityLevel !== 'number' ||
21
      !Number.isInteger(options.logSeverityLevel) ||
22
      options.logSeverityLevel < 0 ||
23
      options.logSeverityLevel > 4
24
    ) {
25
      throw new Error(`log serverity level is not valid: ${options.logSeverityLevel}`);
26
    }
27

28
    if (options?.logVerbosityLevel === undefined) {
29
      runOptions.logVerbosityLevel = 0; // Default to 0
30
    } else if (typeof options.logVerbosityLevel !== 'number' || !Number.isInteger(options.logVerbosityLevel)) {
31
      throw new Error(`log verbosity level is not valid: ${options.logVerbosityLevel}`);
32
    }
33

34
    if (options?.terminate === undefined) {
35
      runOptions.terminate = false;
36
    }
37

38
    let tagDataOffset = 0;
39
    if (options?.tag !== undefined) {
40
      tagDataOffset = allocWasmString(options.tag, allocs);
41
    }
42

43
    runOptionsHandle = wasm._OrtCreateRunOptions(
44
      runOptions.logSeverityLevel!,
45
      runOptions.logVerbosityLevel!,
46
      !!runOptions.terminate!,
47
      tagDataOffset,
48
    );
49
    if (runOptionsHandle === 0) {
50
      checkLastError("Can't create run options.");
51
    }
52

53
    if (options?.extra !== undefined) {
54
      iterateExtraOptions(options.extra, '', new WeakSet<Record<string, unknown>>(), (key, value) => {
55
        const keyDataOffset = allocWasmString(key, allocs);
56
        const valueDataOffset = allocWasmString(value, allocs);
57

58
        if (wasm._OrtAddRunConfigEntry(runOptionsHandle, keyDataOffset, valueDataOffset) !== 0) {
59
          checkLastError(`Can't set a run config entry: ${key} - ${value}.`);
60
        }
61
      });
62
    }
63

64
    return [runOptionsHandle, allocs];
65
  } catch (e) {
66
    if (runOptionsHandle !== 0) {
67
      wasm._OrtReleaseRunOptions(runOptionsHandle);
68
    }
69
    allocs.forEach((alloc) => wasm._free(alloc));
70
    throw e;
71
  }
72
};
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.