官术网_书友最值得收藏!

1.3 DevOps和MLOps

DevOps是一套技術和管理實踐,旨在提高組織發布高質量軟件的速度。DevOps的一些優點包括快速性、可靠性、可擴展性和安全性。這些好處是通過堅持和遵循以下最佳實踐產生的:

持續集成(CI)

CI是持續測試軟件項目并根據測試結果改善項目質量的過程。它是自動化測試過程,并使用開源和SaaS構建的服務器,例如,GitHub Actions、Jenkins、Gitlab、CircleCI或云原生構建像AWS CodeBuild這樣的系統。

持續交付(CD)

在無須人工干預的情況下將代碼交付到新環境。CD是自動部署代碼的過程,通常通過使用IaC實現。

微服務

微服務是一種具有獨特功能的軟件服務,幾乎沒有對外依賴。最受歡迎的基于Python的微服務框架之一是Flask。例如,機器學習預測端點就非常適合作為微服務。這種微服務可以使用多種技術,包括FaaS(函數即服務)。云函數的一個完美例子是AWS Lambda。微服務是容器就緒的,并使用CaaS(容器即服務)通過Dockerfile將Flask應用程序部署為一個服務,如AWS Fargate、Google Cloud Run或Azure App Services。

基礎設施即代碼(IaC)

基礎設施即代碼(IaC)是將基礎設施檢查為源代碼倉庫并部署它,同時可以將更改推送到該倉庫的過程。IaC允許冪等行為并確保基礎設施不需要人工來創建它。純粹用代碼定義,并且被檢查進入源代碼控制倉庫的云環境是一個很好的示例。流行技術包括特定云的IaC,如AWS Cloud Formation或AWS SAM(無服務器應用模型)(https://oreil.ly/4Q3XE)。多云選項包括Pulumi(https://pulumi.com)和Terraform(https://terraform.io)。

監控和儀表

監控和儀表是一個組織對軟件系統性能和可靠性做出決策的流程和技術。通過日志系統和諸如New Relic、Data Dog或Stackdriver這類的應用程序性能監控工具,監控和儀表可以收集生產環境中應用程序或數據科學軟件系統中的行為數據。這個過程就是Kaizen發揮作用的地方,數據驅動的組織會每日或每周采用這些儀表讓事情變得更好。

有效的技術交流

此技能涉及創建有效的、可重復的和高效的溝通方法。有效的技術交流的絕佳范例就是采用AutoML進行系統的初始原型設計。當然,最終,AutoML模型可能會被保留或丟棄。盡管如此,自動化仍是一種防止解決棘手問題的信息工具。

有效的技術項目管理

這個過程可以高效地使用人力和技術解決方案來管理項目,比如票務系統和電子表格。合適的技術項目管理需要將問題分解成小的、模塊化的工作,所以才會有增量的進步。機器學習的一個反模式通常是一個團隊在一個生產機器模型上“完美地”解決了一個問題。相反,每天或每周交付較小的成果是更具可擴展性和謹慎的模型構建方法。

持續集成和持續交付是DevOps最重要的兩個支柱。持續集成涉及將代碼合并到源代碼控制倉庫中,這個過程通過測試自動檢查代碼質量。持續交付是當代碼發生更改時,自動測試和部署到臨時環境或生產環境。這些技術是Kaizen精神或持續改進的自動化形式。

一個很好的問題是團隊中誰應該實施CI/CD?答案是所有MLOps團隊成員都應幫助開發和維護CI/CD系統。維護良好的CI/CD系統對團隊和公司來說是面向未來的投資。

ML系統也是一個軟件系統,但它包含一個獨特的組件:機器學習模型。DevOps的相同優勢可以應用于ML系統。擁抱自動化是諸如數據版本控制和AutoML之類新方法在借鑒DevOps理念方面有許多前景的原因。

主站蜘蛛池模板: 马鞍山市| 岑巩县| 洞口县| 桂平市| 广昌县| 马公市| 西平县| 威远县| 宜良县| 克拉玛依市| 长沙市| 开阳县| 石河子市| 陈巴尔虎旗| 望谟县| 苍梧县| 敦煌市| 晋宁县| 开封县| 龙里县| 民权县| 泾阳县| 汝阳县| 翼城县| 甘德县| 南木林县| 水城县| 辽源市| 阿克苏市| 葫芦岛市| 和平区| 张家港市| 奎屯市| 宽甸| 东城区| 阳东县| 正宁县| 龙南县| 盐池县| 沛县| 神农架林区|