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