首页 > 其他分享 >MLops:我最喜欢的数据科学项目的 Github 项目模板

MLops:我最喜欢的数据科学项目的 Github 项目模板

时间:2022-09-05 01:33:07浏览次数:94  
标签:文件 CI Github 项目 代码 git MLops 模板

MLops:我最喜欢的数据科学项目的 Github 项目模板

source : unsplash.com- @yancymin

TLDR:

在这个故事中,我将分享一个 git 项目结构,我经常将其用作数据科学项目的起点,并讨论一些可以帮助组织代码的包。我还实现了一个基本版本的 CI 管道,它允许自动化代码质量分析。

介绍

在开始一个新项目时,从头开始设置 Github 存储库始终是一个需要反思的问题。在我作为数据科学家的旅程中,我遇到了一些让我的工作生活更轻松的包和结构。它们保证了代码质量、组织以及从实验和开发到生产的轻松移动。

此外,在团队中开展项目时,必须在 Github 项目上设置有关代码质量、覆盖率、审查和文件组织的规则。话虽如此,这个故事不仅对数据科学家有帮助,而且对任何从事代码工作的人都有帮助。 数据上下文 这可能是数据工程师、机器学习工程师或从业者……旨在产生高质量的可交付成果。

下面,我将分享我在构建时经常作为起点使用的 git 项目结构 一个 git 数据科学存储库 并讨论一些我认为对拥有高质量代码有用的技巧和包。最后我会简单谈谈 千篇一律 :每次必须创建新存储库时帮助生成 git 项目结构的工具。描述此工具的专门文章将在接下来的几周内发布。

一、项目结构

好吧,我通常从一个基本结构开始,它允许我在同一个 repo 中组织探索笔记本、脚本和配置,我将在模型工业化时使用。

 我的项目/  
 |- bin/ # 包含脚本和主文件  
 |- config/ # 配置文件  
 |- notebooks/ # 用于 EDA 和探索的笔记本  
 |- secrets # 包含 api 密钥和秘密参数。  
 |- src/ # 源代码 - 包含函数  
 |- tests/ # 测试文件应该镜像 src 文件夹  
 |- Makefile # 通过 make 实用程序自动化任务  
 |- requirements(_dev).in # 项目依赖

该项目有一个入口点,即 bin。它包括应该运行的脚本。 配置秘密 分别用于处理变量(文件路径、参数……)和私有元素(如 API 密钥、访问参数……)。秘密文件应该在 git 中未跟踪,确保您提交示例文件而不是原始文件。
然后来了 源代码测试。 那两个 **** 将分别包括在笔记本和脚本中调用的核心代码及其相应的测试。通常, 测试 文件夹是镜像 源代码 .

为了保持代码质量和最佳开发实践,我们利用少数 python 包来帮助我们格式化代码,检查是否符合 pep8 规则,然后再将代码推送到 repo。这些软件包列在 要求(_dev).in 文件。我通常在两个不同的文件中列出项目在开发和生产中所需的包。例如,seaborn 或 plotly 等可视化软件包可能仅在探索阶段需要,因此无需在生产中安装它们。此外,使用 需求.in 文件和 pip-tools 将它们编译成 要求.txt 请允许我跟踪并区分 所需的包及其依赖项。

接下来是makefile,它使用 实用工具 并将命令分组以运行包以帮助分析代码质量。这是它的样子。

makefile 中实现的不同命令引导我们讨论我们用来确保具有 相同的编码标准 在项目上。我们将在下一节进一步讨论它们。

2. 代码质量

2.1。黑色包装:

Black 是我们用来自动格式化代码并确保它遵守 pep8 代码约定的包,它允许我们在遵守团队相同标准的同时节省时间并加快开发速度。 Black 可以作为独立包运行,也可以作为预提交钩子的一部分运行。

2.2.皮林特:

皮林特是一个短绒 分析python源代码并标记潜在问题的程序,如语法错误、未使用的变量和导入、偏离规定的编码风格(在我们的例子中是pep8)......简而言之,它有助于改进代码库。我们可以将 pylint 用作独立包或作为 pre-commit 包的一部分。

2.3.预提交

顾名思义,这个包通常在将代码添加到代码库之前运行。它允许运行几个钩子(black、isort、pylint…)。所有这些包都列在项目根文件夹的 .pre-commit-config.yaml 文件中。有关如何配置和个性化您的钩子的更多详细信息,您可以查看 下面的文章 .

3. CI

实施 CI 是一种允许在部署之前自动进行代码分析和测试的实践。它由一组规则组成,每次在存储库上触发事件时都会检查这些规则(例如:dev 或 master 分支上的合并请求)。背后的目标是让开发人员更容易检测与代码质量相关的问题或最终遗漏的错误。在我们的例子中,我们从一个简单的版本开始 Github 操作 在里面 .github/workflow/ci.yaml 文件 .

CI 在 git 跟踪的文件上运行 pylint,检查单元测试并更新覆盖标记。每次请求 dev 或 main 上的合并事件时都会触发它。你可以按照 Github 动作中的 Ci 状态 选项卡并检查所有作业步骤是否成功运行。

The CI interface from Github action

这里终于 一切设置的存储库 .您可以克隆它并调整您的 CI,并可能添加您的 CD 以实现完全部署自动化。

您现在可能想知道,我们是否需要在创建新存储库时手动设置所有内容。没有任何进一步的悬念,答案是否定的。有一个我们经常使用的工具 做一个模板 任何 Github 回购结构。这个工具叫做 千篇一律 并将成为 **** 主题 **** 我在 Mlops 系列中的下一篇文章。敬请期待!

结论:

在本文中,我将分享一个项目 repo 结构,我经常将其用作我的数据科学项目的起点,并讨论一些可以帮助数据科学家和机器学习从业者使用少量包和自动化几个步骤的 Python 包。他们的回购。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/14368/24410501

标签:文件,CI,Github,项目,代码,git,MLops,模板
From: https://www.cnblogs.com/amboke/p/16656693.html

相关文章

  • 【2022.9.2】Django框架(网页伪静态、视图层、模板层)
    学习内容概要网页伪静态视图层三板斧JsonResponseform表单上传文件FBV与CBV(核心)CBV源代码(面向对象)模板层模板语法传值模板语法之过滤器模板语法之标签......
  • SPFA例题/模板
    https://www.acwing.com/problem/content/1131/ #include<bits/stdc++.h>#definefore(x,y,z)for(LLx=(y);x<=(z);x++)#defineforn(x,y,z)for(LLx=(y);x<(z);......
  • 算法模板
    基础算法倍增intget(intl,intr){intd=r-l+1;intc=upper_bound(one,one+max_v+1,d)-one-1;returnmax(dp[l][c],dp[r-one[c]......
  • django4/网页伪静态/视图层/模板层
    网页伪静态动态页动态网页,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。静态页即静态网页,是实际存在的,无需经过服务器......
  • enjoy模板引擎
    <dependency> <groupId>com.jfinal</groupId> <artifactId>enjoy</artifactId> <version>5.0.0</version></dependency>importcom.jfinal.kit.Kv;importcom.jfina......
  • velocity模板渲染引擎
    <dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>使用人数最多的版本</version></dependency>im......
  • Hexo + GitHub Pages 搭建博客
    前言:HEXO是一个快速、简洁且高效的博客框架,GitHubPages是GitHub提供的一个网页寄存服务,可用于存放静态网页,包括博客、项目文档甚至整本书。前提:注册GitHub教......
  • 详述 GitHub 中声明 LICENSE 的方法
    当我们在GitHub浏览一些开源项目时,我们经常会看到这样的标志:如上图所示,Apache-2.0,我们可以将其称之为开源许可证,那么到底开源许可证是什么呢?开源许可证即授权条款。......
  • 网页伪静态、视图层、模板层、form表单如何携带数据文件
    目录网页伪静态1.什么是伪静态网页?2.伪静态的好处3.实现伪静态网页视图层1.三板斧2.三板斧的本质Django视图层函数必须要返回一个HttpResponse对象研究底层源码3.视图函数......
  • Git使用出现[email protected] Permission denied publickey. 处理
    Git使用出现[email protected]:Permissiondeniedpublickey.处理进入gitbash界面然后:第一步,gitconfig--global--list验证邮箱与GitHub注册时输入的是否一致第二步......