Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions core/proto/swanlab/metric/data/v1/data.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 19 additions & 3 deletions core/proto/swanlab/save/v1/save.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 16 additions & 4 deletions core/proto/swanlab/settings/core/v1/core.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 13 additions & 3 deletions core/proto/swanlab/settings/probe/v1/probe.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions protos/swanlab/metric/data/v1/data.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ message MediaItem {
string sha256 = 2;
int64 size = 3; // 文件大小(bytes)
string caption = 4;
// 媒体内容,仅 online + skip_store=true 时写入
optional bytes payload = 5;
}

message ScalarRecord {
Expand Down
7 changes: 6 additions & 1 deletion protos/swanlab/save/v1/save.proto
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,17 @@ enum SaveType {
}

// 文件保存记录,由 swanlab.save() API 产生。
// 每条记录对应一个用户文件的保存操作。
// size/md5/mime_type 不在此处存储,由 Core 在持久化/上传时按需计算。
//
// payload 仅用于 online + skip_store 下的四类内部 save
// (CONFIG/METADATA/REQUIREMENTS/CONDA):此时 source_path/target_path 为空,
// Core 直接从 payload 解析并上传;CUSTOM 的 payload 必须为空,只使用 source_path;
// 未启用 skip_store 时 payload 为空,Core 按 source_path 处理。
message SaveRecord {
string name = 1; // 文件标识(相对于 base_path 的路径)
string source_path = 2; // 源文件绝对路径
string target_path = 3; // 本地镜像目标路径(软链接位置,由 Core 填充)
SavePolicy policy = 4; // 保存策略
SaveType type = 5; // 文件类型
optional bytes payload = 6; // 内部 metadata 元文件内容,skip_store 设置下有效
}
2 changes: 2 additions & 0 deletions protos/swanlab/settings/core/v1/core.proto
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ message CoreSettings {
int64 save_split = 7;
int64 save_part = 8;
int32 save_batch = 9;
// Skip the local Record store (run-*.swanlab). Only valid in online mode.
bool skip_store = 10;
}
3 changes: 2 additions & 1 deletion protos/swanlab/settings/probe/v1/probe.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ option go_package = "github.com/swanhubx/swanlab/core/proto/swanlab/settings/pro

message ProbeSettings {
optional string run_id = 1; // probe 侧需要校验 run_id 是否存在,不存在拒绝上报
optional string run_dir = 2; // probe 侧需要校验 run_dir 是否存在,不存在拒绝上报
optional string run_dir = 2; // 运行目录
optional int64 global_system_step = 3; // probe 侧需要校验 global_system_step 是否存在,不存在拒绝上报
bool hardware = 4;
bool runtime = 5;
Expand All @@ -17,4 +17,5 @@ message ProbeSettings {
bool monitor = 10;
int32 monitor_interval = 11;
string monitor_disk_dir = 12;
bool skip_store = 13; // 跳过探针本地文件落盘,内容直接内联 SaveRecord.payload(仅 online 合法)
}
12 changes: 6 additions & 6 deletions swanlab/proto/swanlab/metric/data/v1/data_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions swanlab/proto/swanlab/metric/data/v1/data_pb2.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,18 @@ class MediaValue(_message.Message):
def __init__(self, items: _Optional[_Iterable[_Union[MediaItem, _Mapping]]] = ...) -> None: ...

class MediaItem(_message.Message):
__slots__ = ("filename", "sha256", "size", "caption")
__slots__ = ("filename", "sha256", "size", "caption", "payload")
FILENAME_FIELD_NUMBER: _ClassVar[int]
SHA256_FIELD_NUMBER: _ClassVar[int]
SIZE_FIELD_NUMBER: _ClassVar[int]
CAPTION_FIELD_NUMBER: _ClassVar[int]
PAYLOAD_FIELD_NUMBER: _ClassVar[int]
filename: str
sha256: str
size: int
caption: str
def __init__(self, filename: _Optional[str] = ..., sha256: _Optional[str] = ..., size: _Optional[int] = ..., caption: _Optional[str] = ...) -> None: ...
payload: bytes
def __init__(self, filename: _Optional[str] = ..., sha256: _Optional[str] = ..., size: _Optional[int] = ..., caption: _Optional[str] = ..., payload: _Optional[bytes] = ...) -> None: ...

class ScalarRecord(_message.Message):
__slots__ = ("key", "step", "type", "timestamp", "value")
Expand Down
Loading