Ubuntu TechHive
data-and-cloud-infrastructure-as-code.md
डेटा और क्लाउड (इन्फ्रास्ट्रक्चर एज़ कोड)
article.विवरण

डेटा और क्लाउड (इन्फ्रास्ट्रक्चर एज़ कोड)

reading.प्रगति 19 मिनट पढ़ें

इन्फ्रास्ट्रक्चर एज़ कोड (Infrastructure as Code) के साथ डेटा और क्लाउड का विवरण

डेटा और क्लाउड (Infrastructure as Code)

स्लाइड 1: परिचय

परिचय

  • ट्विटर: @akpanydre
  • सॉफ्टवेयर इंजीनियरिंग सलाहकार: Linux, DevOps, क्लाउड कंप्यूटिंग, मशीन लर्निंग
  • 2003 से उद्योग में स्व-शिक्षित, लगभग 15 वर्षों का पेशेवर अनुभव
  • विशेषज्ञता: सॉफ्टवेयर समस्या-समाधान, कस्टम समाधानों का निर्माण
  • बहुभाषी (फ्रेंच/अंग्रेजी और प्रोग्रामिंग भाषाएं)
  • प्रौद्योगिकी, अफ्रीकी संस्कृति, प्लास्टिक कला, जेम्बे ड्रम, यात्रा, अच्छा भोजन, बास्केटबॉल और जिमनास्टिक्स के प्रति उत्साही।

A propos (परिचय)

  • ट्विटर: @akpanydre
  • सॉफ्टवेयर इंजीनियरिंग सलाहकार: Linux, DevOps, क्लाउड कंप्यूटिंग, मशीन लर्निंग
  • 2003 से उद्योग में स्व-शिक्षित, लगभग 15 वर्षों का पेशेवर अनुभव
  • विशेषज्ञता: सॉफ्टवेयर समस्या-समाधान, कस्टम समाधानों का निर्माण
  • बहुभाषी (फ्रेंच/अंग्रेजी और प्रोग्रामिंग भाषाएं)
  • प्रौद्योगिकी, अफ्रीकी संस्कृति, प्लास्टिक कला, जेम्बे ड्रम, यात्रा, अच्छा भोजन, बास्केटबॉल और जिमनास्टिक्स के प्रति उत्साही।

प्रस्तुतकर्ता नोट्स: इंफ्रास्ट्रक्चर एज़ कोड (IaC) क्यों?

  • समस्या और यह क्या हल करता है, बताएं
  • इंफ्रास्ट्रक्चर एज़ कोड के महत्व को समझाएं
  • इंफ्रास्ट्रक्चर एज़ कोड को परिभाषित करें
  • इंफ्रास्ट्रक्चर एज़ कोड का उपयोग करने के लाभों पर चर्चा करें

स्लाइड 2: इंफ्रास्ट्रक्चर एज़ कोड क्या है?

परिभाषा

अंग्रेजी

इंफ्रास्ट्रक्चर एज़ कोड (IaC) सॉफ्टवेयर विकास में एक अभ्यास है जिसमें मैनुअल प्रक्रियाओं के बजाय कोड का उपयोग करके कंप्यूटर इंफ्रास्ट्रक्चर का प्रबंधन और प्रावधान करना शामिल है। यह दृष्टिकोण उन कई समस्याओं को हल करने में मदद कर सकता है जिनका सामना संगठन अपने इंफ्रास्ट्रक्चर का प्रबंधन करते समय करते हैं, जिनमें शामिल हैं:

फ्रेंच

L'Infrastructure en tant que code (IaC) (इंफ्रास्ट्रक्चर एज़ कोड) सॉफ्टवेयर विकास में एक अभ्यास है जिसमें मैनुअल प्रक्रियाओं के बजाय कोड का उपयोग करके कंप्यूटर इंफ्रास्ट्रक्चर का प्रबंधन और प्रावधान करना शामिल है। यह दृष्टिकोण उन कई समस्याओं को हल करने में मदद कर सकता है जिनका सामना संगठन अपने इंफ्रास्ट्रक्चर का प्रबंधन करते समय करते हैं, जिनमें शामिल हैं:

लाभ

अंग्रेजी

  • निरंतरता (Consistency): IaC के साथ, इंफ्रास्ट्रक्चर को विभिन्न वातावरणों में लगातार तैनात किया जा सकता है, यह सुनिश्चित करते हुए कि हर बार समान कॉन्फ़िगरेशन लागू हों।
  • स्केलेबिलिटी (Scalability): IaC संगठनों को आवश्यकतानुसार नए संसाधनों के प्रावधान को स्वचालित करने की अनुमति देकर अपने इंफ्रास्ट्रक्चर को तेजी से और कुशलता से स्केल करने में मदद कर सकता है।
  • गति (Speed): इंफ्रास्ट्रक्चर परिनियोजन और प्रबंधन कार्यों को स्वचालित करके, IaC संगठनों को अपने इंफ्रास्ट्रक्चर को स्थापित करने और बनाए रखने में लगने वाले समय को कम करने में मदद कर सकता है।
  • सहयोग (Collaboration): IaC टीमों के लिए इंफ्रास्ट्रक्चर प्रबंधन कार्यों पर सहयोग करना आसान बनाता है, क्योंकि यह इंफ्रास्ट्रक्चर कोड का एक साझा, संस्करण-नियंत्रित रिपॉजिटरी प्रदान करता है जिसे कई टीम सदस्यों द्वारा एक्सेस किया जा सकता है।
  • वर्ज़निंग (Versioning): IaC के साथ, इंफ्रास्ट्रक्चर कोड को सॉफ्टवेयर कोड की तरह ही वर्ज़निंग, ट्रैक और टेस्ट किया जा सकता है। यह संगठनों को आवश्यकता पड़ने पर अपने इंफ्रास्ट्रक्चर कॉन्फ़िगरेशन के पिछले संस्करणों पर वापस जाने और यह सुनिश्चित करने में सक्षम बनाता है कि परिवर्तन ठीक से प्रलेखित और परीक्षण किए गए हैं।

कुल मिलाकर, IaC संगठनों को अपने इंफ्रास्ट्रक्चर को अधिक स्वचालित, सुसंगत और स्केलेबल तरीके से प्रबंधित करने में मदद करता है, जो उनके आईटी संचालन की दक्षता, विश्वसनीयता और चपलता में सुधार कर सकता है।

फ्रेंच

  • Cohérence (निरंतरता): IaC के साथ, इंफ्रास्ट्रक्चर को विभिन्न वातावरणों में लगातार तैनात किया जा सकता है, यह सुनिश्चित करते हुए कि हर बार समान कॉन्फ़िगरेशन लागू हों।
  • Scalabilité (स्केलेबिलिटी): IaC संगठनों को तेजी से और कुशलता से अपने इंफ्रास्ट्रक्चर को स्केल करने में मदद कर सकता है, जिससे उन्हें आवश्यकतानुसार नए संसाधनों के प्रावधान को स्वचालित करने की अनुमति मिलती है।
  • Rapidité (गति): इंफ्रास्ट्रक्चर परिनियोजन और प्रबंधन कार्यों को स्वचालित करके, IaC संगठनों को अपने इंफ्रास्ट्रक्चर को स्थापित करने और बनाए रखने में लगने वाले समय को कम करने में मदद कर सकता है।
  • Collaboration (सहयोग): IaC टीमों के लिए इंफ्रास्ट्रक्चर प्रबंधन कार्यों पर सहयोग करना आसान बनाता है, क्योंकि यह इंफ्रास्ट्रक्चर कोड का एक साझा, संस्करण-नियंत्रित रिपॉजिटरी प्रदान करता है जिसे कई टीम सदस्यों द्वारा एक्सेस किया जा सकता है।
  • Versioning (वर्ज़निंग): IaC के साथ, इंफ्रास्ट्रक्चर कोड को सॉफ्टवेयर कोड की तरह ही वर्ज़निंग, ट्रैक और टेस्ट किया जा सकता है। यह संगठनों को आवश्यकता पड़ने पर अपने इंफ्रास्ट्रक्चर कॉन्फ़िगरेशन के पिछले संस्करणों पर वापस जाने और यह सुनिश्चित करने में सक्षम बनाता है कि परिवर्तन ठीक से प्रलेखित और परीक्षण किए गए हैं।

कुल मिलाकर, IaC संगठनों को अपने इंफ्रास्ट्रक्चर को अधिक स्वचालित, सुसंगत और स्केलेबल तरीके से प्रबंधित करने में मदद करता है, जो उनके आईटी संचालन की दक्षता, विश्वसनीयता और चपलता में सुधार कर सकता है।

कोड से परिचितता

कॉन्फ़िगरेशन जैसा (JSON, YAML, HCL आदि)

कोड जैसा (Python, Go, Typescript, Javascript, CSharp आदि)

शर्तें

अंग्रेजी
  • CI: निरंतर एकीकरण (Continuous Integration)
  • CD: निरंतर वितरण (Continuous Delivery)
  • CDK: क्लाउड डेवलपमेंट किट (Cloud Development Kit)
फ्रेंच
  • CI: Intégration Continue (निरंतर एकीकरण)
  • CD: Livraison Continue (निरंतर वितरण)
  • CDK: Kit de Développement Cloud (क्लाउड डेवलपमेंट किट)

प्रस्तुतकर्ता के नोट्स: इसे क्रिया में देखें (CI के लिए Dagger.io, प्रावधान और CD के लिए Terraform CDK)

स्टेजिंग वातावरण का उपयोग करें:

  • एप्लिकेशन और इंफ्रास्ट्रक्चर के लिए परिचित मोनोरेपो दिखाएं
  • Google Cloud Build में Dagger को क्रिया में दिखाएं – CI
  • AWS और GCP में Terraform CDK को क्रिया में दिखाएं – प्रावधान और CD

स्लाइड 3: AWS Sagemaker अवलोकन

प्रस्तुतकर्ता के नोट्स: Sagemaker और Julia

  • AWS Sagemaker का संक्षिप्त अवलोकन दें
  • समझाएं कि इसका उपयोग Julia वातावरण बनाने के लिए कैसे किया जा सकता है

स्लाइड 4: AWS CDK अवलोकन

प्रस्तुतकर्ता के नोट्स: AWS CDK का अवलोकन

  • AWS क्लाउड डेवलपमेंट किट (CDK) का परिचय दें
  • चर्चा करें कि इसका उपयोग क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने के लिए कैसे किया जा सकता है

स्लाइड 5: Terraform CDK अवलोकन

प्रस्तुतकर्ता के नोट्स: CDKTF का अवलोकन

  • Terraform CDK का परिचय दें
  • समझाएं कि इसका उपयोग इंफ्रास्ट्रक्चर एज़ कोड को परिभाषित करने के लिए कैसे किया जा सकता है

स्लाइड 6: Dagger.io अवलोकन

प्रस्तुतकर्ता के नोट्स: Dagger.io का अवलोकन

  • Dagger.io का परिचय दें
  • समझाएं कि इसका उपयोग क्लाउड इंफ्रास्ट्रक्चर को स्वचालित करने के लिए कैसे किया जा सकता है

स्लाइड 7: डेमो: AWS Sagemaker में Julia वातावरण स्थापित करना

इंफ्रास्ट्रक्चर एज़ कोड का उपयोग करके AWS Sagemaker में एक कार्यशील Julia वातावरण स्थापित करने के चरणों के माध्यम से चलें दिखाएं कि एक सरल मशीन लर्निंग मॉडल को कैसे प्रशिक्षित किया जाए और इसे क्लाउड में माइक्रोसर्विस के रूप में कैसे तैनात किया जाए

अपने डेटा साइंस प्रयोगों के लिए क्लाउड वातावरण स्थापित करना

इंफ्रास्ट्रक्चर एज़ कोड

Pyenv और Poetry के साथ पायथन निर्भरताएँ

आइए अपने सिस्टम पर Pyenv स्थापित करके शुरू करें। फिर आइए हमारे डेटा और क्लाउड प्रोजेक्ट के लिए Poetry द्वारा प्रबंधित एक वर्चुअल वातावरण स्थापित करने के लिए पायथन का एक हालिया संस्करण चुनें।

#!/bin/bash
set -x #echo on

PYTHON_VERSION=3.11.1

echo "Setting up Python v$PYTHON_VERSION"

echo $PYTHON_VERSION > .python-version
pyenv install $PYTHON_VERSION
pyenv global $PYTHON_VERSION
pyenv local $PYTHON_VERSION
pyenv shell $PYTHON_VERSION

echo "Poetry installation and Virtual Environment creation"

pyenv exec pip install poetry
pyenv exec poetry init
pyenv exec poetry install
pyenv exec poetry shell

echo "Python depedencies installation into to the Virtual Environment"

pyenv exec poetry add black --group dev # Add Dev dependencies

echo "Virtual Environment visual check"

pyenv exec poetry show -v
pyenv exec poetry env info -p

आइए NodeJs के एक हालिया संस्करण और AWS CDK टूलकिट CLI इंस्टॉलेशन की स्थापना के साथ आगे बढ़ें, जो आपकी मशीन पर Nodejs पर निर्भर है।

node -v
npm install -g aws-cdk
v18.14.0
added 2 packages in 1s

अब आइए एक इंफ्रा फ़ोल्डर बनाएं जिससे हम एक AWS CDK प्रोजेक्ट को बूटस्ट्रैप करेंगे

#!/bin/bash
set -x #echo on

echo "Bootstrap AWS CDK Python application"

mkdir `pwd`/infra && cd `pwd`/infra && cdk init app --language python

अब आइए उन निर्भरताओं को जोड़ें जो हमारे प्रोजेक्ट इंफ्रा में पाए जाने वाले हमारे AWS CDK प्रोजेक्ट के अंदर निर्दिष्ट हैं, उस Poetry वर्चुअल वातावरण में जिसे हमने पहले बनाया था।

#!/bin/bash
set -x #echo on

echo "Install dependencies from infra/requirements.txt"

cat `pwd`/infra/requirements.txt | xargs pyenv exec poetry add

echo "Install dev dependencies from infra/requirements-dev.txt"

cat `pwd`/infra/requirements-dev.txt | xargs pyenv exec poetry add --group dev

Sagemaker वातावरण प्रावधान

Amazon Sagemaker AWS पेशकशों का हिस्सा एक उत्पाद या सेवा है जो पूरी तरह से प्रबंधित इंफ्रास्ट्रक्चर, टूल और वर्कफ़्लो के साथ किसी भी उपयोग के मामले के लिए मशीन लर्निंग (ML) मॉडल बनाने, प्रशिक्षित करने और तैनात करने में मदद करती है। Sagemaker साइंस वातावरण स्वयं Conda पर निर्भर करता है जो FORTRAN, C/C++, Python, R आदि जैसी विभिन्न भाषाओं के लिए एक पैकेज, निर्भरता और वातावरण प्रबंधन है। हमारे डेटा और क्लाउड कार्यशाला के उद्देश्य के लिए, हम Julia में रुचि रखते हैं। ध्यान दें कि Jupyter Julia, Python और R के लिए एक ढीला संक्षिप्त नाम है।

आइए AWS CDK वातावरण को बूटस्ट्रैप करके शुरू करें:

#!/bin/bash
set -x #echo on

cd `pwd`/infra && cdk bootstrap
from pathlib import Path

from aws_cdk import (
    Fn as fn,
    Stack,
    aws_iam as iam,
    aws_sagemaker as sagemaker,
)
from constructs import Construct

def read_text(file_path: str, encoding="utf-8"):
  text = ""
  if file_path is not None:
    text = Path(file_path).read_text(encoding=encoding)
  return text

class InfraStack(Stack):

    def __init__(
            self, scope: Construct, construct_id: str,
            on_create_script_path=None, on_start_script_path=None, **kwargs,
    ) -> None:

        super().__init__(scope, construct_id, **kwargs)

        # The code that defines your stack goes here

        onCreateScript = read_text(on_create_script_path)

        onStartScript = read_text(on_start_script_path)

        role = iam.Role(self, "DataAndCloudScienceRole", **dict(
            assumed_by=iam.ServicePrincipal("sagemaker.amazonaws.com"),
            managed_policies=[
                iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSageMakerFullAccess"),
            ],
        ))

        lifecycle_config = sagemaker.CfnNotebookInstanceLifecycleConfig(
            self, "DataAndCloudScienceLifecycleConfig", **dict(
                notebook_instance_lifecycle_config_name="DataAndCloudScienceLifecycleConfig",
                on_create=[
                    dict(
                        content_type="text/x-shellscript",
                        content=fn.base64(onCreateScript),
                    ),
                ],
                on_start=[
                    dict(
                        content_type="text/x-shellscript",
                        content=fn.base64(onStartScript),
                    ),
                ],
            )
        )

        fastai_fastbook_repository = "FastAIFastBookRepository"

        sagemaker.CfnCodeRepository(
            self, "DataAndCloudFastAICodeRepository",
            code_repository_name=fastai_fastbook_repository,
            git_config=sagemaker.CfnCodeRepository.GitConfigProperty(
                branch="master",
                repository_url="https://github.com/fastai/fastbook.git",
            ),
        )

        julia_academy_datascience_repository = "JuliaAcademyDataScienceRepository"

        sagemaker.CfnCodeRepository(
            self, "DataAndCloudScienceCodeRepository",
            code_repository_name=julia_academy_datascience_repository,
            git_config=sagemaker.CfnCodeRepository.GitConfigProperty(
                branch="main",
                repository_url="https://github.com/JuliaAcademy/DataScience.git",
            ),
        )

        fluxml_fastaijl_repository = "FluxMLFastAIjlRepository"

        sagemaker.CfnCodeRepository(
          self, "DataAndCloudFluxMLFastAICodeRepository",
          code_repository_name=fluxml_fastaijl_repository,
          git_config=sagemaker.CfnCodeRepository.GitConfigProperty(
              branch="master",
              repository_url="https://github.com/FluxML/FastAI.jl.git",
          ),
        )

        sagemaker.CfnNotebookInstance(
            self, "DataAndCloudScienceNotebookCPU", **dict(
                lifecycle_config_name=lifecycle_config.notebook_instance_lifecycle_config_name,
                role_arn=role.role_arn,
                instance_type="ml.c5.xlarge", # "ml.p2.xlarge", # "ml.c5.2xlarge",
                additional_code_repositories=[
                  fastai_fastbook_repository,
                  julia_academy_datascience_repository,
                  fluxml_fastaijl_repository,
                ],
            ),
        )

        # sagemaker.CfnNotebookInstance(
        #     self, "DataAndCloudScienceNotebookGPU", **dict(
        #         lifecycle_config_name=lifecycle_config.notebook_instance_lifecycle_config_name,
        #         role_arn=role.role_arn,
        #         instance_type="ml.p2.xlarge",  # "ml.c5.xlarge", # "ml.c5.2xlarge",
        #         additional_code_repositories=[julia_academy_datascience_repository],
        #     ),
        # )
#!/usr/bin/env python3
import os

import aws_cdk as cdk

from infra.infra_stack import InfraStack

project_path = os.path.dirname(os.path.realpath(__file__))
scripts_path = f"{project_path}/../scripts"
app = cdk.App()
InfraStack(app, "InfraStack",
    # If you don't specify 'env', this stack will be environment-agnostic.
    # Account/Region-dependent features and context lookups will not work,
    # but a single synthesized template can be deployed anywhere.

    # Uncomment the next line to specialize this stack for the AWS Account
    # and Region that are implied by the current CLI configuration.

    #env=cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')),

    # Uncomment the next line if you know exactly what Account and Region you
    # want to deploy the stack to. */

    #env=cdk.Environment(account='123456789012', region='us-east-1'),

    # For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html

    # Science Environment Lifecycle Scripts
    ,**dict(
      on_create_script_path=f"{scripts_path}/aws/onCreate.sh",
      on_start_script_path=f"{scripts_path}/aws/onStart.sh",
    ),
)

app.synth()

अब आइए Amazon Sagemaker साइंस वातावरण का प्रावधान करें:

#!/bin/bash
set -x #echo on

cd `pwd`/infra && cdk deploy

हम निम्नलिखित निष्पादित करके Sagemaker साइंस वातावरण को समाप्त कर सकते हैं:

#!/bin/bash
set -x #echo on

cd `pwd`/infra && cdk destroy

Sagemaker वातावरण अनुकूलन

Julia इंस्टॉलेशन स्क्रिप्ट

आइए निम्नलिखित स्क्रिप्ट का उपयोग करके अपने Sagemaker साइंस वातावरण में Julia जोड़ें:

#!/bin/bash
set -x #echo on

JULIA_RELEASE=1.8
JULIA_VERSION=1.8.5
JULIA_DOWNLOAD_URL=https://julialang-s3.julialang.org/bin/linux/x64/$JULIA_RELEASE/julia-$JULIA_VERSION-linux-x86_64.tar.gz
JULIA_INSTALL_DIR=~/SageMaker/envs/julia
JULIA_DEPOT_PATH=$JULIA_INSTALL_DIR/depot

conda create --yes --prefix $JULIA_INSTALL_DIR

wget -c $JULIA_DOWNLOAD_URL -O - | tar -xz

cp -R julia-$JULIA_VERSION/* $JULIA_INSTALL_DIR

mkdir -p $JULIA_INSTALL_DIR/etc/conda/activate.d

echo 'export JULIA_DEPOT_PATH=$JULIA_DEPOT_PATH' >> $JULIA_INSTALL_DIR/etc/conda/activate.d/env.sh
echo -e 'empty!(DEPOT_PATH)\npush!(DEPOT_PATH,raw"/home/ec2-user/SageMaker/envs/julia/depot")' >> /home/ec2-user/SageMaker/envs/julia/etc/julia/startup.jl

conda run --prefix $JULIA_INSTALL_DIR/ julia --eval 'using Pkg; Pkg.add("IJulia"); using IJulia; IJulia.installkernel("Julia")'

rm -rf julia-$JULIA_VERSION

हम अपने Sagemaker साइंस वातावरण के प्रावधान के दौरान विभिन्न जीवनचक्र घटनाओं के घटित होने पर स्क्रिप्ट निष्पादित कर सकते हैं।

On-Create जीवनचक्र घटना स्क्रिप्ट
#!/bin/bash
set -x #echo on

set -e
On-Start जीवनचक्र घटना स्क्रिप्ट
#!/bin/bash
set -x #echo on

set -e

आइए अपने Sagemaker साइंस वातावरण के निर्माण चरण के दौरान अपनी Julia v1.8.5 इंस्टॉलेशन स्क्रिप्ट लागू करें।

sudo -u ec2-user -i <<'EOF'

JULIA_RELEASE=1.8
JULIA_VERSION=1.8.5
JULIA_DOWNLOAD_URL=https://julialang-s3.julialang.org/bin/linux/x64/$JULIA_RELEASE/julia-$JULIA_VERSION-linux-x86_64.tar.gz
JULIA_INSTALL_DIR=/home/ec2-user/SageMaker/envs/julia
JULIA_DEPOT_PATH=$JULIA_INSTALL_DIR/depot

conda create --yes --prefix $JULIA_INSTALL_DIR

wget -c $JULIA_DOWNLOAD_URL -O - | tar -xz

cp -R julia-$JULIA_VERSION/* $JULIA_INSTALL_DIR

mkdir -p $JULIA_INSTALL_DIR/etc/conda/activate.d

echo 'export JULIA_DEPOT_PATH=$JULIA_DEPOT_PATH' >> $JULIA_INSTALL_DIR/etc/conda/activate.d/env.sh
echo -e 'empty!(DEPOT_PATH)\npush!(DEPOT_PATH,raw"/home/ec2-user/SageMaker/envs/julia/depot")' >> /home/ec2-user/SageMaker/envs/julia/etc/julia/startup.jl

conda run --prefix $JULIA_INSTALL_DIR/ julia --eval 'using Pkg; Pkg.add("IJulia"); using IJulia; IJulia.installkernel("Julia")'

rm -rf julia-$JULIA_VERSION

EOF

नोट्स:

  1. Pyenv शेल रीसेट करें: pyenv shell system
  2. Poetry लॉक फ़ाइल सिंक्रोनाइज़ करें: pyenv exec poetry update package

स्लाइड 8: निष्कर्ष

प्रस्तुति के मुख्य बिंदुओं को दोहराएं उपस्थित लोगों को अपने क्लाउड परिनियोजन के लिए इंफ्रास्ट्रक्चर एज़ कोड का उपयोग शुरू करने के लिए प्रोत्साहित करें

परिशिष्ट

अंतिम कोड सारांश

शुरू करने से पहले, मैं ट्यूटोरियल में उपयोग की जाने वाली कुछ प्रमुख शर्तों और अवधारणाओं को स्पष्ट करना चाहता हूं:

  • AWS CDK: AWS क्लाउड डेवलपमेंट किट एक ओपन-सोर्स सॉफ्टवेयर विकास ढांचा है जो डेवलपर्स को पायथन, टाइपस्क्रिप्ट और जावा जैसी परिचित प्रोग्रामिंग भाषाओं का उपयोग करके क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने में सक्षम बनाता है। AWS CDK के साथ, आप अपने क्लाउड संसाधनों को कोड के रूप में परिभाषित कर सकते हैं और क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने के लिए अपनी पसंदीदा प्रोग्रामिंग भाषा का उपयोग कर सकते हैं।
  • AWS SageMaker: Amazon SageMaker एक पूरी तरह से प्रबंधित सेवा है जो डेवलपर्स और डेटा वैज्ञानिकों को क्लाउड में मशीन लर्निंग मॉडल बनाने, प्रशिक्षित करने और तैनात करने की क्षमता प्रदान करती है। SageMaker डेवलपर्स को जल्दी से मशीन लर्निंग मॉडल बनाने और तैनात करने में मदद करने के लिए पूर्व-निर्मित मशीन लर्निंग एल्गोरिदम, नोटबुक और अन्य टूल प्रदान करता है।
  • शेल स्क्रिप्ट: एक शेल स्क्रिप्ट एक कंप्यूटर प्रोग्राम है जिसे यूनिक्स शेल, एक कमांड-लाइन इंटरप्रेटर द्वारा चलाने के लिए डिज़ाइन किया गया है। शेल स्क्रिप्ट का उपयोग कार्यों को स्वचालित करने के लिए किया जाता है, जैसे कि वातावरण स्थापित करना, सॉफ्टवेयर पैकेज स्थापित करना और कमांड चलाना।

अब आइए कोड ट्यूटोरियल में गोता लगाएँ!

चरण 1:

AWS CDK का उपयोग करके AWS SageMaker में डेटा साइंस वातावरण का प्रावधान करना

प्रारंभिक प्रोजेक्ट AWS SageMaker में डेटा साइंस वातावरण का प्रावधान करने के लिए AWS CDK पायथन API का उपयोग करता है। इसके लिए कोड infra\(\_\)stack.py फ़ाइल में स्थित है।

चरण 2:

Sagemaker Conda वातावरण में Julia कर्नेल का कस्टम इंस्टॉलेशन

SageMaker Conda वातावरण में Julia कर्नेल स्थापित करने के लिए, दो शेल स्क्रिप्ट का उपयोग किया जाता है: onCreate.sh और onStart.sh*। ये स्क्रिप्ट *scripts/aws निर्देशिका में स्थित हैं।

  • onCreate.sh: यह स्क्रिप्ट तब निष्पादित होती है जब एक SageMaker नोटबुक इंस्टेंस बनाया जाता है। यह Julia कर्नेल इंस्टॉलेशन के लिए वातावरण स्थापित करता है।
  • onStart.sh: यह स्क्रिप्ट तब निष्पादित होती है जब एक SageMaker नोटबुक इंस्टेंस शुरू किया जाता है। यह SageMaker Conda वातावरण में Julia कर्नेल स्थापित करता है।

चरण 3:

SageMaker Conda वातावरण में Julia कर्नेल स्थापित करना

SageMaker Conda वातावरण में Julia कर्नेल स्थापित करने के लिए, onStart.sh स्क्रिप्ट का उपयोग किया जाता है। यहाँ वे चरण दिए गए हैं जो स्क्रिप्ट लेती है:

चर सेट करें: स्क्रिप्ट Julia रिलीज़ संस्करण, Julia संस्करण, डाउनलोड URL, इंस्टॉलेशन निर्देशिका और डिपो पथ के लिए चर सेट करती है। Conda वातावरण बनाएं: स्क्रिप्ट Julia इंस्टॉलेशन के लिए एक Conda वातावरण बनाती है। Julia डाउनलोड और निकालें: स्क्रिप्ट Julia डाउनलोड साइट से Julia टारबॉल डाउनलोड करती है और इसे इंस्टॉलेशन निर्देशिका में निकालती है। Julia वातावरण चर सेट करें: स्क्रिप्ट Julia डिपो पथ के लिए वातावरण चर सेट करती है और उन्हें env.sh फ़ाइल में जोड़ती है। IJulia स्थापित करें: स्क्रिप्ट IJulia स्थापित करती है, एक पैकेज जो Jupyter नोटबुक के लिए एक Julia कर्नेल प्रदान करता है, और इसे कर्नेल सूची में जोड़ता है। साफ़ करें: स्क्रिप्ट डाउनलोड की गई Julia टारबॉल को हटा देती है।

चरण 4:

AWS CDK और प्रोजेक्ट निर्भरताएँ स्थापित करना

AWS CDK और प्रोजेक्ट निर्भरताएँ स्थापित करने के लिए, आपको एक requirements.txt फ़ाइल बनाने की आवश्यकता है जो प्रोजेक्ट के लिए आवश्यक निर्भरताओं को सूचीबद्ध करती है। इस प्रोजेक्ट में, requirements.txt फ़ाइल में निम्नलिखित निर्भरताएँ शामिल हैं:

  • aws-cdk-lib==2.70.0: AWS CDK लाइब्रेरी संस्करण *2.70.0*।
  • constructs>=10.0.0,<11.0.0: कंस्ट्रक्ट्स लाइब्रेरी संस्करण *10.x*।

चरण 5:

infra\(\_\)stack.py में, sagemaker.CfnNotebookInstanceLifecycleConfig क्लास का उपयोग करके एक SageMaker नोटबुक इंस्टेंस जीवनचक्र कॉन्फ़िगरेशन बनाया जाता है। यह कॉन्फ़िगरेशन उन स्क्रिप्ट को निर्दिष्ट करता है जिन्हें नोटबुक इंस्टेंस बनाए जाने या शुरू किए जाने पर चलाया जाना है।

चरण 6:

fastai\(\_\)fastbook\(\_\)repository और julia\(\_\)academy\(\_\)datascience\(\_\)repository रिपॉजिटरी sagemaker.CfnCodeRepository क्लास का उपयोग करके बनाई गई हैं। इन रिपॉजिटरी में वह कोड होता है जिसका उपयोग नोटबुक इंस्टेंस द्वारा किया जाएगा।

चरण 7:

fluxml\(\_\)fastaijl\(\_\)repository रिपॉजिटरी sagemaker.CfnGitHubLocation क्लास का उपयोग करके बनाई गई है। इस रिपॉजिटरी में Julia कोड होता है जिसका उपयोग नोटबुक इंस्टेंस द्वारा किया जाएगा।

चरण 8:

अंत में, InfraStack क्लास को app.py में इंस्टेंट किया जाता है, on\(\_\)create\(\_\)script\(\_\)path और on\(\_\)start\(\_\)script\(\_\)path तर्कों को पास करते हुए, क्रमशः onCreate.sh और onStart.sh स्क्रिप्ट के पथ निर्दिष्ट करने के लिए।

चरण 9:

स्टैक के लिए CloudFormation टेम्प्लेट को संश्लेषित करने के लिए app.synth() विधि को कॉल किया जाता है, जिसे बाद में AWS पर तैनात किया जा सकता है।

यह इस कोड के लिए दस्तावेज़ीकरण का अंत है। ध्यान रखें कि यह प्रोजेक्ट AWS Sagemaker में डेटा साइंस वातावरण का प्रावधान करने के लिए AWS CDK पायथन API का उपयोग करता है, और onCreate.sh और onStart.sh शेल स्क्रिप्ट का उपयोग Sagemaker Conda वातावरण में एक कस्टम Julia कर्नेल स्थापित करने के लिए किया जाता है।

Résumé du Code Final (अंतिम कोड सारांश)

शुरू करने से पहले, मैं ट्यूटोरियल में उपयोग की जाने वाली कुछ प्रमुख शर्तों और अवधारणाओं को स्पष्ट करना चाहता हूं:

  • AWS CDK: AWS क्लाउड डेवलपमेंट किट एक ओपन-सोर्स सॉफ्टवेयर विकास ढांचा है जो डेवलपर्स को पायथन, टाइपस्क्रिप्ट और जावा जैसी परिचित प्रोग्रामिंग भाषाओं का उपयोग करके क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने में सक्षम बनाता है। AWS CDK के साथ, आप अपने क्लाउड संसाधनों को कोड के रूप में परिभाषित कर सकते हैं और क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने के लिए अपनी पसंदीदा प्रोग्रामिंग भाषा का उपयोग कर सकते हैं।
  • AWS SageMaker: Amazon SageMaker एक पूरी तरह से प्रबंधित सेवा है जो डेवलपर्स और डेटा वैज्ञानिकों को क्लाउड में मशीन लर्निंग मॉडल बनाने, प्रशिक्षित करने और तैनात करने की क्षमता प्रदान करती है। SageMaker डेवलपर्स को जल्दी से मशीन लर्निंग मॉडल बनाने और तैनात करने में मदद करने के लिए पूर्व-निर्मित मशीन लर्निंग एल्गोरिदम, नोटबुक और अन्य टूल प्रदान करता है।
  • Script Shell (शेल स्क्रिप्ट): एक शेल स्क्रिप्ट एक कंप्यूटर प्रोग्राम है जिसे यूनिक्स शेल, एक कमांड-लाइन इंटरप्रेटर द्वारा चलाने के लिए डिज़ाइन किया गया है। शेल स्क्रिप्ट का उपयोग कार्यों को स्वचालित करने के लिए किया जाता है, जैसे कि वातावरण स्थापित करना, सॉफ्टवेयर पैकेज स्थापित करना और कमांड चलाना।

अब आइए कोड ट्यूटोरियल में गोता लगाएँ!

Étape 1 (चरण 1):

Provisionnement d'environnements de science des données dans AWS SageMaker à l'aide d'AWS CDK (AWS CDK का उपयोग करके AWS SageMaker में डेटा साइंस वातावरण का प्रावधान)

Le projet initial utilise l'API AWS CDK Python pour provisionner des environnements de science des données dans AWS SageMaker. Le code pour cela se trouve dans le fichier infra\(\_\)stack.py.

Étape 2 (चरण 2): Installation personnalisée d'un noyau Julia dans l'environnement Sagemaker Conda (Sagemaker Conda वातावरण में Julia कर्नेल का कस्टम इंस्टॉलेशन)

Pour installer un noyau Julia dans l'environnement SageMaker Conda, deux scripts shell sont utilisés: onCreate.sh et onStart.sh. Ces scripts se trouvent dans le répertoire scripts/aws.

  • onCreate.sh: ce script est exécuté lorsqu'une instance de notebook SageMaker est créée. Il configure l'environnement pour l'installation du noyau Julia.
  • onStart.sh: ce script est exécuté lorsqu'une instance de notebook SageMaker est démarrée. Il installe le noyau Julia dans l'environnement SageMaker Conda.

Étape 3 (चरण 3): Installation du noyau Julia dans l'environnement Conda de SageMaker (SageMaker Conda वातावरण में Julia कर्नेल स्थापित करना)

Pour installer le noyau Julia dans l'environnement Conda de SageMaker, le script onStart.sh est utilisé. Voici les étapes que le script prend :

Configurer les variables (चर कॉन्फ़िगर करें) : Le script configure les variables pour la version de sortie de Julia, la version de Julia, l'URL de téléchargement, le répertoire d'installation et le chemin du dépôt. Créer l'environnement Conda (Conda वातावरण बनाएं) : Le script crée un environnement Conda pour l'installation de Julia. Télécharger et extraire Julia (Julia डाउनलोड और निकालें) : Le script télécharge le tarball de Julia à partir du site de téléchargement de Julia et l'extrait dans le répertoire d'installation. Configurer les variables d'environnement de Julia (Julia वातावरण चर कॉन्फ़िगर करें) : Le script configure les variables d'environnement pour le chemin du dépôt Julia et les ajoute au fichier env.sh. Installer IJulia (IJulia स्थापित करें) : Le script installe IJulia, un package qui fournit un noyau Julia pour les notebooks Jupyter, et l'ajoute à la liste des noyaux. Nettoyer (साफ़ करें) : Le script supprime le tarball Julia téléchargé.

Étape 4 (चरण 4):

Configuration d'AWS CDK et des dépendances du projet (AWS CDK और प्रोजेक्ट निर्भरताएँ स्थापित करना)

Pour configurer AWS CDK et les dépendances du projet, vous devez créer un fichier requirements.txt qui répertorie les dépendances requises pour le projet. Dans ce projet, le fichier requirements.txt inclut les dépendances suivantes :

  • aws-cdk-lib==2.70.0: version 2.70.0 de la bibliothèque AWS CDK.
  • constructs>=10.0.0,<11.0.0: version 10.x de la bibliothèque Constructs.

Étape 5 (चरण 5):

Dans infra\(\_\)stack.py, une configuration du cycle de vie de l'instance de notebook SageMaker est créée à l'aide de la classe sagemaker.CfnNotebookInstanceLifecycleConfig. Cette configuration spécifie les scripts à exécuter lorsqu'une instance de notebook est créée ou démarrée.

Étape 6 (चरण 6):

Les référentiels fastai\(\_\)fastbook\(\_\)repository et julia\(\_\)academy\(\_\)datascience\(\_\)repository sont créés à l'aide de la classe sagemaker.CfnCodeRepository. Ces référentiels contiennent le code qui sera utilisé par l'instance de notebook.

Étape 7 (चरण 7):

Le référentiel fluxml\(\_\)fastaijl\(\_\)repository est créé à l'aide de la classe sagemaker.CfnGitHubLocation. Ce référentiel contient le code Julia qui sera utilisé par l'instance de notebook.

Étape 8 (चरण 8):

Enfin, la classe InfraStack est instanciée dans app.py, en passant les arguments on\(\_\)create\(\_\)script\(\_\)path et on\(\_\)start\(\_\)script\(\_\)path pour spécifier les chemins des scripts onCreate.sh et onStart.sh, respectivement.

Étape 9 (चरण 9):

La méthode app.synth() est appelée pour synthétiser le modèle CloudFormation pour la pile, qui peut ensuite être déployée sur AWS.

C'est la fin de la documentation pour ce code. Gardez à l'esprit que ce projet utilise l'API AWS CDK Python pour provisionner des environnements de science des données dans AWS Sagemaker, et que les scripts shell onCreate.sh et onStart.sh sont utilisés pour installer un noyau Julia personnalisé dans l'environnement Conda de Sagemaker.