本文档涵盖了 llama-models Python 包的构建过程、CI/CD 流水线和分发机制。它解释了该仓库如何打包以进行 PyPI 分发,包括资产包含、版本管理和自动化发布工作流。
有关分发后安装和设置包的信息,请参阅安装和设置。有关正在打包的核心模型实现的详细信息,请参阅模型架构。
包的分发由 MANIFEST.in 文件控制,该文件明确定义了除标准 Python 源代码外,所有要包含在分发包中的文件。
清单指定了必须与包捆绑在一起的几类资产
| 资产类型 | 文件 | 目的 |
|---|---|---|
| 配置 | pyproject.toml, README.md | 包元数据和文档 |
| 分词器 | llama3/tokenizer.model, llama4/tokenizer.model | 模型专用分词 |
| 示例图片 | resources/dog.jpg, resources/pasta.jpeg | 测试和演示 |
| 文档 | llama3_1/prompt_format.md, llama3_2/text_prompt_format.md, llama3_2/vision_prompt_format.md | 模型专用格式指南 |
清单中包含 models/ 和 llama_models/ 目录结构中的文件,以支持不同的导入模式。
包资产分发
该软件包使用 Python 的标准构建工具,其中包含 pyproject.toml 配置和用于旧版兼容的 setup.py 文件。构建过程会创建源分发版(sdist)和二进制 wheel 包。
自动化构建过程遵循以下步骤
pypa/build 工具MANIFEST.in 中指定的文件构建流水线架构
来源:.github/workflows/publish-to-test-pypi.yml38-50
自动化发布流水线使用 GitHub Actions 实现,具有两种主要的触发机制和对 PyPI 服务的可信发布。
该工作流支持两种激活方法
| 触发类型 | 来源 | 目的 |
|---|---|---|
repository_dispatch | 外部 llama-stack 仓库 | 自动化夜间构建 |
workflow_dispatch | 手动激活 | 候选版本构建 |
CI/CD 过程包含两个主要作业
构建阶段:
pypa/build 构建包发布阶段:
CI/CD 工作流架构
来源:.github/workflows/publish-to-test-pypi.yml1-75
版本管理通过使用 sed 命令直接修改 setup.py 文件,在构建过程中动态处理。
该流水线根据触发源实现不同的版本控制方法
仓库分发 (自动化):
client_payload.version 中提取source == 'llama-stack-nightly' 时应用sed -i 's/version="\([^"]*\)"/version="${{ github.event.client_payload.version }}"/' setup.py手动分发 (发布候选版本):
0.0.63.dev20250111)sed -i 's/version="\([^"]*\)"/version="${{ inputs.version }}"/' setup.py版本管理系统支持自动化夜间构建和手动发布候选版本生成,并采用适当的版本编号方案。
来源:.github/workflows/publish-to-test-pypi.yml26-33
软件包分发使用 PyPI 的可信发布机制,通过 OpenID Connect 身份验证,无需 API 令牌。
发布作业在具有特定权限的专用 testrelease 环境中运行
testrelease,URL 为 https://test.pypi.org/p/llama-modelsid-token: write 用于可信发布https://test.pypi.org/legacy/)pypa/gh-action-pypi-publish 上传到 TestPyPI分发过程确保 MANIFEST.in 中定义的所有资产都正确包含在发布的软件包中,从而使分词器模型、示例资源和文档可供软件包使用者使用。
分发安全模型