spaCy/spacy/cli/init_pipeline.py

38 lines
1.5 KiB
Python
Raw Normal View History

2020-09-28 13:09:59 +00:00
from typing import Optional
2020-09-28 07:47:34 +00:00
import logging
from pathlib import Path
from wasabi import msg
import typer
from .. import util
2020-09-28 13:09:59 +00:00
from ..training.initialize import init_nlp
2020-09-28 07:47:34 +00:00
from ._util import init_cli, Arg, Opt, parse_config_overrides, show_validation_error
2020-09-28 19:17:10 +00:00
from ._util import import_code, setup_gpu
2020-09-28 09:30:18 +00:00
2020-09-28 07:47:34 +00:00
@init_cli.command(
2020-09-28 10:46:28 +00:00
"nlp",
context_settings={"allow_extra_args": True, "ignore_unknown_options": True},
hidden=True,
2020-09-28 07:47:34 +00:00
)
def init_pipeline_cli(
# fmt: off
ctx: typer.Context, # This is only used to read additional arguments
config_path: Path = Arg(..., help="Path to config file", exists=True),
output_path: Path = Arg(..., help="Output directory for the prepared data"),
code_path: Optional[Path] = Opt(None, "--code", "-c", help="Path to Python file with additional code (registered functions) to be imported"),
verbose: bool = Opt(False, "--verbose", "-V", "-VV", help="Display more information for debugging purposes"),
2020-09-28 13:09:59 +00:00
use_gpu: int = Opt(-1, "--gpu-id", "-g", help="GPU ID or -1 for CPU")
2020-09-28 07:47:34 +00:00
# fmt: on
):
util.logger.setLevel(logging.DEBUG if verbose else logging.ERROR)
overrides = parse_config_overrides(ctx.args)
import_code(code_path)
2020-09-28 13:09:59 +00:00
setup_gpu(use_gpu)
2020-09-28 07:47:34 +00:00
with show_validation_error(config_path):
2020-09-28 08:53:17 +00:00
config = util.load_config(config_path, overrides=overrides)
2020-09-28 13:09:59 +00:00
with show_validation_error(hint_fill=False):
2020-09-28 19:17:10 +00:00
nlp = init_nlp(config, use_gpu=use_gpu, silent=False)
2020-09-28 07:47:34 +00:00
nlp.to_disk(output_path)
2020-09-28 08:53:17 +00:00
msg.good(f"Saved initialized pipeline to {output_path}")