GGML 非官方中文文档(2)

简介: GGML 非官方中文文档

GGML 非官方中文文档(1)https://developer.aliyun.com/article/1524311

static void ggml_set_op_params(struct ggml_tensor * tensor, const void * params, size_t params_size)

{签名}

描述:设置张量的操作参数,包括参数指针和参数大小。

参数:

  • tensor:要设置操作参数的张量。
  • params:指向操作参数的指针。
  • params_size:操作参数的大小。

返回值:无。

static int32_t ggml_get_op_params_i32(const struct ggml_tensor * tensor, uint32_t i)

{签名}

描述:获取张量操作参数中的第i个32位整数。

参数:

  • tensor:包含操作参数的张量。
  • i:要获取的参数索引。

返回值:第i个32位整数的值。

static void ggml_set_op_params_i32(struct ggml_tensor * tensor, uint32_t i, int32_t value)

{签名}

描述:设置张量操作参数中的第i个32位整数为给定的值。

参数:

  • tensor:要设置操作参数的张量。
  • i:要设置的参数索引。
  • value:要设置的32位整数值。

返回值:无。

struct ggml_tensor * ggml_set_zero(struct ggml_tensor * tensor)

{签名}

描述:将张量的数据内容全部设置为0。

参数:

  • tensor:要设置为0的张量。

返回值:设置为0后的张量指针。

struct ggml_tensor * ggml_set_i32(struct ggml_tensor * tensor, int32_t value)

{签名}

描述:将张量的数据内容全部设置为给定的32位整数值。

参数:

  • tensor:要设置值的张量。
  • value:要设置的32位整数值。

返回值:设置值后的张量指针。

struct ggml_tensor * ggml_set_f32(struct ggml_tensor * tensor, float value)

{签名}

描述:将张量的数据内容全部设置为给定的float值。

参数:

  • tensor:要设置值的张量。
  • value:要设置的float值。

返回值:设置值后的张量指针。

void ggml_unravel_index(const struct ggml_tensor * tensor, int64_t i, int64_t * i0, int64_t * i1, int64_t * i2, int64_t * i3)

{签名}

描述:根据索引i解析出tensor的多维索引i0, i1, i2, i3。

参数:

  • tensor:要解析索引的张量。
  • i:一维索引。
  • i0, i1, i2, i3:指向多维索引的指针。

返回值:无。

int32_t ggml_get_i32_1d(const struct ggml_tensor * tensor, int i)

{签名}

描述:获取一维张量中索引i处的32位整数值。

参数:

  • tensor:要获取值的一维张量。
  • i:一维索引。

返回值:索引i处的32位整数值。

void ggml_set_i32_1d(const struct ggml_tensor * tensor, int i, int32_t value)

{签名}

描述:设置一维张量中索引i处的32位整数值。

参数:

  • tensor:要设置值的一维张量。
  • i:一维索引。
  • value:要设置的32位整数值。

返回值:无。

int32_t ggml_get_i32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3)

{签名}

描述:获取多维张量中指定索引处的32位整数值。

参数:

  • tensor:要获取值的多维张量。
  • i0, i1, i2, i3:多维索引。

返回值:指定索引处的32位整数值。

void ggml_set_i32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3, int32_t value)

{签名}

描述:设置多维张量中指定索引处的32位整数值。

参数:

  • tensor:要设置值的多维张量。
  • i0, i1, i2, i3:多维索引。
  • value:要设置的32位整数值。

返回值:无。

以上是对给定代码段中的常量、结构体和公开函数的提取和总结。

根据提供的代码段,我们可以提取以下常量、结构体和公开函数:

GGML_TYPE_I8

类型:枚举

描述:表示8位整数类型。

GGML_TYPE_I16

类型:枚举

描述:表示16位整数类型。

GGML_TYPE_I32

类型:枚举

描述:表示32位整数类型。

GGML_TYPE_F16

类型:枚举

描述:表示16位浮点数类型。

GGML_TYPE_F32

类型:枚举

描述:表示32位浮点数类型。

ggml_tensor

描述:表示一个张量对象,包含张量的数据、类型、操作、梯度、源张量等信息。

字段 类型 描述
data void* 指向张量数据的指针
type enum ggml_type 张量的数据类型
op enum ggml_op 张量的操作类型
grad struct ggml_tensor* 指向梯度张量的指针
src struct ggml_tensor* 指向源张量的指针
name char[256] 张量的名称
nb size_t[4] 张量的维度大小
ne size_t 张量的元素个数

ggml_get_f32_1d

float ggml_get_f32_1d(const struct ggml_tensor * tensor, int i)

描述:获取一维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。
  • i:索引值。

返回值:32位浮点数值。

ggml_set_f32_1d

void ggml_set_f32_1d(const struct ggml_tensor * tensor, int i, float value)

描述:设置一维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。
  • i:索引值。
  • value:要设置的32位浮点数值。

ggml_get_f32_nd

float ggml_get_f32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3)

描述:获取多维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。
  • i0, i1, i2, i3:多维索引值。

返回值:32位浮点数值。

ggml_set_f32_nd

void ggml_set_f32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3, float value)

描述:设置多维张量中指定索引的32位浮点数值。

参数:

  • tensor:指向张量的指针。
  • i0, i1, i2, i3:多维索引值。
  • value:要设置的32位浮点数值。

ggml_get_data

void * ggml_get_data(const struct ggml_tensor * tensor)

描述:获取张量的数据指针。

参数:

  • tensor:指向张量的指针。

返回值:指向张量数据的指针。

ggml_get_data_f32

float * ggml_get_data_f32(const struct ggml_tensor * tensor)

描述:获取张量的32位浮点数数据指针。

参数:

  • tensor:指向张量的指针。

返回值:指向张量32位浮点数数据的指针。

ggml_get_unary_op

enum ggml_unary_op ggml_get_unary_op(const struct ggml_tensor * tensor)

描述:获取张量的一元操作类型。

参数:

  • tensor:指向张量的指针。

返回值:一元操作类型。

ggml_get_name

const char * ggml_get_name(const struct ggml_tensor * tensor)

描述:获取张量的名称。

参数:

  • tensor:指向张量的指针。

返回值:张量的名称。

ggml_set_name

struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name)

描述:设置张量的名称。

参数:

  • tensor:指向张量的指针。
  • name:新的名称。

返回值:指向张量的指针。

ggml_format_name

struct ggml_tensor * ggml_format_name(struct ggml_tensor * tensor, const char * fmt, ...)

描述:格式化张量的名称。

参数:

  • tensor:指向张量的指针。
  • fmt:格式化字符串。
  • ...:可变参数列表。

返回值:指向张量的指针。

ggml_view_tensor

struct ggml_tensor * ggml_view_tensor(struct ggml_context * ctx, struct ggml_tensor  * src)

描述:创建一个张量的视图。

参数:

  • ctx:上下文指针。
  • src:源张量指针。

返回值:指向新视图张量的指针。

ggml_get_first_tensor

struct ggml_tensor * ggml_get_first_tensor(const struct ggml_context * ctx)

描述:获取上下文中的第一个张量对象。

参数:

  • ctx:上下文指针。

返回值:指向第一个张量对象的指针。

ggml_get_next_tensor

struct ggml_tensor * ggml_get_next_tensor(const struct ggml_context * ctx, struct ggml_tensor * tensor)

描述:获取上下文中下一个张量对象。

参数:

  • ctx:上下文指针。
  • tensor:当前张量指针。

返回值:指向下一个张量对象的指针。

ggml_get_tensor

struct ggml_tensor * ggml_get_tensor(struct ggml_context * ctx, const char * name)

描述:根据名称获取张量对象。

参数:

  • ctx:上下文指针。
  • name:张量名称。

返回值:指向指定名称的张量对象的指针。

ggml_dup

struct ggml_tensor * ggml_dup(struct ggml_context * ctx, struct ggml_tensor * a)

描述:复制给定的张量a,返回一个新的张量。

参数:

  • ctx:上下文指针。
  • a:要复制的张量指针。

返回值:指向新复制的张量的指针。

ggml_dup_inplace

struct ggml_tensor * ggml_dup_inplace(struct ggml_context * ctx, struct ggml_tensor * a)

描述:在给定的上下文中,复制给定的张量a,如果inplace为true,则在原张量上进行复制。

参数:

  • ctx:上下文指针。
  • a:要复制的张量指针。

返回值:指向新复制的张量的指针。

ggml_add

struct ggml_tensor * ggml_add(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:在给定的上下文中,对给定的张量a和b进行相加操作,返回一个新的张量。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针。

返回值:指向相加结果张量的指针。

ggml_add_inplace

struct ggml_tensor * ggml_add_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:在给定的上下文中,对给定的张量a和b进行相加操作,如果inplace为true,则在原张量上进行操作。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针。

返回值:指向相加结果张量的指针。

ggml_add_cast

struct ggml_tensor * ggml_add_cast(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, enum   ggml_type     type)

描述:在给定的上下文中,对给定的张量a和b进行相加操作并进行类型转换。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针。
  • type:目标类型。

返回值:指向相加并转换类型后的张量的指针。

ggml_add1

struct ggml_tensor * ggml_add1(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:实现张量相加的功能,其中b是标量。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针(标量)。

返回值:指向相加结果张量的指针。

ggml_add1_inplace

struct ggml_tensor * ggml_add1_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b)

描述:实现张量相加并就地修改的功能,其中b是标量。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针(标量)。

返回值:指向相加结果张量的指针。

ggml_acc_impl

static struct ggml_tensor * ggml_acc_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t               nb1, size_t               nb2, size_t               nb3, size_t               offset, bool inplace)

描述:实现张量累积操作的函数。

参数:

  • ctx:上下文指针。
  • a:第一个张量指针。
  • b:第二个张量指针。
  • nb1, nb2, nb3:维度大小。
  • offset:偏移量。
  • inplace:是否就地操作。

返回值:指向累积结果张量的指针。

请注意,由于代码中包含了一些静态函数和实现细节,这些函数可能不是公开API的一部分,而是用于内部实现。在实际使用时,应参考库的文档或API规范来确定哪些函数是公开可用的。

GGML_OP_ACC 类型:枚举值 描述:表示累加操作的枚举值

GGML_OP_SUB 类型:枚举值 描述:表示减法操作的枚举值

GGML_OP_MUL 类型:枚举值 描述:表示乘法操作的枚举值

GGML_OP_DIV 类型:枚举值 描述:表示除法操作的枚举值

GGML_OP_SQR 类型:枚举值 描述:表示平方操作的枚举值

GGML_OP_SQRT 类型:枚举值 描述:表示开方操作的枚举值

GGML_OP_LOG 类型:枚举值 描述:表示对数操作的枚举值

GGML_OP_SUM 类型:枚举值 描述:表示求和操作的枚举值

GGML_OP_SUM_ROWS 类型:枚举值 描述:表示求行和操作的枚举值

GGML_OP_MEAN 类型:枚举值 描述:表示求平均值操作的枚举值

GGML_OP_ARGMAX 类型:枚举值 描述:表示求最大值索引操作的枚举值

GGML_OP_REPEAT 类型:枚举值 描述:表示重复操作的枚举值

GGML_OP_REPEAT_BACK 类型:枚举值 描述:表示重复反向传播操作的枚举值

GGML_OP_CONCAT 类型:枚举值 描述:表示连接操作的枚举值

ggml_tensor

描述:表示一个张量的结构体

字段 类型 描述
op 枚举值 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举值 张量类型
ne int64_t[] 张量维度大小

ggml_acc

struct ggml_tensor * ggml_acc(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset) 

描述:计算两个张量的加法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量
  • nb1, nb2, nb3, offset:操作参数

返回值:结果张量

ggml_acc_inplace

struct ggml_tensor * ggml_acc_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset) 

描述:计算两个张量的原地加法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量
  • nb1, nb2, nb3, offset:操作参数

返回值:结果张量

ggml_sub

struct ggml_tensor * ggml_sub(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的减法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_sub_inplace

struct ggml_tensor * ggml_sub_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地减法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_mul

struct ggml_tensor * ggml_mul(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的乘法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_mul_inplace

struct ggml_tensor * ggml_mul_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地乘法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_div

struct ggml_tensor * ggml_div(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的除法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_div_inplace

struct ggml_tensor * ggml_div_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:计算两个张量的原地除法

参数:

  • ctx:ggml_context 结构体指针
  • a:第一个张量
  • b:第二个张量

返回值:结果张量

ggml_sqr

struct ggml_tensor * ggml_sqr(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的平方

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_sqr_inplace

struct ggml_tensor * ggml_sqr_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地平方

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_sqrt

struct ggml_tensor * ggml_sqrt(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的开方

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_sqrt_inplace

struct ggml_tensor * ggml_sqrt_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地开方

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_log

struct ggml_tensor * ggml_log(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的对数

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_log_inplace

struct ggml_tensor * ggml_log_inplace(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的原地对数

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_sum

struct ggml_tensor * ggml_sum(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的求和

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_sum_rows

struct ggml_tensor * ggml_sum_rows(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的行求和

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_mean

struct ggml_tensor * ggml_mean(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的平均值

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_argmax

struct ggml_tensor * ggml_argmax(struct ggml_context * ctx, struct ggml_tensor * a) 

描述:计算张量的最大值索引

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量

返回值:结果张量

ggml_repeat

struct ggml_tensor * ggml_repeat(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:将张量沿着指定维度重复

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量
  • b:重复次数张量

返回值:结果张量

ggml_repeat_back

struct ggml_tensor * ggml_repeat_back(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b) 

描述:重复反向传播函数,用于计算梯度

参数:

  • ctx:ggml_context 结构体指针
  • a:输入张量
  • b:重复次数张量

返回值:结果张量

ggml_concat

struct ggml_tensor * ggml_concat(struct ggml_context* ctx, 

描述:将两个张量在指定维度上连接

参数:

  • ctx:ggml_context 结构体指针
  • 待补充…

返回值:结果张量

请注意,上述函数列表中,ggml_concat函数的描述不完整,因为代码片段在此处被截断。如果需要完整描述,请提供完整的代码片段。

无显式定义的常量。

无显式定义的结构体。

ggml_concat

struct ggml_tensor * ggml_concat(
        struct ggml_context * ctx,
        struct ggml_tensor * a,
        struct ggml_tensor * b)

描述:将两个张量在指定维度上连接起来。

参数:

  • ctx:上下文指针。
  • a:第一个输入张量。
  • b:第二个输入张量。

返回值:连接后的新张量。

ggml_abs

struct ggml_tensor * ggml_abs(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的绝对值。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:绝对值后的新张量。

ggml_abs_inplace

struct ggml_tensor * ggml_abs_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的绝对值并覆盖原张量。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_sgn

struct ggml_tensor * ggml_sgn(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的符号。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:符号后的新张量。

ggml_sgn_inplace

struct ggml_tensor * ggml_sgn_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的符号并覆盖原张量。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_neg

struct ggml_tensor * ggml_neg(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的相反数。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:相反数后的新张量。

ggml_neg_inplace

struct ggml_tensor * ggml_neg_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:计算张量的相反数并覆盖原张量。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_step

struct ggml_tensor * ggml_step(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行步函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:步函数操作后的新张量。

ggml_step_inplace

struct ggml_tensor * ggml_step_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位步函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_tanh

struct ggml_tensor * ggml_tanh(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行双曲正切操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:双曲正切操作后的新张量。

ggml_tanh_inplace

struct ggml_tensor * ggml_tanh_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位双曲正切操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_elu

struct ggml_tensor * ggml_elu(
    struct ggml_context * ctx,
    struct ggml_tensor  * a)

描述:对输入的张量进行ELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:ELU激活函数操作后的新张量。

ggml_elu_inplace

struct ggml_tensor * ggml_elu_inplace(
    struct ggml_context * ctx,
    struct ggml_tensor  * a)

描述:对输入的张量进行原位ELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_relu

struct ggml_tensor * ggml_relu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行ReLU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:ReLU激活函数操作后的新张量。

ggml_relu_inplace

struct ggml_tensor * ggml_relu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位ReLU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_leaky_relu

struct ggml_tensor * ggml_leaky_relu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a, float negative_slope, bool inplace)

描述:对输入的张量进行Leaky ReLU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • negative_slope:负斜率。
  • inplace:是否进行原位操作。

返回值:Leaky ReLU激活函数操作后的新张量。

ggml_gelu

struct ggml_tensor * ggml_gelu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行GELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:GELU激活函数操作后的新张量。

ggml_gelu_inplace

struct ggml_tensor * ggml_gelu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位GELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_gelu_quick

struct ggml_tensor * ggml_gelu_quick(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行快速GELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:快速GELU激活函数操作后的新张量。

ggml_gelu_quick_inplace

struct ggml_tensor * ggml_gelu_quick_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位快速GELU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_silu

struct ggml_tensor * ggml_silu(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行SiLU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:SiLU激活函数操作后的新张量。

ggml_silu_inplace

struct ggml_tensor * ggml_silu_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a)

描述:对输入的张量进行原位SiLU激活函数操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。

返回值:原位操作后的张量。

ggml_silu_back

struct ggml_tensor * ggml_silu_back(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:对输入的张量进行SiLU反向传播操作。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • b:输出张量。

返回值:SiLU反向传播操作后的新张量。

ggml_norm

struct ggml_tensor * ggml_norm(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的范数。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • eps:用于归一化的epsilon值。

返回值:范数计算后的新张量。

ggml_norm_inplace

struct ggml_tensor * ggml_norm_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的范数并将结果存储在原始张量中。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • eps:用于归一化的epsilon值。

返回值:原位范数计算后的张量。

ggml_rms_norm

struct ggml_tensor * ggml_rms_norm(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float  eps)

描述:计算给定张量的RMS范数。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • eps:用于归一化的epsilon值。

返回值:RMS范数计算后的新张量。

ggml_rms_norm_inplace

struct ggml_tensor * ggml_rms_norm_inplace(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        float eps)

描述:计算给定张量的RMS范数并将结果存储在原始张量中。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • eps:用于归一化的epsilon值。

返回值:原位RMS范数计算后的张量。

ggml_rms_norm_back

struct ggml_tensor * ggml_rms_norm_back(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b,
        float  eps)

描述:计算给定张量的RMS范数的反向传播。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • b:输出张量。
  • eps:用于归一化的epsilon值。

返回值:RMS范数反向传播后的新张量。

ggml_group_norm

struct ggml_tensor * ggml_group_norm(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int n_groups)

描述:对输入张量进行分组归一化处理。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • n_groups:分组数量。

返回值:分组归一化后的新张量。

ggml_group_norm_inplace

struct ggml_tensor * ggml_group_norm_inplace(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int n_groups)

描述:对输入张量进行原地分组归一化处理。

参数:

  • ctx:上下文指针。
  • a:输入张量。
  • n_groups:分组数量。

返回值:原地分组归一化后的张量。

ggml_mul_mat

struct ggml_tensor * ggml_mul_mat(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:对两个张量进行矩阵乘法运算。

参数:

  • ctx:上下文指针。
  • a:第一个输入张量。
  • b:第二个输入张量。

返回值:矩阵乘法运算后的新张量。

ggml_mul_mat_set_prec

void ggml_mul_mat_set_prec(
        struct ggml_tensor * a,
        enum ggml_prec       prec)

描述:设置矩阵乘法张量的精度。

参数:

  • a:输入张量。
  • prec:精度类型。

返回值:无返回值。

ggml_mul_mat_id

struct ggml_tensor * ggml_mul_mat_id(
        struct ggml_context * ctx,
        struct ggml_tensor  * const as[],
        int                   n_as,
        struct ggml_tensor  * ids,
        int                   id,
        struct ggml_tensor  * b)

描述:对多个输入张量和一个标识张量进行矩阵乘法运算。

参数:

  • ctx:上下文指针。
  • as:输入张量数组。
  • n_as:输入张量数量。
  • ids:标识张量。
  • id:标识值。
  • b:第二个输入张量。

返回值:矩阵乘法运算后的新张量。

ggml_out_prod

struct ggml_tensor * ggml_out_prod(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b)

描述:计算两个张量的外积。

参数:

  • ctx:上下文指针。
  • a:第一个输入张量。
  • b:第二个输入张量。

返回值:外积运算后的新张量。

GGML_TYPE_F32

类型:枚举

描述:表示数据类型为32位浮点数。

GGML_OP_OUT_PROD

类型:枚举

描述:表示操作类型为外积。

GGML_OP_SCALE

类型:枚举

描述:表示操作类型为标量乘法。

GGML_OP_SET

类型:枚举

描述:表示操作类型为设置张量的值。

GGML_OP_CPY

类型:枚举

描述:表示操作类型为复制。

GGML_OP_CONT

类型:枚举

描述:表示操作类型为创建连续张量。

GGML_OP_RESHAPE

类型:枚举

描述:表示操作类型为重新塑形张量。

ggml_tensor

描述:表示一个张量结构体。

字段 类型 描述
op 枚举 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举 数据类型
ne int64_t[] 张量的维度大小
name char* 张量的名称

ggml_new_tensor

struct ggml_tensor * ggml_new_tensor(struct ggml_context * ctx, enum ggml_type type, int ndims, const int64_t ne[]);

描述:创建一个新的张量。

参数:

  • ctx:ggml上下文。
  • type:张量的数据类型。
  • ndims:张量的维度数。
  • ne:张量的维度大小数组。

返回值:新创建的张量。

ggml_scale_impl

static struct ggml_tensor * ggml_scale_impl(struct ggml_context * ctx, struct ggml_tensor * a, float s, bool inplace);

描述:对张量进行标量乘法的实现函数。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • s:标量值。
  • inplace:是否原地操作。

返回值:结果张量。

ggml_scale

struct ggml_tensor * ggml_scale(struct ggml_context * ctx, struct ggml_tensor * a, float s);

描述:对张量进行标量乘法,返回新的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • s:标量值。

返回值:新的张量。

ggml_scale_inplace

struct ggml_tensor * ggml_scale_inplace(struct ggml_context * ctx, struct ggml_tensor * a, float s);

描述:对张量进行标量乘法,原地操作。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • s:标量值。

返回值:修改后的张量。

ggml_set_impl

static struct ggml_tensor * ggml_set_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset, bool inplace);

描述:设置两个张量的值的实现函数。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。
  • nb1, nb2, nb3:大小信息。
  • offset:偏移量。
  • inplace:是否原地操作。

返回值:结果张量。

ggml_set

struct ggml_tensor * ggml_set(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset);

描述:设置两个张量的值(不进行原地操作)。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。
  • nb1, nb2, nb3:大小信息。
  • offset:偏移量。

返回值:结果张量。

ggml_set_inplace

struct ggml_tensor * ggml_set_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, size_t nb1, size_t nb2, size_t nb3, size_t offset);

描述:设置两个张量的值(进行原地操作)。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。
  • nb1, nb2, nb3:大小信息。
  • offset:偏移量。

返回值:结果张量。

ggml_cpy_impl

static struct ggml_tensor * ggml_cpy_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, bool inplace);

描述:复制张量b的数据到张量a中的实现函数。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。
  • inplace:是否原地操作。

返回值:结果张量。

ggml_cpy

struct ggml_tensor * ggml_cpy(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:复制张量b的数据到张量a中,返回新的张量。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。

返回值:新的张量。

ggml_cpy_inplace

struct ggml_tensor * ggml_cpy_inplace(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:在原地将张量b的数据复制到张量a中,返回修改后的张量a。

参数:

  • ctx:ggml上下文。
  • a:目标张量。
  • b:源张量。

返回值:修改后的张量a。

ggml_cont_impl

static struct ggml_tensor * ggml_cont_impl(struct ggml_context * ctx, struct ggml_tensor * a, bool inplace);

描述:创建一个连续的张量的实现函数。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • inplace:是否原地操作。

返回值:结果张量。

ggml_cont

struct ggml_tensor * ggml_cont(struct ggml_context * ctx, struct ggml_tensor * a);

描述:创建一个连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。

返回值:新的张量。

ggml_cont_inplace

struct ggml_tensor * ggml_cont_inplace(struct ggml_context * ctx, struct ggml_tensor * a);

描述:在原地操作的情况下创建一个连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。

返回值:修改后的张量。

ggml_cont_1d

struct ggml_tensor * ggml_cont_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0);

描述:创建一个一维连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0:一维大小。

返回值:新的张量。

ggml_cont_2d

struct ggml_tensor * ggml_cont_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1);

描述:创建一个二维连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1:二维大小。

返回值:新的张量。

ggml_cont_3d

struct ggml_tensor * ggml_cont_3d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2);

描述:创建一个三维连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1, ne2:三维大小。

返回值:新的张量。

ggml_cont_4d

struct ggml_tensor * ggml_cont_4d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2, int64_t ne3);

描述:创建一个四维连续的张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1, ne2, ne3:四维大小。

返回值:新的张量。

ggml_reshape

struct ggml_tensor * ggml_reshape(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:重新塑形张量。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • b:目标形状张量。

返回值:重塑后的张量。

ggml_reshape_1d

struct ggml_tensor * ggml_reshape_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0);

描述:一维张量的重新塑形。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0:一维大小。

返回值:重塑后的张量。

ggml_reshape_2d

struct ggml_tensor * ggml_reshape_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1);

描述:二维张量的重新塑形。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1:二维大小。

返回值:重塑后的张量。

ggml_reshape_3d

struct ggml_tensor * ggml_reshape_3d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2);

描述:三维张量的重新塑形。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1, ne2:三维大小。

返回值:重塑后的张量。

ggml_reshape_4d

struct ggml_tensor * ggml_reshape_4d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2, int64_t ne3);

描述:四维张量的重新塑形。

参数:

  • ctx:ggml上下文。
  • a:输入张量。
  • ne0, ne1, ne2, ne3:四维大小。

返回值:重塑后的张量。

GGML_OP_RESHAPE

类型:枚举值

描述:表示重塑操作的枚举值。

GGML_OP_VIEW

类型:枚举值

描述:表示视图操作的枚举值。

GGML_OP_PERMUTE

类型:枚举值

描述:表示排列操作的枚举值。

GGML_OP_TRANSPOSE

类型:枚举值

描述:表示转置操作的枚举值。

GGML_OP_GET_ROWS

类型:枚举值

描述:表示获取行操作的枚举值。

GGML_OP_GET_ROWS_BACK

类型:枚举值

描述:表示获取行反向操作的枚举值。

GGML_OP_DIAG

类型:枚举值

描述:表示对角线操作的枚举值。

GGML_OP_DIAG_MASK_INF

类型:枚举值

描述:表示对角线掩码无穷大操作的枚举值。

GGML_OP_DIAG_MASK_ZERO

类型:枚举值

描述:表示对角线掩码零操作的枚举值。

GGML_OP_SOFT_MAX

类型:枚举值

描述:表示softmax操作的枚举值。

ggml_tensor

描述:表示张量的结构体。

字段 类型 描述
op 枚举值 操作类型
grad ggml_tensor* 梯度张量
src ggml_tensor* 源张量
type 枚举值 张量类型
ne int64_t[] 维度大小数组
nb size_t[] 维度步长数组
name char* 张量名称

ggml_format_name

void ggml_format_name(struct ggml_tensor * tensor, const char * format, ...);

描述:格式化张量的名称。

参数:

  • tensor:张量指针
  • format:格式化字符串

ggml_new_tensor_impl

struct ggml_tensor * ggml_new_tensor_impl(struct ggml_context * ctx, enum ggml_type type, int n_dims, const int64_t * ne, struct ggml_tensor * src, size_t offset);

描述:创建一个新的张量。

参数:

  • ctx:上下文指针
  • type:张量类型
  • n_dims:维度数量
  • ne:维度大小数组
  • src:源张量指针
  • offset:偏移量

返回值:新创建的张量指针

ggml_set_op_params

void ggml_set_op_params(struct ggml_tensor * tensor, void * params, size_t size);

描述:设置张量的操作参数。

参数:

  • tensor:张量指针
  • params:参数指针
  • size:参数大小

ggml_dup_tensor

struct ggml_tensor * ggml_dup_tensor(struct ggml_context * ctx, struct ggml_tensor * tensor);

描述:复制一个张量。

参数:

  • ctx:上下文指针
  • tensor:源张量指针

返回值:复制后的张量指针

ggml_view_impl

struct ggml_tensor * ggml_view_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_dims, const int64_t * ne, size_t offset);

描述:实现视图操作的内部函数。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_dims:维度数量
  • ne:维度大小数组
  • offset:偏移量

返回值:视图操作的结果张量指针

ggml_view_1d

struct ggml_tensor * ggml_view_1d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, size_t offset);

描述:创建一个一维视图的张量。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • ne0:第一个维度的大小
  • offset:偏移量

返回值:创建的一维视图张量指针

ggml_view_2d

struct ggml_tensor * ggml_view_2d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, size_t nb1, size_t offset);

描述:创建一个二维视图的张量。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • ne0:第一个维度的大小
  • ne1:第二个维度的大小
  • nb1:第二个维度的步长
  • offset:偏移量

返回值:创建的二维视图张量指针

ggml_view_3d

struct ggml_tensor * ggml_view_3d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2, size_t nb1, size_t nb2, size_t offset);

描述:创建一个三维视图的张量。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • ne0:第一个维度的大小
  • ne1:第二个维度的大小
  • ne2:第三个维度的大小
  • nb1:第二个维度的步长
  • nb2:第三个维度的步长
  • offset:偏移量

返回值:创建的三维视图张量指针

ggml_view_4d

struct ggml_tensor * ggml_view_4d(struct ggml_context * ctx, struct ggml_tensor * a, int64_t ne0, int64_t ne1, int64_t ne2, int64_t ne3, size_t nb1, size_t nb2, size_t nb3, size_t offset);

描述:创建一个四维视图的张量。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • ne0:第一个维度的大小
  • ne1:第二个维度的大小
  • ne2:第三个维度的大小
  • ne3:第四个维度的大小
  • nb1:第二维度的步长
  • nb2:第三维度的步长
  • nb3:第四维度的步长
  • offset:偏移量

返回值:创建的四维视图张量指针

ggml_permute

struct ggml_tensor * ggml_permute(struct ggml_context * ctx, struct ggml_tensor * a, int axis0, int axis1, int axis2, int axis3);

描述:对张量进行排列操作。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • axis0:第一个轴
  • axis1:第二个轴
  • axis2:第三个轴
  • axis3:第四个轴

返回值:排列操作的结果张量指针

ggml_transpose

struct ggml_tensor * ggml_transpose(struct ggml_context * ctx, struct ggml_tensor * a);

描述:对张量进行转置操作。

参数:

  • ctx:上下文指针
  • a:输入张量指针

返回值:转置操作的结果张量指针

ggml_get_rows

struct ggml_tensor * ggml_get_rows(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b);

描述:从两个张量中获取行数据,返回一个新的张量。

参数:

  • ctx:上下文指针
  • a:第一个张量指针
  • b:第二个张量指针

返回值:获取行数据的结果张量指针

ggml_get_rows_back

struct ggml_tensor * ggml_get_rows_back(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * b, struct ggml_tensor * c);

描述:从三个张量中获取行数据的反向操作,返回一个新的张量。

参数:

  • ctx:上下文指针
  • a:第一个张量指针
  • b:第二个张量指针
  • c:第三个张量指针

返回值:获取行数据反向操作的结果张量指针

ggml_diag

struct ggml_tensor * ggml_diag(struct ggml_context * ctx, struct ggml_tensor * a);

描述:创建一个对角张量。

参数:

  • ctx:上下文指针
  • a:输入张量指针

返回值:对角张量指针

ggml_diag_mask_inf_impl

static struct ggml_tensor * ggml_diag_mask_inf_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_past, bool inplace);

描述:实现对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷的内部函数。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数
  • inplace:是否在原张量上进行操作

返回值:掩码操作的结果张量指针

ggml_diag_mask_inf

struct ggml_tensor * ggml_diag_mask_inf(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_inf_inplace

struct ggml_tensor * ggml_diag_mask_inf_inplace(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为负无穷,同时在原张量上进行操作。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero_impl

static struct ggml_tensor * ggml_diag_mask_zero_impl(struct ggml_context * ctx, struct ggml_tensor * a, int n_past, bool inplace);

描述:实现对输入张量进行对角线以下部分的掩码操作,将其设置为零的内部函数。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数
  • inplace:是否在原张量上进行操作

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero

struct ggml_tensor * ggml_diag_mask_zero(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为零。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_diag_mask_zero_inplace

struct ggml_tensor * ggml_diag_mask_zero_inplace(struct ggml_context * ctx, struct ggml_tensor * a, int n_past);

描述:对输入张量进行对角线以下部分的掩码操作,将其设置为零,同时在原张量上进行操作。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • n_past:过去的时间步数

返回值:掩码操作的结果张量指针

ggml_soft_max_impl

static struct ggml_tensor * ggml_soft_max_impl(struct ggml_context * ctx, struct ggml_tensor * a, struct ggml_tensor * mask, float scale, bool inplace);

描述:实现 softmax 操作的内部函数。

参数:

  • ctx:上下文指针
  • a:输入张量指针
  • mask:掩码张量指针
  • scale:缩放因子
  • inplace:是否在原张量上进行操作

返回值:softmax 操作的结果张量指针

GGML_OP_SOFT_MAX

类型:枚举值

描述:表示softmax操作的枚举值。

GGML_OP_SOFT_MAX_BACK

类型:枚举值

描述:表示softmax反向传播操作的枚举值。

GGML_OP_ROPE

类型:枚举值

描述:表示rope操作的枚举值。

GGML_OP_ROPE_BACK

类型:枚举值

描述:表示rope反向传播操作的枚举值。

GGML_OP_ALIBI

类型:枚举值

描述:表示alibi操作的枚举值。

GGML_OP_CLAMP

类型:枚举值

描述:表示clamp操作的枚举值。

GGML_OP_CONV_TRANSPOSE_1D

类型:枚举值

描述:表示一维卷积转置操作的枚举值。

GGML_OP_IM2COL

类型:枚举值

描述:表示im2col操作的枚举值。

ggml_tensor

描述:表示张量的结构体,包含张量的操作类型、梯度信息、源张量等。

字段 类型 描述
op 枚举值 张量的操作类型
grad ggml_tensor* 张量的梯度信息
src ggml_tensor** 源张量

ggml_soft_max

struct ggml_tensor * ggml_soft_max(struct ggml_context * ctx, struct ggml_tensor  * a);

描述:对给定的张量进行softmax操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_inplace

struct ggml_tensor * ggml_soft_max_inplace(struct ggml_context * ctx, struct ggml_tensor  * a);

描述:对给定的张量进行原地softmax操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_ext

struct ggml_tensor * ggml_soft_max_ext(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * mask, float scale);

描述:对给定的张量进行扩展的softmax操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • mask:掩码张量指针。
  • scale:缩放因子。

返回值:处理后的张量指针。

ggml_soft_max_back

struct ggml_tensor * ggml_soft_max_back(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b);

描述:实现softmax反向传播的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。

返回值:处理后的张量指针。

ggml_soft_max_back_inplace

struct ggml_tensor * ggml_soft_max_back_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b);

描述:实现softmax反向传播的原地操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。

返回值:处理后的张量指针。

ggml_rope

struct ggml_tensor * ggml_rope(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx);

描述:对给定的张量进行rope操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • mode:模式。
  • n_ctx:上下文数量。

返回值:处理后的张量指针。

ggml_rope_inplace

struct ggml_tensor * ggml_rope_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx);

描述:对给定的张量进行原地rope操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • mode:模式。
  • n_ctx:上下文数量。

返回值:处理后的张量指针。

ggml_rope_custom

struct ggml_tensor * ggml_rope_custom(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow);

描述:对给定的张量进行自定义rope操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • mode:模式。
  • n_ctx:上下文数量。
  • n_orig_ctx:原始上下文数量。
  • freq_base:频率基数。
  • freq_scale:频率比例。
  • ext_factor:扩展因子。
  • attn_factor:注意力因子。
  • beta_fast:快速beta。
  • beta_slow:慢速beta。

返回值:处理后的张量指针。

ggml_rope_custom_inplace

struct ggml_tensor * ggml_rope_custom_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow);

描述:对给定的张量进行原地自定义rope操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • mode:模式。
  • n_ctx:上下文数量。
  • n_orig_ctx:原始上下文数量。
  • freq_base:频率基数。
  • freq_scale:频率比例。
  • ext_factor:扩展因子。
  • attn_factor:注意力因子。
  • beta_fast:快速beta。
  • beta_slow:慢速beta。

返回值:处理后的张量指针。

ggml_rope_xpos_inplace

struct ggml_tensor * ggml_rope_xpos_inplace(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, float base, bool down);

描述:对给定的张量进行原地xpos操作。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • base:基数。
  • down:是否向下。

返回值:处理后的张量指针。

ggml_rope_back

struct ggml_tensor * ggml_rope_back(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int n_dims, int mode, int n_ctx, int n_orig_ctx, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow, float xpos_base, bool xpos_down);

描述:实现rope反向传播的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:输入张量指针。
  • n_dims:张量维度。
  • mode:模式。
  • n_ctx:上下文数量。
  • n_orig_ctx:原始上下文数量。
  • freq_base:频率基数。
  • freq_scale:频率比例。
  • ext_factor:扩展因子。
  • attn_factor:注意力因子。
  • beta_fast:快速beta。
  • beta_slow:慢速beta。
  • xpos_base:xpos基数。
  • xpos_down:xpos是否向下。

返回值:处理后的张量指针。

ggml_alibi

struct ggml_tensor * ggml_alibi(struct ggml_context * ctx, struct ggml_tensor  * a, int n_past, int n_head, float bias_max);

描述:实现alibi操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • n_past:过去的时间步数。
  • n_head:头数。
  • bias_max:最大偏置。

返回值:处理后的张量指针。

ggml_clamp

struct ggml_tensor * ggml_clamp(struct ggml_context * ctx, struct ggml_tensor  * a, float min, float max);

描述:实现clamp操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • min:最小值。
  • max:最大值。

返回值:处理后的张量指针。

ggml_conv_1d

struct ggml_tensor * ggml_conv_1d(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int p0, int d0);

描述:实现一维卷积操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:卷积核张量指针。
  • s0:步长。
  • p0:填充。
  • d0:膨胀。

返回值:处理后的张量指针。

ggml_conv_1d_ph

struct ggml_tensor * ggml_conv_1d_ph(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s, int d);

描述:实现一维卷积操作的函数,带有填充和膨胀参数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:卷积核张量指针。
  • s:步长。
  • d:膨胀。

返回值:处理后的张量指针。

ggml_conv_transpose_1d

struct ggml_tensor * ggml_conv_transpose_1d(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int p0, int d0);

描述:实现一维卷积转置操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:卷积核张量指针。
  • s0:步长。
  • p0:填充。
  • d0:膨胀。

返回值:处理后的张量指针。

ggml_conv_2d

struct ggml_tensor * ggml_conv_2d(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int s1, int p0, int p1);

描述:实现二维卷积操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:卷积核张量指针。
  • s0:步长。
  • s1:步长。
  • p0:填充。
  • p1:填充。

返回值:处理后的张量指针。

ggml_im2col

struct ggml_tensor * ggml_im2col(struct ggml_context * ctx, struct ggml_tensor  * a, struct ggml_tensor  * b, int s0, int s1, int p0, int p1, int d0, int d1, bool is_2D);

描述:实现im2col操作的函数。

参数:

  • ctx:上下文结构体指针。
  • a:输入张量指针。
  • b:卷积核张量指针。
  • s0:步长。
  • s1:步长。
  • p0:填充。
  • p1:填充。
  • d0:膨胀。
  • d1:膨胀。
  • is_2D:是否为二维数据。

返回值:处理后的张量指针。

以上是对给定代码段中的常量、结构体、公开函数的提取和总结。

ggml_conv_2d

struct ggml_tensor * ggml_conv_2d(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b,
        int                   s0,
        int                   s1,
        int                   p0,
        int                   p1,
        int                   d0,
        int                   d1);

描述: 实现二维卷积操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • b: 卷积核张量。
  • s0, s1: 步长。
  • p0, p1: 填充。
  • d0, d1: 膨胀。

返回值: 卷积结果张量。

ggml_conv_2d_sk_p0

struct ggml_tensor * ggml_conv_2d_sk_p0(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b);

描述: 实现带有默认填充的二维卷积操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • b: 卷积核张量。

返回值: 卷积结果张量。

ggml_conv_2d_s1_ph

struct ggml_tensor * ggml_conv_2d_s1_ph(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b);

描述: 实现带有默认步长和自动填充的二维卷积操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • b: 卷积核张量。

返回值: 卷积结果张量。

ggml_conv_transpose_2d_p0

struct ggml_tensor * ggml_conv_transpose_2d_p0(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b,
        int                   stride);

描述: 实现带有默认填充的二维转置卷积操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • b: 卷积核张量。
  • stride: 步长。

返回值: 转置卷积结果张量。

ggml_pool_1d

struct ggml_tensor * ggml_pool_1d(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        enum ggml_op_pool     op,
        int                   k0,
        int                   s0,
        int                   p0);

描述: 对输入的一维张量进行池化操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • op: 池化操作类型。
  • k0: 池化核大小。
  • s0: 步长。
  • p0: 填充。

返回值: 池化结果张量。

ggml_pool_2d

struct ggml_tensor * ggml_pool_2d(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        enum ggml_op_pool     op,
        int                   k0,
        int                   k1,
        int                   s0,
        int                   s1,
        float                 p0,
        float                 p1);

描述: 对输入的二维张量进行池化操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • op: 池化操作类型。
  • k0, k1: 池化核大小。
  • s0, s1: 步长。
  • p0, p1: 填充。

返回值: 池化结果张量。

ggml_upscale_impl

static struct ggml_tensor * ggml_upscale_impl(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int scale_factor);

描述: 实现对输入张量进行上采样操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • scale_factor: 缩放因子。

返回值: 上采样结果张量。

ggml_pad

struct ggml_tensor * ggml_pad(
    struct ggml_context * ctx,
    struct ggml_tensor  * a,
    int p0, int p1, int p2, int p3);

描述: 对输入张量进行填充操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • p0, p1, p2, p3: 填充大小。

返回值: 填充结果张量。

ggml_upscale

struct ggml_tensor * ggml_upscale(
    struct ggml_context * ctx,
    struct ggml_tensor * a,
    int scale_factor);

描述: 对输入张量进行上采样操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • scale_factor: 缩放因子。

返回值: 上采样结果张量。

ggml_argsort

struct ggml_tensor * ggml_argsort(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        enum ggml_sort_order  order);

描述: 对输入张量进行排序操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • order: 排序顺序。

返回值: 排序结果张量。

ggml_top_k

struct ggml_tensor * ggml_top_k(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   k);

描述: 返回输入张量中前 k 个最大值的张量。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • k: 要返回的元素数量。

返回值: 前 k 个最大值的张量。

ggml_flash_attn

struct ggml_tensor * ggml_flash_attn(
        struct ggml_context * ctx,
        struct ggml_tensor  * q,
        struct ggml_tensor  * k,
        struct ggml_tensor  * v,
        bool                  masked);

描述: 计算注意力机制的输出张量。

参数:

  • ctx: 上下文指针。
  • q: 查询张量。
  • k: 键张量。
  • v: 值张量。
  • masked: 是否使用掩码。

返回值: 注意力机制输出张量。

ggml_flash_ff

struct ggml_tensor * ggml_flash_ff(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        struct ggml_tensor  * b0,
        struct ggml_tensor  * b1,
        struct ggml_tensor  * c0,
        struct ggml_tensor  * c1);

描述: 计算前馈神经网络的输出张量。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • b0, b1: 权重张量。
  • c0, c1: 偏置张量。

返回值: 前馈神经网络输出张量。

ggml_flash_attn_back

struct ggml_tensor * ggml_flash_attn_back(
        struct ggml_context * ctx,
        struct ggml_tensor  * q,
        struct ggml_tensor  * k,
        struct ggml_tensor  * v,
        struct ggml_tensor  * d,
        bool                  masked);

描述: 计算注意力机制的反向传播输出张量。

参数:

  • ctx: 上下文指针。
  • q: 查询张量。
  • k: 键张量。
  • v: 值张量。
  • d: 输入张量。
  • masked: 是否使用掩码。

返回值: 注意力机制反向传播输出张量。

ggml_win_part

struct ggml_tensor * ggml_win_part(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   w);

描述: 对输入张量进行窗口划分操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • w: 窗口大小。

返回值: 窗口划分结果张量。

ggml_win_unpart

struct ggml_tensor * ggml_win_unpart(
        struct ggml_context * ctx,
        struct ggml_tensor  * a,
        int                   w0,
        int                   h0,
        int                   w);

描述: 对输入张量进行窗口反划分操作。

参数:

  • ctx: 上下文指针。
  • a: 输入张量。
  • w0, h0: 窗口大小。
  • w: 窗口大小。

返回值: 窗口反划分结果张量。

以上是根据提供的代码段提取的常量、结构体和公开函数。由于代码段中没有定义任何常量或结构体,因此这部分为空。所有公开函数都已列出,并附有其描述、参数和返回值。

GGML_TYPE_F32

类型:枚举

描述:表示32位浮点数类型。

GGML_TYPE_F16

类型:枚举

描述:表示16位浮点数类型。

GGML 非官方中文文档(3)https://developer.aliyun.com/article/1524383

相关文章
|
2月前
|
数据挖掘 API Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(下)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
45 1
|
2月前
|
存储 算法 异构计算
GGML 非官方中文文档(5)
GGML 非官方中文文档
23 1
|
2月前
|
存储 缓存 C++
GGML 非官方中文文档(1)
GGML 非官方中文文档
71 1
|
2月前
|
存储 异构计算 索引
GGML 非官方中文文档(3)
GGML 非官方中文文档
36 0
|
2月前
|
存储 算法 图计算
GGML 非官方中文文档(4)
GGML 非官方中文文档
41 0
|
2月前
|
缓存 NoSQL Go
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)(上)
《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
94 1
|
2月前
|
JavaScript 前端开发 搜索推荐
《VitePress 简易速速上手小册》第1章:VitePress 入门(2024 最新版)
《VitePress 简易速速上手小册》第1章:VitePress 入门(2024 最新版)
120 1
|
2月前
|
JSON JavaScript 前端开发
dayjs 中文文档
dayjs 中文文档
528 0
|
2月前
|
资源调度 JavaScript 搜索推荐
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
153 0
|
8月前
|
JavaScript 前端开发 程序员
从零开发和发布自己的wordpress插件到官方插件库完全指南
wordpress是一款很流行的开源博客程序,全世界有很多网站都在使用wordpress,程序员们也喜欢拿来做自己的技术博客,对于自己不满意的地方,那肯定也需要自己动手来修改了,下面就介绍从开发到发布一个wordpress插件的完整流程
84 0