跳转到主要内容

一个包含辅助工具的软件包,用于使用huggingface_hub构建Hugging Face API推理的Docker应用程序

项目描述

这个仓库允许第三方库与huggingface_hub集成,以创建自己的Docker,使得Hub上的小部件可以像transformers一样工作。

目前,运行API的硬件将由Hugging Face提供。

文件夹docker_images/common旨在成为所有想要集成的全新库的起点。

从新的库添加新的容器。

  1. docker_images/common文件夹复制到您的库名称docker_images/example

  2. 编辑

    • docker_images/example/requirements.txt
    • docker_images/example/app/main.py
    • docker_images/example/app/pipelines/{task_name}.py

    以实现所需的功能。所有所需的代码都带有IMPLEMENT_THIS标记。

  3. 删除

    • docker_images/example/app/pipelines/中未使用的任何管道文件。
    • docker_images/example/tests中与已删除管道相关联的任何测试。
    • docker_images/example/app/pipelines/__init__.py中删除的任何管道导入。
  4. 请随意在需要的地方自定义您的库所需的所有内容。唯一的真正要求是,要尊重所有支持的任务中的HTTP端点,就像common文件夹一样。

  5. 编辑example/tests/test_api.py以添加TESTABLE_MODELS。

  6. 通过测试套件pytest -sv --rootdir docker_images/example/ docker_images/example/

  7. 提交您的PR并享受!

全面实施

完成前7步就足够开始使用了,然而在过程中你可以预先考虑到一些可能的问题并及早进行修正。如果你自己不自信能够完成这些步骤,维护者会在过程中帮助你。

  1. 在Docker中测试你的创建物
./manage.py docker MY_MODEL

应该能在8000端口上工作并响应。curl -X POST -d "test" https://:8000 例如,如果管道处理简单的文本。

如果它不能直接工作,或者由于某些原因Docker运行缓慢,你可以使用本地环境(使用你的本地Python环境)进行测试:

./manage.py start MY_MODEL

  1. 测试你的Docker是否正确地使用了缓存。

当你使用相同的model_id进行后续的Docker启动时,Docker应该启动得非常快,并且不会重新下载整个模型文件。如果你看到model/repo被反复下载,这意味着缓存没有被正确使用。你可以编辑docker_images/{框架}/Dockerfile并添加一个环境变量(默认假设为HUGGINGFACE_HUB_CACHE),或者直接在你的代码中添加环境变量,将模型文件放在/data文件夹中。

  1. 添加一个Docker测试。

编辑tests/test_dockers.py文件,添加一个新的测试,其中包含你的新框架(例如def test_{框架}(self):)。作为一个基本,你应该在这个测试函数中每行有一个任务,并且使用在hub上的真实工作模型。这些测试相对较慢,但会自动检查你的API是否正确地回复了错误,并且缓存是否工作正常。要运行这些测试,你可以简单地做:

RUN_DOCKER_TESTS=1 pytest -sv tests/test_dockers.py::DockerImageTests::test_{framework}

修改api-inference-community/{routes,validation,...}.py文件中的文件。

如果你在api-inference-community包中遇到错误,或者想要更新它,开发过程会更加复杂。

  • 首先,确保你需要修改这个包,每个框架都非常独立,所以如果你的代码可以通过独立运行来解决问题,那么首先考虑这种方法,因为它更简单。
  • 如果你可以在不依赖于它的前提下只修改api-inference-community,这也是一个很好的选择。确保在PR中添加适当的测试。
  • 最后,最好的方式是在本地使用manage.py命令进行开发
  • 首先在api-inference-community中做必要的修改。
  • 在你的环境中本地安装它,使用pip install -e .
  • 本地安装你的包依赖。
  • 本地运行你的web服务器:./manage.py start --framework example --task audio-source-separation --model-id MY_MODEL
  • 当一切正常时,你将需要将你的PR分成两部分,1部分是api-inference-community部分。第二部分将是你包特定的修改,并且只有在api-inference-community标签落地后才会合并。
  • 这个工作流程仍在进行中,不要犹豫向维护者提问。

另一个类似的命令./manage.py docker --framework example --task audio-source-separation --model-id MY_MODEL 将启动服务器,但这次是在一个受保护、受控制的Docker环境中,确保行为将与API中的行为完全一致。

可用任务

  • 自动语音识别:输入是一个文件,输出是文件中听到的单词的字典
  • 文本生成:输入是文本,输出是生成的文本的字典
  • 图像识别:输入是图像,输出是生成的文本的字典
  • 问答:输入是问题和一些上下文,输出是包含必要信息以在上下文中找到问题答案的字典。
  • 音频源分离:输入是一些音频,输出是n个音频文件,这些文件加起来等于原始音频,但包含单个声音源(例如扬声器或乐器)。
  • 标记分类:输入是一些文本,输出是文本中提到的实体的列表。实体可以是任何引人注目的内容,如地点、组织、人物、时间等...
  • 文本到语音:输入是一些文本,输出是读出文本的音频文件...
  • 句子相似度:输入是一些句子和一个参考句子列表,以及相似度分数列表。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

本发布版本没有提供源代码分发文件。请参阅生成分发存档的教程

构建分发

api_inference_community-0.0.34-py3-none-any.whl (17.4 kB 查看哈希值)

上传时间 Python 3

由以下提供支持