Thoth项目的包和包堆栈顾问
项目描述
欢迎使用Thoth的顾问仓库。
此仓库提供了名为“thoth-adviser”的组件的源代码,该组件具有以下用途:
为Thoth项目提供推荐引擎。
一个名为“Dependency Monkey”的工具,可以生成遵循Python生态系统中的程序规则解决依赖关系的所有可能的软件堆栈。
基于使用的包源索引检查已安装的Python软件包的来源。
如果您想从用户的角度与Thoth交互,请查看Thamos仓库。
如果您想浏览技术文档,请访问thoth-adviser部分,位于thoth-station.ninja。
软件堆栈解析管道
软件栈生成技术共享于依赖猴子以及推荐引擎。软件栈生成的核心原则在于一个称为“软件栈解析管道”的抽象。该管道由多个不同类型的单元组成,这些单元形成原子组件,根据依赖解析对软件栈中可能出现的包进行评分。
如上图动画所示,构成软件栈解析管道的管道单元在管道创建时动态地包含在管道中。一组包含的单元形成了一个管道配置。
管道配置是由“管道构建器”构建的,它会询问每个管道单元是否应该包含在管道配置中。每个管道单元可以根据用户软件栈的方面,如
应用程序运行时环境中的可用硬件(例如CPU、GPU)
应用程序预期运行的运行环境中的操作系统及其版本
操作系统提供的软件,例如Python解释器版本、CUDA版本(用于GPU计算)以及其他原生依赖(例如glibc版本、Intel MKL库等)及其ABI
用户对构建的软件的意图 - 例如,构建计算密集型应用程序、适用于生产环境的应安全用程序、最新最好的软件等
软件质量检查的检查类型 - 依赖猴子场景
…
上述所有向量构成了管道构建器(动画中的机器人)的“上下文”,该管道构建器创建管道配置(一组管道单元)。
另请参阅
预测引导的解析过程
一旦构建了管道配置,它就被用来解决满足所需质量和目的的软件栈。
解析器(动画中的仙女)可以根据依赖解析运行预聚合的数据基于Python打包方式解析并遍历依赖图。解析过程由一个称为“预测器”的抽象(在动画中显示为魔术师)引导。预测器决定依赖图中哪些包应由解析器解析并包含在结果软件栈中。解析的包将通过软件栈解析管道进行评分(积极、消极或完全排除软件栈中解析的包)。解析管道可以
根据解析的包注入新的包或新的包版本到依赖图中(例如,一个库未声明为依赖的包,依赖支持问题等)
从依赖图中移除特定版本或整个依赖(例如,一个包意外声明为依赖,运行环境中的缺失ABI符号,依赖过度依赖问题等)
对依赖图中出现的特定版本的包进行积极评分 - 优先解析依赖图中的特定包(例如,特定版本/构建中包的积极性能方面)
对依赖图中特定版本的包进行消极评分 - 优先解析其他版本(例如,特定发布中的安全漏洞)
防止解析特定版本的特定包,以便解析器尝试找到不同的解析路径,如果有的话(例如,有缺陷的包发布)
管道配置中现有的管道单元可以考虑到上述“上下文” - 管道单元可以考虑到所使用的运行环境的特点(软件和硬件可用)、应用程序的目的等
管道单元分为不同类型 - 靴、别名、筛子、步骤、步长和包装。有关更多信息,请参阅在线文档(无需跟随)。
预测器可以切换,预测器的类型有助于所需的分辨率过程。为了推荐高质量的软件堆栈,使用强化学习算法,如MCTS或TD-learning。
另请参阅
分辨率过程作为马尔可夫决策过程
整个分辨率过程可以建模为马尔可夫决策过程(MDP),因此上述强化学习(RL)原则可以适用。推荐最佳可能的软件包集对应于解决给定的MDP。有关更多信息,请参阅Thoth的文档。
为了遵守强化学习术语中常用的术语,预测器可以被视为一个代理。解析器和软件堆栈解析管道可以被视为与环境交互的实体。在Thoth中使用的名称故意不对应于RL术语,因为基于RL的解析只是可以实施的可能解析之一(其他可以是爬山,依赖图中的随机游走等)。
另请参阅
依赖猴
有关更深入的解释和视频,请参阅以下文章(无需跟随)。
依赖猴的主要用途是生成软件堆栈,随后在Amun服务中进行验证和评分。简单来说,在生成所有可能的软件堆栈时,我们可以通过在CI(或Thoth的情况下的Amun)中验证,并在特定的运行时环境中运行应用程序(例如,在安装了原生包的Fedora 33上 - RPMs)来找到适用于应用程序的最佳软件堆栈。但是,通常无法在合理的时间内生成和评分所有可能的软件堆栈。为此,依赖猴可以创建一个可以作为代表性的软件堆栈样本。这些代表性样本将被评分,并且聚合数据将用于预测最佳应用程序堆栈(再次,生成并通过CI/Amun运行以提高预测的准确性,通过时间学习)。
有关更多信息,请参阅依赖猴文档。
另请参阅
建议和推荐
在Thoth的术语中,建议和推荐是相同的。根据存储在数据库中的聚合知识,提供最佳的应用程序堆栈,并说明为什么使用给定的软件堆栈。管道配置中存在的管道单元评分解析的软件包并提供此类推理。这种推理在Thoth的术语中被称为“理由”。请参阅Thoth页面以查看一些示例。
来源检查
由于Thoth聚合有关可用软件包的信息,它可以验证用户的堆栈与知识库。有关更多信息,请参阅来源检查。
安装和部署
顾问是使用OpenShift Source-to-Image构建的,并自动部署在thoth-station/thoth-application存储库中提供的Thoth部署中。
在 Thoth 部署中,顾问程序基于对 用户 API 的请求运行——每个部署的顾问程序都针对一个用户请求运行。您还可以通过安装它并使用其命令行界面在本地运行顾问程序。
pip3 install thoth-adviser thoth-adviser --help # Or use git repo directly for the latest code: # pip3 install git+https://github.com/thoth-station/adviser
请注意需要可用数据库。请参阅 thoth-storages 仓库 了解如何在本地运行 Thoth 的知识图谱以及示例 notebooks 进行实验。
当 thoth-adviser 在部署中安排时,它实际上作为一个 CLI 执行,通过环境变量传递参数。
阻止虚假的管道单元
顾问程序还考虑环境变量 THOTH_ADVISER_BLOCKED_UNITS,该变量指定不应添加到管道中的管道单元的逗号分隔列表。如果部署中出现单元问题,这可能会很有用 - Thoth 操作员可以通过调整顾问程序部署清单中的环境变量来删除管道单元,而无需部署顾问程序的新版本。
禁用管道单元验证
对于类似生产的部署,您可以禁用管道单元验证。通过这样做,可以更快地构建管道单元配置。提供环境变量 THOTH_ADVISER_VALIDATE_UNIT_CONFIGURATION_SCHEMA=0 以禁用管道单元配置验证。
本地运行顾问程序
通常,运行顾问程序以进行实验或验证您的实现更改非常有用。您可以通过运行以下命令轻松做到这一点:
pipenv install --dev
PYTHONPATH=. pipenv run ./thoth-adviser --help
此命令将在本地运行顾问程序——顾问程序将尝试连接到本地 PostgreSQL 实例并计算建议。请在此处浏览文档以了解如何设置本地 PostgreSQL 实例。此外,请遵循开发者指南以获取有关开发者设置的更多信息。
项目详情
thoth_adviser-0.56.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bb54642ea15cd0e2a19e9df76aaba4a7d7bb751934f88ec9653144706faf7db6 |
|
MD5 | 96fec2fe4d6ffc881f0e371103c0a0f1 |
|
BLAKE2b-256 | 4194c5ee806fd3190f88c637184b7e3a963ef12cfc78e2e85617df5da9a4ec14 |
thoth_adviser-0.56.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d02d982c39c3be569c62c3572ce3e29eec11afe2a59a00f52a7543185dd0636 |
|
MD5 | 0ca5fc6b394c6f76a012a4f8fb38a2ac |
|
BLAKE2b-256 | 9b091c21704ce041469b3a7e53db2c5a30a7f7797b97919416d9ce8642b9ac32 |