oarust 0.8.6

GPU-first semantic computing engine written in Rust
// @generated by tool/gen/fn/generate.py; DO NOT EDIT.
// schema=ml_training.json schema_version=1 generator_version=64
// schema_sha256=6678961ee57f24310158676c7b4fe0821e21ca48db7edcb20d2a749a164976ae
// Mechanical tape attachments; concrete saved-state node behavior remains private.

use crate::{Matrix, Result};

use crate::ml::autograd::{
	node::{GradNode, operation::GradNodeOperation},
	tape::record_node,
};

use crate::ml::autograd::node::operation::{GradNodeSiluMul, GradNodeSwiglu};

pub(in crate::ml) fn record_swiglu(gate: &Matrix, up: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Swiglu(
		GradNodeSwiglu {
			gate: gate.clone(),
			up: up.clone(),
			output_id: result.value_id(),
		},
	)))
}

pub(in crate::ml) fn record_silu_mul(
	input: &Matrix,
	intermediate_size: usize,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::SiluMul(
		GradNodeSiluMul {
			input: input.clone(),
			intermediate_size,
			output_id: result.value_id(),
		},
	)))
}