guild sync [OPTIONS] [RUN...]
Synchronize remote runs.
A remote run is an operation that runs on another system. Guild keeps track of where each remote run is located and can synchronize with it. This includes downloading files generated by the run as well as updating run status.
By default, Guild synchronizes once with the remote run and exits. If you want to automatically synchronize with the run while watching its output, use the
You can only watch one running operation at a time. If you don’t specify a RUN with the
--watch option, Guild will watch the most recently started running operation.
When a remote status stops (it finished successfully, is terminated, or exits with an error), Guild will no longer synchronize with it.
You can synchronize specific runs using
RUN arguments. For more information, see SPECIFYING RUNS and FILTERING topics.
You may use one or more
RUN arguments to indicate which runs apply to the command.
RUN may be a run ID, a run ID prefix, or a one-based index corresponding to a run returned by the list command.
Indexes may also be specified in ranges in the form
START is the start index and
END is the end index. Either
END may be omitted. If
START is omitted, all runs up to
END are selected. If
END id omitted, all runs from
START on are selected. If both
END are omitted (i.e. the
: char is used by itself) all runs are selected.
RUN argument is not specified,
: is assumed (all runs are selected).
Runs may be filtered by operation using
--operation. A run is only included if any part of its full operation name, including the package and model name, matches the value.
--operation multiple times to include more runs.
--label to only include runs with labels containing a specified value. To select runs that do not contain a label, specify a dash ‘-’ for
--label multiple times to include more runs.
--tag to only include runs with a specified tag. Tags must match completely and are case sensitive.
--tag multiple times to include more runs.
--marked to only include marked runs.
--unmarked to only include unmarked runs. This option may not be used with
--filter to limit runs that match a filter expressions. Filter expressions compare run attributes, flag values, or scalars to target values. They may include multiple expressions with logical operators.
For example, to match runs with flag
batch-size equal to 100 that have
loss less than 0.8, use:
--filter 'batch-size = 10 and loss < 0.8'
IMPORTANT: You must quote EXPR if it contains spaces or characters that the shell uses (e.g. ‘<’ or ‘>’).
Target values may be numbers, strings or lists containing numbers and strings. Strings that contain spaces must be quoted, otherwise a target string values does not require quotes. Lists are defined using square braces where each item is separated by a comma.
Comparisons may use the following operators: ‘=’, ‘!=’ (or ‘<>’), ‘<’, ‘<=’, ‘>’, ‘>=’. Text comparisons may use ‘contains’ to test for case-insensitive string membership. A value may be tested for membership or not in a list using ‘in’ or ‘not in’ respectively. An value may be tested for undefined using ‘is undefined’ or defined using ‘is not undefined’.
Logical operators include ‘or’ and ‘and’. An expression may be negated by preceding it with ‘not’. Parentheses may be used to control the order of precedence when expressions are evaluated.
If a value reference matches more than one type of run information (e.g. a flag is named ‘label’, which is also a run attribute), the value is read in order of run attribute, then flag value, then scalar. To disambiguate the reference, use a prefix
scalar: as needed. For example, to filter using a flag value named ‘label’, use ‘flag:label’.
operation = train and acc > 0.9
operation = train and (acc > 0.9 or loss < 0.3)
batch-size = 100 or batch-size = 200
batch-size in [100,200]
batch-size not in [400,800]
batch-size is undefined
batch-size is not undefined
label contains best and operation not in [test,deploy]
status in [error,terminated]
NOTE: Comments and tags are not supported in filter expressions at this time. Use
--tag options along with filter expressions to further refine a selection.
--started to limit runs to those that have started within a specified time range.
IMPORTANT: You must quote RANGE values that contain spaces. For example, to filter runs started within the last hour, use the option:
--started 'last hour'
You can specify a time range using several different forms:
between DATETIME and DATETIME
last N minutes|hours|days
N days|weeks|months|years ago
DATETIME may be specified as a date in the format
YY-MM-DD (the leading
YY- may be omitted) or as a time in the format
HH:MM (24 hour clock). A date and time may be specified together as
between DATETIME and DATETIME, values for
DATETIME may be specified in either order.
When specifying values like
hours the trailing
s may be omitted to improve readability. You may also use
min instead of
hr instead of
between 1-1 and 4-30
between 10:00 and 15:00
last 30 min
last 6 hours
3 weeks ago
To show runs for a specific source code digest, use
--digest with a complete or partial digest value.
||Watch a remote run and synchronize in the background.|
||Seconds to wait in between sync when
||Filter runs using a filter expression. See Filter by Expression above for details.|
||Filter runs with operations matching
||Filter runs with labels matching VAL. To show unlabeled runs, use --unlabeled.|
||Filter runs without labels.|
||Filter runs with TAG.|
||Filter runs with comments matching VAL.|
||Filter marked runs.|
||Filter unmarked runs.|
||Filter runs started within RANGE. See above for valid time ranges.|
||Filter runs with a matching source code digest.|
||Show this message and exit.|
Guild AI version 0.9.0