/
rustwizard
/
etch
Обзор
Документация
Войти
/
rustwizard
/
etch
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/logger.rs
56 строк
2 KB
Rust Wizard
fix: elapsed_secs in log, drop DiT before VAE, deduplicate timestep lookup
29 май 2026, 14:44
Верифицирован
29 май 2026, 14:44
1a47137
Код
Авторство
О чём код?
use crate::cli::{Args, Model}; use anyhow::Result; pub fn write_log_entry(out_path: &str, args: &Args, seed: u64, elapsed_secs: f32) -> Result<()> { write_entry(out_path, args, seed, elapsed_secs, None) } pub fn write_log_failure( out_path: &str, args: &Args, seed: u64, err: &anyhow::Error, ) -> Result<()> { write_entry(out_path, args, seed, 0.0, Some(err)) } fn write_entry( out_path: &str, args: &Args, seed: u64, elapsed_secs: f32, err: Option<&anyhow::Error>, ) -> Result<()> { let log_path = std::path::Path::new(out_path) .parent() .unwrap_or(std::path::Path::new(".")) .join("log.jsonl"); let mut entry = serde_json::json!({ "file": out_path, "seed": seed, "prompt": args.prompt, "model": format!("{:?}", args.model).to_lowercase(), "steps": args.n_steps, "status": if err.is_some() { "failed" } else { "ok" }, }); if err.is_none() { entry["elapsed_secs"] = serde_json::json!(elapsed_secs); } if let Some(e) = err { entry["error"] = serde_json::json!(format!("{e:#}")); } if args.model == Model::Araminta { entry["scheduler"] = serde_json::json!(format!("{:?}", args.scheduler).to_lowercase()); entry["guidance_scale"] = serde_json::json!(args.guidance_scale); if !args.uncond_prompt.is_empty() { entry["uncond_prompt"] = serde_json::json!(args.uncond_prompt); } } let mut log = std::fs::OpenOptions::new() .create(true) .append(true) .open(&log_path)?; use std::io::Write as _; writeln!(log, "{}", entry)?; Ok(()) }