|
24 | 24 | ).expanduser()
|
25 | 25 |
|
26 | 26 |
|
27 |
| -# Subcommands related to downloading and managing model artifacts |
28 |
| -INVENTORY_VERBS = ["download", "list", "remove", "where"] |
29 |
| - |
30 |
| -# List of all supported subcommands in torchchat |
31 |
| -KNOWN_VERBS = ["chat", "browser", "generate", "eval", "export"] + INVENTORY_VERBS |
| 27 | +KNOWN_VERBS = ["chat", "browser", "download", "generate", "eval", "export", "list", "remove", "where"] |
32 | 28 |
|
33 | 29 | # Handle CLI arguments that are common to a majority of subcommands.
|
34 | 30 | def check_args(args, verb: str) -> None:
|
35 | 31 | # Handle model download. Skip this for download, since it has slightly
|
36 | 32 | # different semantics.
|
37 | 33 | if (
|
38 |
| - verb not in INVENTORY_VERBS |
| 34 | + verb not in ["download", "list", "remove"] |
39 | 35 | and args.model
|
40 | 36 | and not is_model_downloaded(args.model, args.model_directory)
|
41 | 37 | ):
|
42 | 38 | download_and_convert(args.model, args.model_directory, args.hf_token)
|
43 | 39 |
|
44 | 40 |
|
45 |
| -def add_arguments_for_verb(parser, verb: str) -> None: |
| 41 | +def add_arguments_for_verb(parser, verb: str): |
46 | 42 | # Model specification. TODO Simplify this.
|
47 | 43 | # A model can be specified using a positional model name or HuggingFace
|
48 | 44 | # path. Alternatively, the model can be specified via --gguf-path or via
|
49 | 45 | # an explicit --checkpoint-dir, --checkpoint-path, or --tokenizer-path.
|
50 |
| - |
51 |
| - if verb in INVENTORY_VERBS: |
52 |
| - _configure_artifact_inventory_args(parser, verb) |
53 |
| - _add_cli_metadata_args(parser) |
54 |
| - return |
55 |
| - |
56 | 46 | parser.add_argument(
|
57 | 47 | "model",
|
58 | 48 | type=str,
|
@@ -201,6 +191,12 @@ def add_arguments_for_verb(parser, verb: str) -> None:
|
201 | 191 | choices=allowable_dtype_names(),
|
202 | 192 | help="Override the dtype of the model (default is the checkpoint dtype). Options: bf16, fp16, fp32, fast16, fast",
|
203 | 193 | )
|
| 194 | + parser.add_argument( |
| 195 | + "-v", |
| 196 | + "--verbose", |
| 197 | + action="store_true", |
| 198 | + help="Verbose output", |
| 199 | + ) |
204 | 200 | parser.add_argument(
|
205 | 201 | "--quantize",
|
206 | 202 | type=str,
|
@@ -256,45 +252,6 @@ def add_arguments_for_verb(parser, verb: str) -> None:
|
256 | 252 | default=5000,
|
257 | 253 | help="Port for the web server in browser mode",
|
258 | 254 | )
|
259 |
| - _add_cli_metadata_args(parser) |
260 |
| - |
261 |
| - |
262 |
| -# Add CLI Args that are relevant to any subcommand execution |
263 |
| -def _add_cli_metadata_args(parser) -> None: |
264 |
| - parser.add_argument( |
265 |
| - "-v", |
266 |
| - "--verbose", |
267 |
| - action="store_true", |
268 |
| - help="Verbose output", |
269 |
| - ) |
270 |
| - |
271 |
| -# Configure CLI Args specific to Model Artifact Management |
272 |
| -def _configure_artifact_inventory_args(parser, verb: str) -> None: |
273 |
| - if verb in ["download", "remove", "where"]: |
274 |
| - parser.add_argument( |
275 |
| - "model", |
276 |
| - type=str, |
277 |
| - nargs="?", |
278 |
| - default=None, |
279 |
| - help="Model name for well-known models", |
280 |
| - ) |
281 |
| - |
282 |
| - if verb in INVENTORY_VERBS: |
283 |
| - parser.add_argument( |
284 |
| - "--model-directory", |
285 |
| - type=Path, |
286 |
| - default=default_model_dir, |
287 |
| - help=f"The directory to store downloaded model artifacts. Default: {default_model_dir}", |
288 |
| - ) |
289 |
| - |
290 |
| - if verb == "download": |
291 |
| - parser.add_argument( |
292 |
| - "--hf-token", |
293 |
| - type=str, |
294 |
| - default=None, |
295 |
| - help="A HuggingFace API token to use when downloading model artifacts", |
296 |
| - ) |
297 |
| - |
298 | 255 |
|
299 | 256 | # Add CLI Args specific to Model Evaluation
|
300 | 257 | def _add_evaluation_args(parser) -> None:
|
|
0 commit comments