[INFO] cloning repository https://github.com/Alessio2405/LLM-in-Rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Alessio2405/LLM-in-Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlessio2405%2FLLM-in-Rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlessio2405%2FLLM-in-Rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] fa3355d6ef47473f2587f9291e19fd88a53acc2d
[INFO] checking Alessio2405/LLM-in-Rust against master#f8463896a9b36a04899c013bd8825a7fd29dd7a4 for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlessio2405%2FLLM-in-Rust" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Alessio2405/LLM-in-Rust
[INFO] finished tweaking git repo https://github.com/Alessio2405/LLM-in-Rust
[INFO] tweaked toml for git repo https://github.com/Alessio2405/LLM-in-Rust written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Alessio2405/LLM-in-Rust on toolchain f8463896a9b36a04899c013bd8825a7fd29dd7a4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Alessio2405/LLM-in-Rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded noisy_float v0.2.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 122cc20209a2d328dd2f1c58af76042fc3170484cdd66d24227a69213e0450cc
[INFO] running `Command { std: "docker" "start" "-a" "122cc20209a2d328dd2f1c58af76042fc3170484cdd66d24227a69213e0450cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "122cc20209a2d328dd2f1c58af76042fc3170484cdd66d24227a69213e0450cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "122cc20209a2d328dd2f1c58af76042fc3170484cdd66d24227a69213e0450cc", kill_on_drop: false }`
[INFO] [stdout] 122cc20209a2d328dd2f1c58af76042fc3170484cdd66d24227a69213e0450cc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+f8463896a9b36a04899c013bd8825a7fd29dd7a4" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f4191d6d6861b31b6da0ea99ccc9a8eaa92b57ed84fbcfb59e003a750fa794f5
[INFO] running `Command { std: "docker" "start" "-a" "f4191d6d6861b31b6da0ea99ccc9a8eaa92b57ed84fbcfb59e003a750fa794f5", kill_on_drop: false }`
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking num-traits v0.2.19
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking noisy_float v0.2.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking ndarray v0.15.6
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking ndarray-rand v0.14.0
[INFO] [stderr]     Checking ndarray-stats v0.5.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking rust-llm v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]  --> src/rotary.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::f32::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Axis`
[INFO] [stdout]  --> src/attention.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2, s, Axis};
[INFO] [stdout]   |                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rotary::RotaryEmbedding`
[INFO] [stdout]  --> src/attention.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::rotary::RotaryEmbedding;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]  --> src/embedding.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::f32::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Array1`
[INFO] [stdout]  --> src/loss.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::Array2`
[INFO] [stdout]  --> src/training.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::Array2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/checkpoint.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Array1`
[INFO] [stdout]  --> src/optimizer.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::llm::LLM`
[INFO] [stdout]  --> src/backprop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::llm::LLM;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Adam` and `SGD`
[INFO] [stdout]  --> src/backprop.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::optimizer::{Parameter, Optimizer, SGD, Adam, GradientClipper};
[INFO] [stdout]   |                                              ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Adam` and `SGD`
[INFO] [stdout]   --> src/main.rs:30:28
[INFO] [stdout]    |
[INFO] [stdout] 30 | use optimizer::{Parameter, SGD, Adam};
[INFO] [stdout]    |                            ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cross_entropy_gradient`
[INFO] [stdout]   --> src/main.rs:32:90
[INFO] [stdout]    |
[INFO] [stdout] 32 | use backprop::{AdvancedTrainer, AdvancedTrainingConfig, OptimizerType, TrainingProgress, cross_entropy_gradient};
[INFO] [stdout]    |                                                                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]  --> src/rotary.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::f32::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Axis`
[INFO] [stdout]  --> src/attention.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2, s, Axis};
[INFO] [stdout]   |                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rotary::RotaryEmbedding`
[INFO] [stdout]  --> src/attention.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::rotary::RotaryEmbedding;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]  --> src/embedding.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::f32::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Array1`
[INFO] [stdout]  --> src/loss.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::Array2`
[INFO] [stdout]  --> src/training.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::Array2;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/checkpoint.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Array1`
[INFO] [stdout]  --> src/optimizer.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::{Array1, Array2};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]    --> src/large_dataset.rs:308:9
[INFO] [stdout]     |
[INFO] [stdout] 308 |     use std::fs;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/large_dataset.rs:309:9
[INFO] [stdout]     |
[INFO] [stdout] 309 |     use std::io::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::llm::LLM`
[INFO] [stdout]  --> src/backprop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::llm::LLM;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Adam` and `SGD`
[INFO] [stdout]  --> src/backprop.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::optimizer::{Parameter, Optimizer, SGD, Adam, GradientClipper};
[INFO] [stdout]   |                                              ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Adam` and `SGD`
[INFO] [stdout]   --> src/main.rs:30:28
[INFO] [stdout]    |
[INFO] [stdout] 30 | use optimizer::{Parameter, SGD, Adam};
[INFO] [stdout]    |                            ^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cross_entropy_gradient`
[INFO] [stdout]   --> src/main.rs:32:90
[INFO] [stdout]    |
[INFO] [stdout] 32 | use backprop::{AdvancedTrainer, AdvancedTrainingConfig, OptimizerType, TrainingProgress, cross_entropy_gradient};
[INFO] [stdout]    |                                                                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/rotary.rs:167:25
[INFO] [stdout]     |
[INFO] [stdout] 167 |                 assert!((matrix[[i, j]] - expected[[i, j]]).abs() < 1e-5);
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Optimizer`
[INFO] [stdout]  --> src/backprop.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::optimizer::{Parameter, Optimizer, SGD, Adam, GradientClipper};
[INFO] [stdout]   |                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dim`
[INFO] [stdout]   --> src/rotary.rs:71:23
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let (seq_len, dim) = batch.dim();
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_dim`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seq_len`
[INFO] [stdout]    --> src/attention.rs:155:14
[INFO] [stdout]     |
[INFO] [stdout] 155 |         let (seq_len, _) = x.dim();
[INFO] [stdout]     |              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seq_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vocab_size`
[INFO] [stdout]   --> src/loss.rs:10:61
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn compute(logits: &Array2<f32>, targets: &[usize], vocab_size: usize) -> f32 {
[INFO] [stdout]    |                                                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vocab_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warmup_factor`
[INFO] [stdout]    --> src/training.rs:196:17
[INFO] [stdout]     |
[INFO] [stdout] 196 |             let warmup_factor = self.global_step as f32 / self.config.warmup_steps as f32;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warmup_factor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/dataset.rs:103:20
[INFO] [stdout]     |
[INFO] [stdout] 103 |             .map(|(i, word)| {
[INFO] [stdout]     |                    ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Optimizer`
[INFO] [stdout]  --> src/backprop.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::optimizer::{Parameter, Optimizer, SGD, Adam, GradientClipper};
[INFO] [stdout]   |                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dim`
[INFO] [stdout]   --> src/rotary.rs:71:23
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let (seq_len, dim) = batch.dim();
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_dim`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     let mut trainer_orig = Trainer::new(training_config);
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seq_len`
[INFO] [stdout]    --> src/attention.rs:155:14
[INFO] [stdout]     |
[INFO] [stdout] 155 |         let (seq_len, _) = x.dim();
[INFO] [stdout]     |              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seq_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:449:9
[INFO] [stdout]     |
[INFO] [stdout] 449 |     let mut model = match llm::LLM::new(config) {
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:662:9
[INFO] [stdout]     |
[INFO] [stdout] 662 |     let mut model = match llm::LLM::new(config) {
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_loss`
[INFO] [stdout]    --> src/main.rs:756:9
[INFO] [stdout]     |
[INFO] [stdout] 756 |     let avg_loss = losses.iter().sum::<f32>() / losses.len() as f32;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_loss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Linear` is never constructed
[INFO] [stdout]  --> src/layers.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Linear {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `forward` are never used
[INFO] [stdout]   --> src/layers.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Linear {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn new(in_features: usize, out_features: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn forward(&self, input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiHeadAttention` is never constructed
[INFO] [stdout]   --> src/layers.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct MultiHeadAttention {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl MultiHeadAttention {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 38 |     pub fn new(embedding_dim: usize, num_heads: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformerBlock` is never constructed
[INFO] [stdout]   --> src/layers.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct TransformerBlock {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl TransformerBlock {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 60 |     pub fn new(embedding_dim: usize, num_heads: usize, ffn_dim: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `num_heads`, `feed_forward_dim`, and `embeddings` are never read
[INFO] [stdout]  --> src/model.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Model {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 6 |     pub embedding_dim: usize,
[INFO] [stdout] 7 |     pub num_heads: usize,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 8 |     pub feed_forward_dim: usize,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 9 |     embeddings: Array2<f32>,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `forward` is never used
[INFO] [stdout]   --> src/model.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Model {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn forward(&self, input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matmul` is never used
[INFO] [stdout]  --> src/tensor_utils.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn matmul(a: &Array2<f32>, b: &Array2<f32>) -> Array2<f32> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `softmax` is never used
[INFO] [stdout]  --> src/tensor_utils.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn softmax(input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `relu` is never used
[INFO] [stdout]   --> src/tensor_utils.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn relu(input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `layer_norm` is never used
[INFO] [stdout]   --> src/tensor_utils.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn layer_norm(input: &Array1<f32>, eps: f32) -> Array1<f32> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `build_vocab_char`, `encode_char`, `token_to_id`, `id_to_token`, and `tokenize` are never used
[INFO] [stdout]    --> src/tokenizer.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl Tokenizer {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn build_vocab_char(&mut self, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn encode_char(&self, text: &str) -> Vec<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn token_to_id(&self, token: &str) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn id_to_token(&self, id: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn tokenize(&self, text: &str, mode: TokenizationMode) -> Vec<usize> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenizationMode` is never used
[INFO] [stdout]    --> src/tokenizer.rs:138:10
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub enum TokenizationMode {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base` and `freqs` are never read
[INFO] [stdout]   --> src/rotary.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct RotaryEmbedding {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout]  7 |     dim: usize,
[INFO] [stdout]  8 |     base: f32,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]  9 |     max_seq_len: usize,
[INFO] [stdout] 10 |     freqs: Array1<f32>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `compute_angle`, `apply`, `apply_batch`, and `rotation_matrix` are never used
[INFO] [stdout]   --> src/rotary.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RotaryEmbedding {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn compute_angle(&self, position: usize, freq_idx: usize) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn apply(&self, vec: &Array1<f32>, position: usize) -> Array1<f32> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn apply_batch(&self, batch: &Array2<f32>, positions: &[usize]) -> Array2<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn rotation_matrix(&self, position: usize) -> Array2<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `relative_position_bias` is never used
[INFO] [stdout]    --> src/rotary.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn relative_position_bias(pos_i: usize, pos_j: usize, max_distance: usize) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dim_v` is never read
[INFO] [stdout]   --> src/attention.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct MultiHeadAttention {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     dim_v: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `forward_1d` is never used
[INFO] [stdout]    --> src/attention.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl LinearLayer {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn forward_1d(&self, input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `forward_1d` is never used
[INFO] [stdout]   --> src/transformer_block.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LayerNorm {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn forward_1d(&self, input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ReLU` and `SwiGLU` are never constructed
[INFO] [stdout]   --> src/transformer_block.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum ActivationType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 73 |     ReLU,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 74 |     GELU,
[INFO] [stdout] 75 |     SwiGLU,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActivationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `forward_1d` is never used
[INFO] [stdout]    --> src/transformer_block.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl LinearProj {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn forward_1d(&self, input: &Array1<f32>) -> Array1<f32> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `embedding_dim` and `vocab_size` are never used
[INFO] [stdout]   --> src/embedding.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TokenEmbedding {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn embedding_dim(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn vocab_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `embed_dim` is never read
[INFO] [stdout]   --> src/embedding.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct PositionalEncoding {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 60 |     encodings: Array2<f32>,
[INFO] [stdout] 61 |     embed_dim: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_encoding`, `embedding_dim`, and `max_length` are never used
[INFO] [stdout]    --> src/embedding.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl PositionalEncoding {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn get_encoding(&self, pos: usize) -> Result<Array1<f32>, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn embedding_dim(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn max_length(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `embed_dim` is never read
[INFO] [stdout]    --> src/embedding.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub struct Embedding {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 122 |     embed_dim: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vocab_size` and `embedding_dim` are never used
[INFO] [stdout]    --> src/embedding.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl Embedding {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn vocab_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn embedding_dim(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `num_layers` and `dim_model` are never read
[INFO] [stdout]  --> src/encoder_decoder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TransformerEncoder {
[INFO] [stdout]   |            ------------------ fields in this struct
[INFO] [stdout] 6 |     blocks: Vec<TransformerBlock>,
[INFO] [stdout] 7 |     num_layers: usize,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 8 |     dim_model: usize,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `num_layers` and `dim_model` are never used
[INFO] [stdout]   --> src/encoder_decoder.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl TransformerEncoder {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn num_layers(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn dim_model(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformerDecoder` is never constructed
[INFO] [stdout]   --> src/encoder_decoder.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct TransformerDecoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `forward`, `num_layers`, and `dim_model` are never used
[INFO] [stdout]    --> src/encoder_decoder.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl TransformerDecoder {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  79 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn forward(&self, input: &Array2<f32>, training: bool) -> Array2<f32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn num_layers(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn dim_model(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `default_medium` and `default_large` are never used
[INFO] [stdout]   --> src/llm.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl LLMConfig {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn default_medium() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn default_large() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `compute_masked` is never used
[INFO] [stdout]   --> src/loss.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl CrossEntropyLoss {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn compute_masked(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `compute` is never used
[INFO] [stdout]   --> src/loss.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | impl Perplexity {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn compute(logits: &Array2<f32>, targets: &[usize]) -> f32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `top_k` is never used
[INFO] [stdout]    --> src/loss.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl Accuracy {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn top_k(logits: &Array2<f32>, targets: &[usize], k: usize) -> f32 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `weight_decay` is never read
[INFO] [stdout]  --> src/training.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Optimizer {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     weight_decay: f32,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `weight_decay` is never used
[INFO] [stdout]   --> src/training.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Optimizer {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn weight_decay(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `losses`, `perplexities`, and `accuracies` are never read
[INFO] [stdout]   --> src/training.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct TrainingMetrics {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 36 |     losses: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 37 |     perplexities: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 38 |     accuracies: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/training.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl TrainingMetrics {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn record(&mut self, loss: f32, perplexity: f32, accuracy: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn avg_loss(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn avg_perplexity(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn avg_accuracy(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn latest_loss(&self) -> Option<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn latest_perplexity(&self) -> Option<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn latest_accuracy(&self) -> Option<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `gradient_clip` and `eval_every` are never read
[INFO] [stdout]    --> src/training.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct TrainingConfig {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub gradient_clip: Option<f32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 107 |     pub warmup_steps: usize,
[INFO] [stdout] 108 |     pub eval_every: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `metrics` and `global_step` are never read
[INFO] [stdout]    --> src/training.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct Trainer {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 145 |     metrics: TrainingMetrics,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 146 |     global_step: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `train_step`, `eval_step`, `metrics`, and `global_step` are never used
[INFO] [stdout]    --> src/training.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl Trainer {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn train_step(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn eval_step(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn metrics(&self) -> &TrainingMetrics {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn global_step(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_llm_config` is never used
[INFO] [stdout]   --> src/checkpoint.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl CheckpointConfig {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn to_llm_config(&self) -> LLMConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_best_checkpoint`, `load_latest_checkpoint`, and `checkpoint_dir` are never used
[INFO] [stdout]    --> src/checkpoint.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl CheckpointManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn load_best_checkpoint(&self) -> Result<Checkpoint, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn load_latest_checkpoint(&self) -> Result<Checkpoint, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn checkpoint_dir(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tokenizer_vocab` is never read
[INFO] [stdout]  --> src/dataset.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TextDataset {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] 5 |     texts: Vec<String>,
[INFO] [stdout] 6 |     tokenizer_vocab: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `is_empty`, `get`, and `texts` are never used
[INFO] [stdout]   --> src/dataset.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl TextDataset {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn from_file(path: &str, vocab_size: usize) -> Result<Self, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get(&self, idx: usize) -> Option<&str> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn texts(&self) -> &[String] {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Batch` is never constructed
[INFO] [stdout]   --> src/dataset.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct Batch {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `size`, and `max_length` are never used
[INFO] [stdout]   --> src/dataset.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl Batch {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 63 |     pub fn new(token_ids: Vec<Vec<usize>>, targets: Vec<Vec<usize>>, lengths: Vec<usize>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn size(&self) -> usize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn max_length(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `shuffle` and `vocab_size` are never read
[INFO] [stdout]   --> src/dataset.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct DataLoader {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 84 |     shuffle: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 85 |     vocab_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `tokenize`, `create_batch`, and `iter` are never used
[INFO] [stdout]    --> src/dataset.rs:99:8
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl DataLoader {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  99 |     fn tokenize(&self, text: &str) -> Vec<usize> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn create_batch(&self, samples: &[&str]) -> Batch {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn iter(&self) -> DataLoaderIter {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DataLoaderIter` is never constructed
[INFO] [stdout]    --> src/dataset.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct DataLoaderIter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `zero_grad`, and `param_norm` are never used
[INFO] [stdout]   --> src/optimizer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Parameter {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(data: Array2<f32>, name: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn zero_grad(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn param_norm(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Optimizer` is never used
[INFO] [stdout]   --> src/optimizer.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait Optimizer {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SGD` is never constructed
[INFO] [stdout]   --> src/optimizer.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct SGD {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `init_velocities` are never used
[INFO] [stdout]   --> src/optimizer.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl SGD {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 52 |     pub fn new(momentum: f32, num_params: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn init_velocities(&mut self, params: &[Parameter]) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Adam` is never constructed
[INFO] [stdout]   --> src/optimizer.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct Adam {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `init_moments` are never used
[INFO] [stdout]    --> src/optimizer.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  99 | impl Adam {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 100 |     pub fn new(beta1: f32, beta2: f32, eps: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn init_moments(&mut self, params: &[Parameter]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GradientAccumulator` is never constructed
[INFO] [stdout]    --> src/optimizer.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct GradientAccumulator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `accumulate`, `get_averaged`, `reset`, and `steps` are never used
[INFO] [stdout]    --> src/optimizer.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 162 | impl GradientAccumulator {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 163 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn accumulate(&mut self, params: &[Parameter]) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn get_averaged(&self) -> HashMap<String, Array2<f32>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn steps(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clip_by_value` is never used
[INFO] [stdout]    --> src/optimizer.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl GradientClipper {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn clip_by_value(&self, params: &mut [Parameter], min: f32, max: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_merges` is never read
[INFO] [stdout]  --> src/bpe_tokenizer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct BPETokenizer {
[INFO] [stdout]   |            ------------ field in this struct
[INFO] [stdout] 6 |     vocab: HashMap<String, usize>,
[INFO] [stdout] 7 |     max_merges: usize, // kept for API compatibility
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `load_vocab` is never used
[INFO] [stdout]    --> src/bpe_tokenizer.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl BPETokenizer {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn load_vocab(&mut self, path: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LargeTextDataset` is never constructed
[INFO] [stdout]  --> src/large_dataset.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct LargeTextDataset {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `count_lines`, `iter_batches`, and `load_range` are never used
[INFO] [stdout]   --> src/large_dataset.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl LargeTextDataset {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 12 |     /// Create dataset from a single large file
[INFO] [stdout] 13 |     pub fn from_file(file_path: &str, vocab_size: usize) -> Result<Self, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn count_lines(&self) -> Result<usize, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn iter_batches(&self, batch_size: usize) -> Result<BatchIterator, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn load_range(&self, start_line: usize, num_lines: usize) -> Result<Vec<String>, String> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BatchIterator` is never constructed
[INFO] [stdout]   --> src/large_dataset.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct BatchIterator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/large_dataset.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl BatchIterator {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 63 |     pub fn new(file_path: &str, batch_size: usize, vocab_size: usize) -> Result<Self, String> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Batch` is never constructed
[INFO] [stdout]    --> src/large_dataset.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Batch {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `size`, `batch_num`, and `tokenize` are never used
[INFO] [stdout]    --> src/large_dataset.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl Batch {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] 116 |     pub fn size(&self) -> usize {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn batch_num(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn tokenize(&self) -> (Vec<Vec<usize>>, Vec<Vec<usize>>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiFileDataset` is never constructed
[INFO] [stdout]    --> src/large_dataset.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub struct MultiFileDataset {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_directory`, `num_files`, `get_file`, and `iter_all_files` are never used
[INFO] [stdout]    --> src/large_dataset.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl MultiFileDataset {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 160 |     /// Create dataset from directory of text files
[INFO] [stdout] 161 |     pub fn from_directory(dir_path: &str, vocab_size: usize) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn num_files(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn get_file(&self, idx: usize) -> Result<LargeTextDataset, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn iter_all_files(&self, batch_size: usize) -> Result<MultiFileIterator, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiFileIterator` is never constructed
[INFO] [stdout]    --> src/large_dataset.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub struct MultiFileIterator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/large_dataset.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | impl MultiFileIterator {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 217 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DatasetStats` is never constructed
[INFO] [stdout]    --> src/large_dataset.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct DatasetStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `compute` is never used
[INFO] [stdout]    --> src/large_dataset.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 274 | impl DatasetStats {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 275 |     /// Compute statistics (requires full pass)
[INFO] [stdout] 276 |     pub fn compute(dataset: &LargeTextDataset) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainingState` is never constructed
[INFO] [stdout]  --> src/backprop.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TrainingState {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/backprop.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl TrainingState {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `linear_backward` is never used
[INFO] [stdout]   --> src/backprop.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn linear_backward(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `attention_backward` is never used
[INFO] [stdout]   --> src/backprop.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn attention_backward(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `optimizer_type` is never read
[INFO] [stdout]    --> src/backprop.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct AdvancedTrainer {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] 107 |     pub optimizer_type: OptimizerType,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]    --> src/backprop.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 |     Adam(f32, f32),     // beta1, beta2
[INFO] [stdout]     |     ---- ^^^  ^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]     |
[INFO] [stdout] 117 -     Adam(f32, f32),     // beta1, beta2
[INFO] [stdout] 117 +     Adam((), ()),     // beta1, beta2
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SGD` is never constructed
[INFO] [stdout]    --> src/backprop.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub enum OptimizerType {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] 116 |     SGD(f32),           // momentum
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validation_step` and `learning_rate` are never used
[INFO] [stdout]    --> src/backprop.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl AdvancedTrainer {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn validation_step(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn learning_rate(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `batch_size`, `warmup_steps`, `total_steps`, `optimizer`, `eval_every`, and `save_every` are never read
[INFO] [stdout]    --> src/backprop.rs:223:9
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct AdvancedTrainingConfig {
[INFO] [stdout]     |            ---------------------- fields in this struct
[INFO] [stdout] 222 |     pub num_epochs: usize,
[INFO] [stdout] 223 |     pub batch_size: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 224 |     pub learning_rate: f32,
[INFO] [stdout] 225 |     pub warmup_steps: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 226 |     pub total_steps: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub optimizer: String, // "sgd" or "adam"
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 230 |     pub eval_every: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 231 |     pub save_every: usize,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdvancedTrainingConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `epoch` and `avg_loss` are never read
[INFO] [stdout]    --> src/backprop.rs:268:9
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub struct TrainingProgress {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 268 |     pub epoch: usize,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub avg_loss: f32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print_progress` is never used
[INFO] [stdout]    --> src/backprop.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 276 | impl TrainingProgress {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn print_progress(&self, total_steps: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vocab_size`
[INFO] [stdout]   --> src/loss.rs:10:61
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn compute(logits: &Array2<f32>, targets: &[usize], vocab_size: usize) -> f32 {
[INFO] [stdout]    |                                                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vocab_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/dataset.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn iter(&self) -> DataLoaderIter {
[INFO] [stdout]     |                 ^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn iter(&self) -> DataLoaderIter<'_> {
[INFO] [stdout]     |                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warmup_factor`
[INFO] [stdout]    --> src/training.rs:196:17
[INFO] [stdout]     |
[INFO] [stdout] 196 |             let warmup_factor = self.global_step as f32 / self.config.warmup_steps as f32;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warmup_factor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/dataset.rs:103:20
[INFO] [stdout]     |
[INFO] [stdout] 103 |             .map(|(i, word)| {
[INFO] [stdout]     |                    ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:358:9
[INFO] [stdout]     |
[INFO] [stdout] 358 |     let mut trainer_orig = Trainer::new(training_config);
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:449:9
[INFO] [stdout]     |
[INFO] [stdout] 449 |     let mut model = match llm::LLM::new(config) {
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:662:9
[INFO] [stdout]     |
[INFO] [stdout] 662 |     let mut model = match llm::LLM::new(config) {
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_loss`
[INFO] [stdout]    --> src/main.rs:756:9
[INFO] [stdout]     |
[INFO] [stdout] 756 |     let avg_loss = losses.iter().sum::<f32>() / losses.len() as f32;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_loss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-llm` (bin "rust-llm" test) due to 1 previous error; 24 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "f4191d6d6861b31b6da0ea99ccc9a8eaa92b57ed84fbcfb59e003a750fa794f5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f4191d6d6861b31b6da0ea99ccc9a8eaa92b57ed84fbcfb59e003a750fa794f5", kill_on_drop: false }`
[INFO] [stdout] f4191d6d6861b31b6da0ea99ccc9a8eaa92b57ed84fbcfb59e003a750fa794f5
