Class Instance

TVM 运行时实例。

所有由 TVM 运行时函数调用和 PackedFunc 实例返回的对象(NDArray、Module、PackedFunc)都通过作用域机制进行跟踪,当我们调用 EndScope 时将自动释放这些对象。

这对于释放底层 WASM 和 WebGPU 内存是必要的,这些内存不会通过 JS 原生垃圾回收机制进行跟踪。

这意味着我们必须熟悉以下函数

层级结构

  • Instance

实现

构造函数

属性

方法

applyPresenceAndFrequencyPenalty (应用存在频率惩罚) applyRepetitionPenalty (应用重复惩罚) applySoftmaxWithTemperature (应用温度Softmax) asyncLoadWebGPUPipelines (异步加载WebGPU管线) asyncifyEnabled (异步化已启用) attachToCurrentScope (附加当前作用域) beginScope (开始作用域) benchmark (基准测试) bindCanvas (绑定画布) clearCanvas (清除画布) concatEmbeddings (连接嵌入) cpu createVirtualMachine (创建虚拟机) detachFromCurrentScope (从当前作用域分离) device (设备) dispose (释放) empty (空) endScope (结束作用域) fetchNDArrayCache (获取NDArray缓存) getGlobalFunc (获取全局函数) getParamsFromCache (从缓存获取参数) getParamsFromCacheByName (通过名称缓存获取参数) initWebGPU (初始化WebGPU) isPackedFunc (是PackedFunc) listGlobalFuncNames (列出全局函数名称) makeShapeTuple (创建形状元组) makeString (创建字符串) makeTVMArray (创建TVM数组) moveToParentScope (移动作用域) ndarrayCacheClear (ndarray缓存清除) ndarrayCacheGet (ndarray缓存获取) ndarrayCacheRemove (ndarray缓存移除) ndarrayCacheUpdate (ndarray缓存更新) registerAsyncServerFunc (注册异步服务器函数) registerAsyncifyFunc (注册异步化函数) registerFunc (注册函数) registerInitProgressCallback (注册初始化进度回调) registerObjectConstructor (注册对象构造器) runtimeStatsText (运行时统计文本) sampleTopPFromLogits (从Logits采样TopP) sampleTopPFromProb (从概率采样TopP) scalar (标量) setPackedArguments (设置打包参数) setSeed (设置种子) showImage (显示图像) systemLib (系统库) toDLDataType (转换为DLDataType) toPackedFunc (转换为PackedFunc) typeKey2Index (类型索引) uniform (均匀分布) webgpu withNewScope (使用作用域) wrapAsyncifyPackedFunc (包装异步化PackedFunc)

构造函数

  • 构造器

    importObject 也可以是 LibraryProvider 对象、WASI 对象或包含 wasmLibraryProvider 字段的对象。

    参见

    当目标为浏览器时,请使用异步版本 instantiate

    参数

    • wasmModule: Module

      输入模块或实例。

    • importObject (导入对象): Record<string, any> = {}

      如果未提供 wasmInstance,则用于初始化它的导入。

    • Optional (可选) wasmInstance (wasm实例): Instance

      用于延迟构造的附加 wasm 实例参数。

    • Optional (可选) env (环境): Environment

      直接指定的环境模块。

    返回值 Instance

属性

cacheMetadata (缓存元数据): Record<string, any> = {}
exports (导出): Record<string, Function>
memory (内存): Memory

方法

  • 应用存在和频率惩罚。这是一个原地操作。

    参数

    • logits: NDArray

      惩罚前的输入 logits。

    • token_ids (令牌ID): NDArray

      出现的令牌 ID。

    • token_freqs (令牌频率): NDArray

      自上次 PrefillStep 以来每个令牌出现的次数。 token_freqs[i] 是 token_ids[i] 的频率,对于所有 i。并且所有 token_freqs 都应 >= 1。

    • presence_penalty (存在惩罚): number

      惩罚因子。

    • frequency_penalty (频率惩罚): number

      惩罚因子。

    返回值 any

  • 对 logits 应用重复惩罚。

    参数

    • logits: NDArray

      惩罚前的输入 logits。

    • token_ids (令牌ID): NDArray

      出现的令牌 ID。

    • penalty (惩罚): number

      惩罚因子。

    返回值 any

  • 对 logits 应用带温度的 softmax。

    参数

    • logits: NDArray

      softmax 温度前的输入 logits。

    • temperature (温度): number

      温度因子。

    返回值 any

  • 尽可能异步加载 webgpu 管线。

    参数

    返回值 Promise<void>

  • 检查是否启用了 asyncify 模式

    返回值 boolean

    异步化模式切换

  • 将分离的对象附加到当前作用域的自动释放池。

    注意

    通常用户不需要显式调用此函数,因为所有库调用返回值都显式附加到当前作用域。只有在调用 detachFromCurrentScope 创建分离对象时才需要这样做。

    类型参数

    参数

    • obj: T

      输入对象。

    返回值 T

  • 开始新的作用域以跟踪对象释放。

    返回值 void

  • 对运行函数进行稳定的基准测试执行。

    参数

    run 运行函数

    参数

    dev 每次运行时同步的设备。

    Number (数量)

    计算平均值的次数。

    Repeat (重复次数)

    重复运行的次数。

    参数

    • run (运行): (() => void)
        • (): void
        • 返回值 void

    • dev (设备): DLDevice
    • number (数量): number = 10
    • repeat (重复次数): number = 1

    返回值 Promise<number[]>

  • 将画布绑定到当前的 WebGPU 上下文

    参数

    • canvas (画布): HTMLCanvasElement

      画布。

    返回值 void

  • 清除画布

    返回值 void

  • 连接表示嵌入 (embeddings) 的 NDArray 序列。

    参数

    返回值 NDArray

    形状为 (\sum_{i} {m}, hidden_size) 的 NDArray

  • 将对象从当前作用域分离,使其不会在 endscope 期间通过自动释放机制释放。

    用户需要显式调用 obj.dispose(),或者 attachToCurrentScope 重新附加到当前作用域。

    此函数可用于将值返回到父作用域。

    类型参数

    参数

    • obj: T

      obj: unknown 要分离的对象。

    返回值 T

  • 创建一个新的 DLDevice

    参数

    • deviceType: string | number

      设备类型。

    • deviceId: number = 0

      设备索引。

    返回值 DLDevice

    返回值 DLDevice 创建的设备。

  • 释放内部资源。此函数可以多次调用,但只有第一次调用会生效。

    返回值 void

  • 创建一个具有给定形状和数据类型的空 NDArray

    参数

    • shape: number | number[]

      数组的形状。

    • dtype: string | DLDataType = "float32"

      数组的数据类型。

    • dev: DLDevice = ...

      ndarray 的设备。

    返回值 NDArray

    返回值 NDArray 创建的 ndarray。

  • 结束一个作用域并释放当前作用域下创建的所有 TVM 对象。

    例外:可以调用 moveToParentScope 将值移动到父作用域。

    返回值 void

  • 给定 cacheUrl,根据 cacheUrl/ndarray-cache.json 查找要获取的项。

    参数

    • ndarrayCacheUrl: string

      缓存 url。

    • device: DLDevice

      要获取到的设备。

    • cacheScope: string = "tvmjs"

      缓存的作用域标识符

    • cacheType: string = "cache"

      缓存的类型:"cache" 或 "indexedDB"

    • 可选 signal: AbortSignal

      一个可选的 AbortSignal,用于中止获取操作

    返回值 Promise<any>

    元数据

  • 以 prefix_i 的形式获取参数

    参数

    • prefix: string

      参数前缀。

    • numParams: number

      参数数量。

    返回值 TVMObject

  • 根据提供的参数名称获取参数

    参数

    • paramNames: string[]

      参数的名称。

    返回值 TVMObject

    返回值 TVMObject 读取的参数。

  • 在运行时中初始化 webgpu。

    参数

    • device: GPUDevice

      给定的 GPU 设备。

    返回值 void

  • 检查 func 是否为 PackedFunc。

    参数

    • func: unknown

      输入。

    返回值 boolean

    返回值 boolean 检查结果。

  • 列出运行时中注册的所有全局函数名称。

    返回值 string[]

    名称列表。

  • 将 obj 的附件移动到父作用域。

    此函数在退出当前作用域时,用于确保对象仍然存活。

    类型参数

    参数

    • obj: T

      obj: unknown 要移动的对象。

    返回值 T

    输入对象。

  • 清除 ndarray 缓存。

    返回值 void

  • 从缓存中获取 NDArray。

    参数

    • name: string

      name: string 数组的名称。

    返回值 NDArray

    返回值 NDArray 结果。

  • 从缓存中获取 NDArray。

    参数

    • name: string

      name: string 数组的名称。

    返回值 NDArray

    返回值 NDArray 结果。

  • 清除 ndarray 缓存。

    参数

    • name: string

      name: string 数组的名称。

    • arr: NDArray

      内容。

    • override: boolean = false

    返回值 void

  • 注册一个异步函数作为服务器中的全局函数。

    注意

    异步函数将仅用于 rpc 中的远程调用服务。这些函数包含显式的延续 (continuation)

    参数

    • name: string

      函数的名称。

    • func: Function

      要注册的函数。

    • override: boolean = false

      override: boolean = false

    返回值 void

  • registerAsyncifyFunc(name, func, override?): void

    注意

    在全局环境中注册异步函数作为 asynctify 可调用对象。

    参数

    • name: string

      函数的名称。

    • 此函数通过 asynctify 机制处理。wasm 需要使用 Asynctify 编译

      要注册的函数。

        • func: ((...args) => Promise<any>)
        • 参数

          • (...args): Promise<any>

          返回值 Promise<any>

    • override: boolean = false

      override: boolean = false

    返回值 void

  • registerFunc(name, func, override?): void

    参数

    • name: string

      函数的名称。

    • 将函数注册为 tvm 运行时中的全局函数。
    • override: boolean = false

      override: boolean = false

    返回值 void

  • registerInitProgressCallback(cb): void

    参数

    返回值 void

  • registerObjectConstructor(typeKey, func, override?): void

    参数

    • 注册一个对象构造函数。

      函数的名称。

    • typeKey: string
    • override: boolean = false

      override: boolean = false

    返回值 void

  • 以可读格式获取运行时信息。

    返回值 string

  • 通过 top-p 采样方法采样索引。

    参数

    • logits: NDArray

      logits: number[] 归一化之前的输入 logits。

    • temperature (温度): number

      temperature: number 温度因子,如果 temperature = 0.0 将使用 argmax。

    • top_p: number

      top_p 值

    返回值 number

    采样的索引。

  • 通过 top-p 采样方法采样索引。

    参数

    • prob: NDArray

      分布,即执行 applySoftmaxWithTemperature() 后的 logits。

    • top_p: number

      top_p 值

    返回值 number

    采样的索引。

  • 创建一个新的 Scalar,可以传递给 PackedFunc。

    参数

    • value: number

      数值。

    • dtype: string

      dtype 字符串。

    返回 Scalar

    创建的标量。

  • 将打包函数参数设置到 argsValue 和 argsCode 指示的位置。如果需要,从堆栈分配新的临时空间。

    Parma

    stack 调用堆栈

    参数

    • stack: CachedCallStack
    • args: any[]

      输入参数。

    • argsValue: number

      argsValue 的偏移量。

    • argsCode: number

      argsCode 的偏移量。

    返回值 void

  • 设置内部 LinearCongruentialGenerator 的种子。

    参数

    • seed: number

    返回值 void

  • 在画布中显示图像。

    参数

    • dataRGBA: NDArray

      GPU 上的高度 x 宽度 uint32 NDArray RGBA 格式的图像数组。

    返回值 void

  • 获取 WebAssembly 中的系统级库模块。系统库是一个全局模块,包含启动时自注册的函数。

    返回 Module

    系统库模块。

  • 从类型键获取类型索引。

    参数

    • 注册一个对象构造函数。

      类型键。

    返回值 number

    相应的类型索引。

  • 创建具有给定形状的均匀分布 NDArray

    参数

    • shape: number[]

      数组的形状。

    • low: number

      最小值。

    • high: number

      最大值。

    • dev (设备): DLDevice

      ndarray 的设备。

    返回值 NDArray

    返回值 NDArray 创建的 ndarray。

  • 在新作用域下执行操作。

    注意

    为了使 action 返回有效值,我们需要为作用域中创建的对象调用 moveToParentScope

    类型参数

    • T

    参数

    • action: (() => T)

      操作函数。

        • (): T
        • 返回值 T

    返回值 T

    结果值。

  • 通过 asyncify 机制将从 tvm 运行时获取的函数包装为 AsyncPackedFunc

    如果函数可能包含通过 asyncify 回调到异步 JS 函数的情况,您才需要调用它。一个常见的例子是 GPU 同步。

    将任何函数包装为 Asyncify 总是安全的,但是您需要确保在调用该函数时使用 await。

    参数

    返回 AsyncPackedFunc

    包装后的 AsyncPackedFunc

使用 TypeDoc 生成