spaCy工程管理

🪐 项目模板

我们的 projects repo 包含多种用于NLP任务、模型、工作流和集成的各种项目模板,这些模版都可以直接克隆和运行。最简单的方式,是选择并克隆一个模板,然后修改它!

spaCy为你提供针对不同用例和领域的端到端的spaCy工作流程的管理和共享,并协调训练,打包并启动你自定义的管道。你可以先克隆一个预定义的项目模板,根据你的需要调整它,加载你的数据,训练一个管道,然后将其导出为Python包,最后把输出上传到远程存储并与您的团队共享您的结果。 spacy projects可以通过一个新的spacy project命令来使用,而且官方还提供了模板仓库。

开始使用项目模板:

pipelines/tagger_parser_ud

最简单的方法是克隆一个项目模板然后运行它,例如,这个端到端模板可让你在普遍的依赖树上(Universal Dependencies treebank)训练一个part-of-speech taggerand dependency parser

$ python -m spacy project clone pipelines/tagger_parser_ud

spaCy项目可以轻松地集成许多其他有用的工具,使你能够在数据科学和机器学习生态中追踪和管理你的数据和实验,迭代你的demo和原型并将你的模型投入生产。

序号 工具名 用途 说明
1 DVC 数据管理与版本控制工具
2 prodigy 数据标记工具 挺贵的
3 Streamlit 管道的可视化和demo,能够应用python实现可视化展示
4 FastAPI fastapi是高性能的web框架,官网,类似flask 具有交互文档(类似swagger)
5 Ray 分布式和并行化训练
6 Weights&Biases 追踪的实验和结果
7 Hugging Face HUB 上传的的管道到Hugging Face HUB服务

1. 克隆一个项目模板

克隆
克隆一个项目,spaCy调用git并使用“sparse checkout”功能来克隆相关的目录或多个目录。

spacy project clone命令能够克隆一个现有的项目模板并且将文件复制到本地目录。然后你可以运行该项目,例如:训练管道并编辑命令和脚本以构建完全自定义的工作流。

python -m spacy project clone pipelines/tagger_parser_ud

默认情况下,项目将被克隆到当前工作目录中。您可以指定可选的第二个参数来定义输出目录。如果您不想使用spaCy的仓库,可以--repo 参数自定义你的仓库,你还可以使用任何你有权访问的 Git存储库。

2. 获取项目资产(assets)

# project.YML
assets:
  - dest: 'assets/training.spacy'
    url: 'https://example.com/data.spacy'
    checksum: '63373dd656daa1fd3043ce166a59474c'
  - dest: 'assets/development.spacy'
    git:
      repo: 'https://github.com/example/repo'
      branch: 'master'
      path: 'path/development.spacy'
    checksum: '5113dc04e03f079525edd8df3f4f39e3'

资产是您的项目需要的数据文件 — 例如,用于初始化模型的训练和评估数据或预训练向量和嵌入式向量。每个项目模板都带有一个project.yml,它定义了要下载的资产以及放置它们的位置。spacy project assets将为您获取项目资产:

cd some_example_project
python -m spacy project assets

资产链接(URL)可以是多种不同的协议:HTTP、HTTPS、FTP、SSH,甚至云存储,例如 GCS 和 S3。您还可以使用git获取资产,方法是将url字符串替换为git块(git block)。spaCy 将使用 Git 的sparse checkout功能来避免下载整个存储库。

3. 运行命令

# project.YML
commands:
  - name: preprocess
    help: "Convert the input data to spaCy's format"
    script:
      - 'python -m spacy convert assets/train.conllu corpus/'
      - 'python -m spacy convert assets/eval.conllu corpus/'
    deps:
      - 'assets/train.conllu'
      - 'assets/eval.conllu'
    outputs:
      - 'corpus/train.spacy'
      - 'corpus/eval.spacy'

命令由一个或多个步骤组成,可以使用spacy project run命令运行。 以下将运行project.yml文件中定义的reprocess命令。

python -m spacy project run preprocess

命令可以 使用deps(命令需要的文件)和output(命令创建的文件)键(keys)来定义它们的预期依赖项和输出。这允许你的项目跟踪更改并确定一个命令是否需要重新运行。例如,如果您的输入数据发生变化,您希望重新运行(re-run)preprocess命令。但如果没有任何改变,这一步就可以跳过。您还可以设置--force来强制重新运行一个命令 或者--dry来执行一个“试运行”(dry run)并查看会发生什么(脚本不需要实际运行)

4. 运行工作流

# project.YML
workflows:
  all:
    - preprocess
    - train
    - package

工作流是一系列按顺序运行且通常相互依赖的命令。例如,要生成管道package,您可以先转换数据,然后运行spacy train在转换后的数据上训练您的管道,成功之后,运行spacy package将训练完成的工件转换为可安装的Python包。以下命令运行project.yml 中定义的工作流all,并按顺序执行其中指定的命令:

python -m spacy project run all

使用命令中定义的期望的dependencies and outputsspaCy可以确定是重新运行命令(如果其输入\输出已更改)还是跳过它。如果您希望实现更高级的数据管道并在Git中跟踪您的更改,请查看Data Version Control (DVC) integration spacy project dvc命令能够为你的project.yml文件定义的工作流生成一个DVC配置文件,以便您可以将spaCy项目作为DVC存储库进行管理。

5.(可选)推送到远程存储

project.YML
remotes:
  default: 's3://my-spacy-bucket'
  local: '/mnt/scratch/cache'

管道训练完成后,您可以选择使用spacy project push命令通过S3Google Cloud StorageSSH等协议将您的输出上传到远程存储。这可以帮助您导出管道包、与团队共享工作或缓存结果以避免重复工作。

$ python -m spacy project push

project.yml中的remotes部分(section)允许你为不同的存储分配名称。要从远程存储下载状态,您可以使用spacy project pull命令。有关更多详细信息,请参阅文档remote storage

来发评论吧~
Powered By Valine
v1.5.2