281 lines
5.5 KiB
C#
281 lines
5.5 KiB
C#
namespace OrpaonVision.Model.Training;
|
||
|
||
/// <summary>
|
||
/// 训练任务模型。
|
||
/// </summary>
|
||
public sealed class TrainingTaskModel
|
||
{
|
||
/// <summary>
|
||
/// 任务ID。
|
||
/// </summary>
|
||
public Guid Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 任务名称。
|
||
/// </summary>
|
||
public string Name { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 任务描述。
|
||
/// </summary>
|
||
public string? Description { get; set; }
|
||
|
||
/// <summary>
|
||
/// 任务类型。
|
||
/// </summary>
|
||
public TrainingTaskType TaskType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 任务状态。
|
||
/// </summary>
|
||
public TrainingTaskStatus Status { get; set; }
|
||
|
||
/// <summary>
|
||
/// 优先级。
|
||
/// </summary>
|
||
public TrainingPriority Priority { get; set; }
|
||
|
||
/// <summary>
|
||
/// 模型类型。
|
||
/// </summary>
|
||
public string ModelType { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 基础模型ID。
|
||
/// </summary>
|
||
public Guid? BaseModelId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 数据集ID。
|
||
/// </summary>
|
||
public Guid DatasetId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 训练参数JSON。
|
||
/// </summary>
|
||
public string TrainingParametersJson { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 验证参数JSON。
|
||
/// </summary>
|
||
public string ValidationParametersJson { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 计划开始时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? PlannedStartAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 实际开始时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? ActualStartAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 实际结束时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? ActualEndAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 计划训练时长(分钟)。
|
||
/// </summary>
|
||
public int PlannedDurationMinutes { get; set; }
|
||
|
||
/// <summary>
|
||
/// 实际训练时长(分钟)。
|
||
/// </summary>
|
||
public int ActualDurationMinutes { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前轮次。
|
||
/// </summary>
|
||
public int CurrentEpoch { get; set; }
|
||
|
||
/// <summary>
|
||
/// 总轮次。
|
||
/// </summary>
|
||
public int TotalEpochs { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前损失值。
|
||
/// </summary>
|
||
public double CurrentLoss { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最佳损失值。
|
||
/// </summary>
|
||
public double BestLoss { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前mAP。
|
||
/// </summary>
|
||
public double CurrentMap { get; set; }
|
||
|
||
/// <summary>
|
||
/// 最佳mAP。
|
||
/// </summary>
|
||
public double BestMap { get; set; }
|
||
|
||
/// <summary>
|
||
/// 训练进度(0-100)。
|
||
/// </summary>
|
||
public double Progress { get; set; }
|
||
|
||
/// <summary>
|
||
/// 输出模型路径。
|
||
/// </summary>
|
||
public string? OutputModelPath { get; set; }
|
||
|
||
/// <summary>
|
||
/// 日志路径。
|
||
/// </summary>
|
||
public string? LogPath { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误消息。
|
||
/// </summary>
|
||
public string? ErrorMessage { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人ID。
|
||
/// </summary>
|
||
public Guid CreatedById { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人姓名。
|
||
/// </summary>
|
||
public string CreatedByName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 分配人ID。
|
||
/// </summary>
|
||
public Guid? AssignedToId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 分配人姓名。
|
||
/// </summary>
|
||
public string? AssignedToName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间(UTC)。
|
||
/// </summary>
|
||
public DateTime CreatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 更新时间(UTC)。
|
||
/// </summary>
|
||
public DateTime UpdatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人。
|
||
/// </summary>
|
||
public string CreatedBy { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 更新人。
|
||
/// </summary>
|
||
public string UpdatedBy { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 备注。
|
||
/// </summary>
|
||
public string? Remark { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 训练任务类型枚举。
|
||
/// </summary>
|
||
public enum TrainingTaskType
|
||
{
|
||
/// <summary>
|
||
/// 目标检测训练。
|
||
/// </summary>
|
||
ObjectDetection = 0,
|
||
|
||
/// <summary>
|
||
/// 分类训练。
|
||
/// </summary>
|
||
Classification = 1,
|
||
|
||
/// <summary>
|
||
/// 分割训练。
|
||
/// </summary>
|
||
Segmentation = 2,
|
||
|
||
/// <summary>
|
||
/// 微调训练。
|
||
/// </summary>
|
||
FineTuning = 3,
|
||
|
||
/// <summary>
|
||
/// 增量训练。
|
||
/// </summary>
|
||
Incremental = 4
|
||
}
|
||
|
||
/// <summary>
|
||
/// 训练任务状态枚举。
|
||
/// </summary>
|
||
public enum TrainingTaskStatus
|
||
{
|
||
/// <summary>
|
||
/// 草稿。
|
||
/// </summary>
|
||
Draft = 0,
|
||
|
||
/// <summary>
|
||
/// 等待中。
|
||
/// </summary>
|
||
Pending = 1,
|
||
|
||
/// <summary>
|
||
/// 运行中。
|
||
/// </summary>
|
||
Running = 2,
|
||
|
||
/// <summary>
|
||
/// 已暂停。
|
||
/// </summary>
|
||
Paused = 3,
|
||
|
||
/// <summary>
|
||
/// 已完成。
|
||
/// </summary>
|
||
Completed = 4,
|
||
|
||
/// <summary>
|
||
/// 已失败。
|
||
/// </summary>
|
||
Failed = 5,
|
||
|
||
/// <summary>
|
||
/// 已取消。
|
||
/// </summary>
|
||
Cancelled = 6
|
||
}
|
||
|
||
/// <summary>
|
||
/// 训练优先级枚举。
|
||
/// </summary>
|
||
public enum TrainingPriority
|
||
{
|
||
/// <summary>
|
||
/// 低。
|
||
/// </summary>
|
||
Low = 0,
|
||
|
||
/// <summary>
|
||
/// 中。
|
||
/// </summary>
|
||
Medium = 1,
|
||
|
||
/// <summary>
|
||
/// 高。
|
||
/// </summary>
|
||
High = 2,
|
||
|
||
/// <summary>
|
||
/// 紧急。
|
||
/// </summary>
|
||
Urgent = 3
|
||
}
|