Skip to main content

使用 Rust 构建 MLOps 解决方案

· 5 min read

关键术语

Rust

  • Rust - 一种注重安全、速度和效率的现代系统编程语言。提供保证内存安全等高级功能。
  • rustup- Rust 的工具链安装程序。可轻松安装编译器、软件包管理器 cargo 和其他 Rust 工具。
  • Cargo- Rust 构建系统和软件包管理器。用于管理依赖关系和构建/编译 Rust 项目。
  • Crates- 可在 crates.io 上共享的 Rust 代码包。相当于其他语言中的库或模块。
  • rustfmt - Rust 格式化工具,用于根据指南自动格式化 Rust 源代码。确保风格一致。
  • Clippy- Rust 内核工具,用于分析代码并检测潜在问题或改进。帮助编写更习惯的 Rust 代码。
  • Makefile- 定义规则/命令的文件,用于自动构建和管理项目。允许工作流程标准化。
  • Codespaces- 由 GitHub 托管的基于浏览器的开发环境。为提高 Rust 的生产力而预先配置。
  • GitHub Copilot - AI 结对程序员工具,旨在实时建议代码补全和整个函数。支持 Rust。

MLOps

  • Hugging Face- 专注于 NLP 和预训练转换器模型(如 BERT)的流行工具箱。已集成 Rust。
  • ONNX- 实现框架互操作性的模型开放标准格式。允许模型移植。
  • EFS- 亚马逊弹性文件系统,为 AWS 提供可扩展的云文件存储。 可挂载到 Lambda。
  • RustBERT- Hugging Face 的 BERT 变换器模型的 Rust 实现和绑定。支持 NLP。
  • PyTorch- 适用于 Python 的灵活机器学习框架,现在通过 Torch-rs 与 Rust 绑定。
  • CUDA - 允许 GPU 加速的并行计算 API 模型。Rust 通过后端提供支持。
  • Stable Diffusion- 使用深度学习的开源文本到图像生成器。可通过绑定从 Rust 访问。
  • torch-rs- 为流行的 PyTorch 深度学习框架提供 Rust 绑定的原型,以支持 ML 解决方案。
  • Distroless- 仅专注于应用程序运行时的容器模型,可减少攻击面和漏洞。安全性能良好。

Rust on Cloud

  • Actix- 用于构建高性能网络服务(如微服务)的 Rust 网络框架。支持异步和可扩展性。
  • App Engine - GCP 全面管理的无服务器应用程序平台。支持 Rust 作为自定义运行时选项。
  • Cloud Run- GCP 产品,用于在完全托管的环境中运行无状态容器。与 Rust 工作流集成。
  • Cargo Lambda- Rust crate,帮助打包、测试、部署和管理用 Rust 编写的 AWS Lambdas。
  • Step Functions- 通过组合 Lambda 函数实现无服务器可视化工作流的 AWS 服务。可通过 Rust SDK 访问。
  • Tokio- 用于 Rust 的异步运行时,通过利用线程将非阻塞 I/O 扩展到数以万计的任务。
  • ECS- 亚马逊弹性容器服务,用于使用 AWS CLI 或 SDK(包括 Rust)启动 Docker 容器。
  • ECR - 亚马逊弹性容器注册中心(Amazon Elastic Container Registry),提供与 Rust CI/CD 集成的可管理、可扩展的 Docker 容器存储。
  • Copilot- CLI 工具,用于在 AWS 服务(如使用 Docker 的 ECS/ECR)上简化容器化应用程序的构建、发布和运行。

机器学习容器

· 6 min read

关键术语

  • 容器 Container- 一种标准化的轻量级软件包,可将应用程序的代码和依赖关系捆绑在一起,以便在任何环境中可靠运行。
  • 容器注册中心(Container Registry)- 用于存储、共享和部署容器镜像的存储库,通常集成到 CI/CD 管道中。例如 Docker Hub、AWS ECR。
  • 容器协调 Container Orchestration- 利用 Kubernetes 和亚马逊 ECS 等平台对容器进行自动管理、扩展和协调。
  • 持续交付- 通过 CI/CD 管道自动化部署,快速可靠地构建、测试和发布容器的软件开发实践。
  • 基础设施即代码(Infrastructure as Code)--通过机器可读的定义文件管理网络、计算、存储等基础设施,而不是手动流程。实现可重现性。
  • 无发行版容器 Distroless Container- 经过优化的容器映像,只包含应用程序、运行时语言和基本系统库,省略了外壳、软件包管理器等。提高安全性。

Containerized Microservices

从零部署构建 Faas (Function As A Service)

· 4 min read

关键术语

  • Python 函数- 可重复使用的代码块,用于接收输入、处理和返回输出。基本的构建模块。
  • Python Fire- 一个从任何 Python 对象或函数自动生成 CLI 的库,使其成为一个可定制的命令行工具。
  • 命令行界面 (CLI)- 基于文本的用户界面,通过键入提示和输入执行命令。实现自动化。
  • 云函数- 无需管理服务器即可执行代码,以响应 HTTP 或数据库变化等事件。
  • Azure 功能- 微软云托管的无服务器计算服务,用于执行事件驱动功能。
  • 持续集成Continuous Integration)--通过将开发人员提交的代码合并到主线分支(由推送请求触发),对代码更改进行自动测试和验证。

从零构建 Python 函数并部署

金融资产定价模型 Asset Pricing Model (Firm Value, Share, Bond)

· 3 min read

企业价值 Firm Value

企业价值公式

[i=1tCFt(1+WACC)t][\sum_{i=1}^t \frac{CF_t}{(1+WACC)^t}] [WACC=EV×re+DV×rd×(1Tc)][\text{WACC} = \frac{E}{V} \times r_e + \frac{D}{V} \times r_d \times (1 - T_c)]
  • EE:公司权益的市场价值
  • DD:公司债务的市场价值
  • V=E+DV=E+D:公司的总价值(权益 + 债务)
  • rer_e​:权益成本(如 CAPM 计算得出的股权回报率)
  • rdr_d​:债务成本(借贷利率)
  • TcT_c​:企业所得税率

两个最近碰到棘手的技术问题

· One min read

问题一: Python 环境无法退出

碰到个很棘手的问题,vsc 里面,我创建了 python venv, 启动后,我把 venv 删掉了,导致无法正常退出 之前删除的 venv。

实践-利用 GitHub 生态系统进行开发-训练模型

· 8 min read

关键术语

  • Codespaces- 由 GitHub 托管的基于云的一次性开发环境。提供可重现性和自定义功能。
  • 可重复性--可靠地重新创建环境并获得相同结果的能力。代码空间通过容器确保了这一点。
  • 容器映像(Container Image)- 一种轻量级、独立、可执行的软件包,允许代码跨环境快速、可靠地运行。
  • GPU- 利用专用硬件加速机器学习模型构建/训练的图形处理单元。
  • Copilot- GitHub 的人工智能配对程序员,可在开发人员输入代码时向其推荐代码和整个函数。
  • 持续集成(Continuous Integration)- 通过自动构建和测试流程,频繁合并代码变更并验证每项变更的开发实践。
  • 持续交付(Continuous Delivery)--软件方法论,团队可通过自动部署快速、可靠、可持续地向用户发布新变更。

云开发人员工作区

SSD: Solid State Drive

使用管道进行数据运维

· 3 min read

关键术语

  • AWS Step Functions- 一种无服务器协调服务,可让您使用可视化工作流协调分布式应用程序和微服务的组件。
  • AWS Batch- 一种托管计算服务,可在 AWS 上调度和运行任何规模的批量计算工作负载。自动提供资源。
  • AWS Glue- 无服务器 ETL 和数据集成服务,可为分析和机器学习准备和转换数据。
  • ETL 管道- 从数据源提取数据、处理/清理数据并将其加载到目标数据库或数据仓库的提取、转换和加载管道。
  • 无服务器管道 - 使用 Lambda、Glue、Batch 和 Step Functions 等云服务来构建可自动管理基础设施的数据管道。
  • DataOps- 协作数据管理实践,侧重于通过自动化基础设施提高数据交付的质量和速度。