From ec36680b992cce15c1b9c319b9bffda91beb7b57 Mon Sep 17 00:00:00 2001 From: Richard Ogundele <63150179+richardogundele@users.noreply.github.com> Date: Mon, 15 Sep 2025 10:43:40 +0100 Subject: [PATCH 1/2] added ML-For-Beginners and contribution_plan.md and contribution_tracker.md --- ML-For-Beginners | 1 + README.md | 2 +- contribution_plan.md | 379 ++++++++++++++++++++++++++++++++++++++++ contribution_tracker.md | 211 ++++++++++++++++++++++ 4 files changed, 592 insertions(+), 1 deletion(-) create mode 160000 ML-For-Beginners create mode 100644 contribution_plan.md create mode 100644 contribution_tracker.md diff --git a/ML-For-Beginners b/ML-For-Beginners new file mode 160000 index 0000000..f925c9a --- /dev/null +++ b/ML-For-Beginners @@ -0,0 +1 @@ +Subproject commit f925c9afbba72b73690ec3bce07377e70b9b0383 diff --git a/README.md b/README.md index 1749821..c9947b7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AI Introduction + # AI Introduction Artificial intelligence (AI) is intelligence demonstrated by machines, as opposed to intelligence of humans and other animals. Example tasks in which this is done include speech recognition, computer vision, translation between (natural) languages, as well as other mappings of inputs. AI applications include advanced web search engines (e.g., Google Search), recommendation systems (used by YouTube, Amazon, and Netflix), understanding human speech (such as Siri and Alexa), self-driving cars (e.g., Waymo), generative or creative tools (ChatGPT and AI art), automated decision-making, and competing at the highest level in strategic game systems (such as chess and Go). diff --git a/contribution_plan.md b/contribution_plan.md new file mode 100644 index 0000000..f894039 --- /dev/null +++ b/contribution_plan.md @@ -0,0 +1,379 @@ +# 🚀 AI/ML Open Source Contribution Plan + +## 🎯 Target Projects & High-Impact Opportunities + +Based on your Python, AI/ML, and Cloud Infrastructure background, here are the **TOP 3 RECOMMENDED CONTRIBUTIONS**: + +--- + +## 🥇 **PRIORITY 1: Microsoft ML-For-Beginners** +**Repository**: https://github.com/microsoft/ML-For-Beginners +**Focus**: Educational ML content & Python examples + +### 🔥 **High-Impact Issue #1: Documentation Enhancement** +**Issue**: [Add comprehensive documentation](https://github.com/microsoft/ML-For-Beginners/issues/835) + +#### **Problem Explanation** +The ML-For-Beginners repository lacks comprehensive documentation, making it difficult for new contributors and learners to: +- Understand the project structure +- Set up development environment +- Navigate between lessons +- Contribute effectively + +#### **Suggested Solution** +Create a comprehensive documentation framework with: + +```python +# Documentation Structure +docs/ +├── README.md # Main documentation +├── getting-started/ +│ ├── installation.md # Setup instructions +│ ├── environment.md # Development environment +│ └── first-contribution.md # How to contribute +├── lessons/ +│ ├── lesson-guide.md # How lessons are structured +│ └── example-walkthrough.md # Sample lesson breakdown +├── api/ +│ ├── code-reference.md # Code documentation +│ └── utilities.md # Helper functions +└── contributing/ + ├── guidelines.md # Contribution guidelines + ├── code-style.md # Coding standards + └── review-process.md # PR review process +``` + +#### **Implementation Plan** +1. **Audit existing content** - catalog all lessons and code +2. **Create documentation framework** - structured markdown files +3. **Add interactive examples** - code snippets with explanations +4. **Include setup guides** - environment configuration +5. **Write contributor guide** - detailed contribution process + +--- + +### 🔥 **High-Impact Issue #2: Confusion Matrix Fix** +**Issue**: [Wrong False Negative Definition](https://github.com/microsoft/ML-For-Beginners/issues/825) + +#### **Problem Explanation** +The current definition of "False Negative" in the Confusion Matrix lesson is incorrect: +- **Current (Wrong)**: False Negative = Model predicts positive when actual is negative +- **Correct**: False Negative = Model predicts negative when actual is positive + +This error can mislead beginners learning fundamental ML concepts. + +#### **Suggested Solution** +```python +# Correct Confusion Matrix Implementation +import numpy as np +import matplotlib.pyplot as plt +from sklearn.metrics import confusion_matrix, classification_report + +def create_confusion_matrix_tutorial(): + """ + Comprehensive confusion matrix tutorial with correct definitions + """ + + # Example predictions vs actual + y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] + y_pred = [1, 0, 0, 1, 0, 1, 1, 0, 1, 0] + + # Create confusion matrix + cm = confusion_matrix(y_true, y_pred) + + # CORRECT DEFINITIONS: + tn, fp, fn, tp = cm.ravel() + + print("📊 Confusion Matrix Breakdown:") + print(f"True Positives (TP): {tp}") + print(f"True Negatives (TN): {tn}") + print(f"False Positives (FP): {fp} - Model predicted POSITIVE when actual was NEGATIVE") + print(f"False Negatives (FN): {fn} - Model predicted NEGATIVE when actual was POSITIVE") + + # Calculate metrics + accuracy = (tp + tn) / (tp + tn + fp + fn) + precision = tp / (tp + fp) + recall = tp / (tp + fn) + + return cm, accuracy, precision, recall + +# Add interactive visualization +def plot_confusion_matrix_with_explanations(cm): + """Visual confusion matrix with detailed explanations""" + fig, ax = plt.subplots(figsize=(10, 8)) + im = ax.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues) + ax.figure.colorbar(im, ax=ax) + + # Add labels and explanations + classes = ['Negative', 'Positive'] + ax.set(xticks=np.arange(cm.shape[1]), + yticks=np.arange(cm.shape[0]), + xticklabels=classes, yticklabels=classes, + title='Confusion Matrix with Correct Definitions', + ylabel='True Label', + xlabel='Predicted Label') + + # Add text annotations + thresh = cm.max() / 2. + for i in range(cm.shape[0]): + for j in range(cm.shape[1]): + ax.text(j, i, format(cm[i, j], 'd'), + ha="center", va="center", + color="white" if cm[i, j] > thresh else "black") + + plt.tight_layout() + return fig +``` + +--- + +## 🥈 **PRIORITY 2: Microsoft Recommenders** +**Repository**: https://github.com/microsoft/recommenders +**Focus**: Advanced recommendation systems + +### 🔥 **High-Impact Issue: Deep Learning Model Implementation** +**Potential Contribution**: Implement transformer-based recommender system + +#### **Problem Explanation** +Current recommender systems in the repo focus on traditional collaborative filtering and matrix factorization. There's growing demand for: +- Transformer-based recommendation models +- Sequential recommendation systems +- Multi-modal recommendation approaches + +#### **Suggested Solution** +```python +# Transformer-Based Recommender Implementation +import torch +import torch.nn as nn +from torch.nn import Transformer +import pandas as pd +import numpy as np + +class TransformerRecommender(nn.Module): + """ + Transformer-based recommendation system for sequential user behavior + """ + + def __init__(self, vocab_size, d_model=512, nhead=8, num_layers=6, max_seq_len=100): + super().__init__() + self.d_model = d_model + self.embedding = nn.Embedding(vocab_size, d_model) + self.pos_encoding = PositionalEncoding(d_model, max_seq_len) + self.transformer = Transformer( + d_model=d_model, + nhead=nhead, + num_encoder_layers=num_layers, + num_decoder_layers=num_layers, + batch_first=True + ) + self.output_layer = nn.Linear(d_model, vocab_size) + + def forward(self, src, tgt): + # Embed and add positional encoding + src_emb = self.pos_encoding(self.embedding(src)) + tgt_emb = self.pos_encoding(self.embedding(tgt)) + + # Transformer forward pass + output = self.transformer(src_emb, tgt_emb) + + # Output projection + return self.output_layer(output) + +class PositionalEncoding(nn.Module): + """Positional encoding for transformer""" + + def __init__(self, d_model, max_len=5000): + super().__init__() + pe = torch.zeros(max_len, d_model) + position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) + div_term = torch.exp(torch.arange(0, d_model, 2).float() * + (-np.log(10000.0) / d_model)) + pe[:, 0::2] = torch.sin(position * div_term) + pe[:, 1::2] = torch.cos(position * div_term) + self.register_buffer('pe', pe.unsqueeze(0)) + + def forward(self, x): + return x + self.pe[:, :x.size(1)] + +# Example usage and training loop +def train_transformer_recommender(): + """Complete training pipeline for transformer recommender""" + + # Initialize model + model = TransformerRecommender(vocab_size=10000) + optimizer = torch.optim.Adam(model.parameters(), lr=0.001) + criterion = nn.CrossEntropyLoss() + + # Training loop implementation + for epoch in range(100): + # Load batch data + # Forward pass + # Calculate loss + # Backward pass + # Update weights + pass + + return model +``` + +--- + +## 🥉 **PRIORITY 3: Azure Machine Learning Notebooks** +**Repository**: https://github.com/Azure/MachineLearningNotebooks +**Focus**: Cloud ML integration + +### 🔥 **High-Impact Issue: MLOps Pipeline Examples** +**Potential Contribution**: End-to-end MLOps pipeline with Azure ML + +#### **Problem Explanation** +Many developers struggle with implementing complete MLOps workflows that include: +- Automated model training +- Model versioning and registry +- Continuous deployment +- Monitoring and retraining + +#### **Suggested Solution** +```python +# Complete MLOps Pipeline Implementation +from azureml.core import Workspace, Environment, ScriptRunConfig +from azureml.core.model import Model +from azureml.pipeline.core import Pipeline, PipelineData +from azureml.pipeline.steps import PythonScriptStep +from azureml.core.compute import ComputeTarget, AmlCompute + +class MLOpsPipeline: + """ + Complete MLOps pipeline for Azure ML + """ + + def __init__(self, workspace, compute_target): + self.ws = workspace + self.compute_target = compute_target + self.env = self._create_environment() + + def _create_environment(self): + """Create ML environment with dependencies""" + env = Environment.from_conda_specification( + name="mlops-env", + file_path="environment.yml" + ) + return env + + def create_training_pipeline(self): + """Create automated training pipeline""" + + # Data preparation step + data_prep_step = PythonScriptStep( + script_name="data_preparation.py", + compute_target=self.compute_target, + environment=self.env, + allow_reuse=False + ) + + # Model training step + training_step = PythonScriptStep( + script_name="train_model.py", + compute_target=self.compute_target, + environment=self.env, + inputs=[data_prep_step.outputs['processed_data']], + allow_reuse=False + ) + + # Model evaluation step + evaluation_step = PythonScriptStep( + script_name="evaluate_model.py", + compute_target=self.compute_target, + environment=self.env, + inputs=[training_step.outputs['trained_model']], + allow_reuse=False + ) + + # Create pipeline + pipeline = Pipeline( + workspace=self.ws, + steps=[data_prep_step, training_step, evaluation_step] + ) + + return pipeline + + def deploy_model(self, model_name): + """Deploy model with monitoring""" + + # Register model + model = Model.register( + workspace=self.ws, + model_name=model_name, + model_path="outputs/model.pkl" + ) + + # Create deployment configuration + # Deploy to AKS or ACI + # Set up monitoring + + return model + +# Example notebook implementation +def create_mlops_notebook(): + """Create comprehensive MLOps notebook""" + + notebook_content = """ + # Complete MLOps Pipeline with Azure ML + + ## 1. Setup and Configuration + ## 2. Data Pipeline Creation + ## 3. Model Training Automation + ## 4. Model Deployment + ## 5. Monitoring and Alerts + ## 6. Continuous Integration/Deployment + """ + + return notebook_content +``` + +--- + +## 📋 **Implementation Timeline** + +### **Week 1-2: Priority 1 (ML-For-Beginners)** +- [ ] Fork repository and set up development environment +- [ ] Create documentation structure +- [ ] Fix confusion matrix definition +- [ ] Write comprehensive setup guides +- [ ] Submit PR with tests and examples + +### **Week 3-4: Priority 2 (Recommenders)** +- [ ] Research transformer-based recommendation systems +- [ ] Implement transformer recommender model +- [ ] Create example notebooks and tutorials +- [ ] Write unit tests and benchmarks +- [ ] Submit PR with documentation + +### **Week 5-6: Priority 3 (Azure ML Notebooks)** +- [ ] Design complete MLOps pipeline +- [ ] Implement automated training workflow +- [ ] Create deployment and monitoring examples +- [ ] Write comprehensive documentation +- [ ] Submit PR with full example + +--- + +## 📊 **Contribution Tracking Template** + +| Project | Issue | PR Link | Status | Impact Score | +|---------|-------|---------|--------|--------------| +| ML-For-Beginners | Documentation | TBD | In Progress | High | +| ML-For-Beginners | Confusion Matrix Fix | TBD | Planned | Medium | +| Recommenders | Transformer Model | TBD | Planned | High | +| Azure ML Notebooks | MLOps Pipeline | TBD | Planned | High | + +--- + +## 🚀 **Next Steps** + +1. **Choose your priority project** from the list above +2. **Set up development environment** for the selected repository +3. **Start with the highest impact issue** that matches your expertise +4. **Follow the detailed implementation plan** provided +5. **Track progress** using the contribution template + +Would you like me to help you get started with any of these specific contributions? diff --git a/contribution_tracker.md b/contribution_tracker.md new file mode 100644 index 0000000..e429c1d --- /dev/null +++ b/contribution_tracker.md @@ -0,0 +1,211 @@ +# 📈 Open Source Contribution Tracker + +## 🎯 Current Goals +**Target**: 3 high-impact AI/ML contributions to Microsoft's open-source ecosystem +**Timeline**: 6 weeks +**Focus Areas**: Python, AI/ML, Cloud Infrastructure + +--- + +## 📊 Active Contributions + +### 🟡 **IN PROGRESS** + +| **Project** | **Issue** | **Type** | **Difficulty** | **Impact** | **Status** | +|-------------|-----------|----------|----------------|------------|------------| +| ML-For-Beginners | [Documentation Enhancement #835](https://github.com/microsoft/ML-For-Beginners/issues/835) | Documentation | Medium | High | Planning | +| ML-For-Beginners | [Confusion Matrix Fix #825](https://github.com/microsoft/ML-For-Beginners/issues/825) | Bug Fix | Easy | Medium | Ready to Start | + +### 🟢 **PLANNED** + +| **Project** | **Issue** | **Type** | **Difficulty** | **Impact** | **Target Week** | +|-------------|-----------|----------|----------------|------------|-----------------| +| Recommenders | Transformer Model Implementation | Feature | Hard | High | Week 3-4 | +| Azure ML Notebooks | MLOps Pipeline Example | Tutorial | Medium | High | Week 5-6 | + +### ✅ **COMPLETED** + +| **Project** | **Issue** | **PR Link** | **Commit ID** | **Merged Date** | **Impact** | +|-------------|-----------|-------------|---------------|-----------------|------------| +| *None yet* | *First contribution pending* | - | - | - | - | + +--- + +## 🚀 **Contribution Details** + +### **Priority 1: ML-For-Beginners Documentation** +- **Repository**: https://github.com/microsoft/ML-For-Beginners +- **Issue**: https://github.com/microsoft/ML-For-Beginners/issues/835 +- **My Role**: Lead Documentation Developer +- **Scope**: + - Create comprehensive documentation framework + - Add setup guides and contributor guidelines + - Include interactive code examples + - Ensure beginner-friendly explanations +- **Estimated Impact**: High (will help hundreds of learners and contributors) + +**Technical Approach**: +```markdown +docs/ +├── README.md (Main documentation hub) +├── getting-started/ (Setup and installation) +├── lessons/ (Lesson structure guides) +├── api/ (Code reference documentation) +└── contributing/ (Contribution guidelines) +``` + +### **Priority 2: Confusion Matrix Bug Fix** +- **Repository**: https://github.com/microsoft/ML-For-Beginners +- **Issue**: https://github.com/microsoft/ML-For-Beginners/issues/825 +- **My Role**: Bug Fix Developer +- **Scope**: + - Correct False Negative definition + - Add comprehensive confusion matrix tutorial + - Include interactive examples with visualizations + - Add unit tests to prevent regression +- **Estimated Impact**: Medium (corrects fundamental ML concept for learners) + +**Technical Fix**: +```python +# CORRECT: False Negative = Model predicts NEGATIVE when actual is POSITIVE +# Example: Cancer test says "no cancer" but patient actually has cancer +``` + +### **Priority 3: Transformer Recommender Model** +- **Repository**: https://github.com/microsoft/recommenders +- **Issue**: To be created - "Implement Transformer-based Recommender" +- **My Role**: ML Engineer / Feature Developer +- **Scope**: + - Implement transformer architecture for recommendations + - Create sequential recommendation pipeline + - Add comprehensive notebook tutorials + - Include benchmarking against existing models +- **Estimated Impact**: High (adds state-of-the-art recommendation capability) + +### **Priority 4: MLOps Pipeline Tutorial** +- **Repository**: https://github.com/Azure/MachineLearningNotebooks +- **Issue**: To be created - "End-to-end MLOps Pipeline Example" +- **My Role**: Cloud ML Engineer +- **Scope**: + - Create complete MLOps workflow + - Include automated training, deployment, monitoring + - Add CI/CD integration examples + - Provide Azure ML best practices +- **Estimated Impact**: High (helps teams implement production ML systems) + +--- + +## 📅 **Weekly Progress Timeline** + +### **Week 1** (Current) +- [x] Identify target repositories and issues +- [x] Create contribution plan and tracking system +- [ ] Fork ML-For-Beginners repository +- [ ] Set up development environment +- [ ] Start documentation framework + +### **Week 2** +- [ ] Complete documentation structure +- [ ] Fix confusion matrix definition bug +- [ ] Submit first PR for documentation +- [ ] Begin code review process + +### **Week 3** +- [ ] Start transformer recommender research +- [ ] Design model architecture +- [ ] Begin implementation +- [ ] Create project proposal issue + +### **Week 4** +- [ ] Complete transformer model implementation +- [ ] Write comprehensive tests +- [ ] Create tutorial notebook +- [ ] Submit transformer recommender PR + +### **Week 5** +- [ ] Design MLOps pipeline architecture +- [ ] Implement automated training workflow +- [ ] Add deployment and monitoring +- [ ] Create comprehensive documentation + +### **Week 6** +- [ ] Complete MLOps pipeline tutorial +- [ ] Add CI/CD integration examples +- [ ] Submit final PR +- [ ] Document lessons learned + +--- + +## 🏆 **Success Metrics** + +### **Quantitative Goals** +- **3** merged pull requests +- **500+** lines of quality code contributed +- **3** comprehensive tutorials/documentation pages +- **10+** interactive code examples + +### **Qualitative Goals** +- **Educational Impact**: Help beginner ML practitioners learn effectively +- **Technical Advancement**: Add state-of-the-art capabilities to open-source tools +- **Community Building**: Engage with maintainers and other contributors +- **Skill Development**: Deepen expertise in ML, documentation, and open-source practices + +### **Recognition Targets** +- Get featured in project newsletters/announcements +- Receive positive feedback from maintainers +- Help other contributors with related issues +- Build reputation in AI/ML open-source community + +--- + +## 🔧 **Development Setup Checklist** + +### **General Setup** +- [ ] Configure Git with proper credentials +- [ ] Set up SSH keys for GitHub +- [ ] Install Python development environment +- [ ] Configure code editor with linting/formatting + +### **Project-Specific Setup** +- [ ] Fork target repositories +- [ ] Clone repositories locally +- [ ] Install project dependencies +- [ ] Run existing tests to ensure setup +- [ ] Read CONTRIBUTING.md guidelines + +### **Quality Assurance** +- [ ] Set up pre-commit hooks +- [ ] Configure linting (flake8, black, isort) +- [ ] Install testing frameworks (pytest) +- [ ] Set up coverage reporting + +--- + +## 📞 **Contact and Collaboration** + +### **Maintainer Engagement** +- **Strategy**: Engage early and often with maintainers +- **Approach**: Ask questions, provide updates, seek feedback +- **Communication**: Use GitHub issues, discussions, and PR comments + +### **Community Involvement** +- **Participate**: Join project discussions and community calls +- **Support**: Help other contributors with similar issues +- **Share**: Document learning and best practices + +### **Follow-up Plans** +- **Long-term**: Become regular contributor to selected projects +- **Mentoring**: Help onboard other new contributors +- **Speaking**: Present about contributions at meetups/conferences + +--- + +## 🎯 **Next Immediate Actions** + +1. **Choose Priority 1 or 2** to start with (recommend starting with Confusion Matrix fix for quick win) +2. **Fork the ML-For-Beginners repository** +3. **Set up local development environment** +4. **Create first branch and start coding** +5. **Engage with maintainers** on the selected issue + +**Ready to begin?** Let me know which issue you'd like to tackle first, and I'll provide detailed implementation guidance! From ef013a62f9a8e5e7a59fc6bbece79d53df2e8d8d Mon Sep 17 00:00:00 2001 From: Richard Ogundele <63150179+richardogundele@users.noreply.github.com> Date: Mon, 29 Dec 2025 22:22:32 +0000 Subject: [PATCH 2/2] Commit from Dualite Alpha: --- .ci/python-keras-scoring.yml | 2 +- .ci/python-ml-scoring.yml | 2 +- .ci/python-ml-training.yml | 2 +- .ci/realtime-serving-dl-dev.yml | 1 - .ci/scripts/SetResource.ps1 | 2 +- .ci/steps/DLAKSDeployAMLJob.yml | 2 - .ci/steps/MLAKSDeployAMLJob.yml | 3 - .ci/steps/MLBatchDeployAMLJob.yml | 1 - .ci/steps/RecoPySparkRTS.yml | 1 - .ci/steps/az-ml-realtime-score.yml | 2 - .ci/steps/azpapermill.yml | 2 - .ci/steps/azpapermill_iterator.yml | 2 - .ci/steps/azure_r.yml | 1 - .ci/steps/bash_r.yml | 1 - .ci/steps/cleanuptask.yml | 1 - .ci/steps/config_conda.yml | 2 - .ci/steps/deploy_rts.yml | 1 - .ci/steps/deploy_steps.yml | 1 - .ci/steps/deploy_steps_v2.yml | 1 - .ci/steps/docker_clean_step.yml | 1 - .ci/steps/papermill.yml | 2 - .ci/steps/reco_conda_clean_win.yml | 2 +- .ci/steps/shorten_string.yml | 1 - .docs/python_scoring.md | 2 +- .docs/python_training.md | 2 +- .github/ISSUE_TEMPLATE/scenario_request.md | 2 +- .images/decision_python_scoring.png | Bin 39490 -> 52656 bytes .images/demo.svg | 2 +- .images/python_training_diag.png | Bin 71161 -> 94884 bytes LICENSE | 4 +- README.md | 2 +- ai200-architectures/TrainDistributedDeepModel | 2 +- index.html | 18 ++ package.json | 30 +++ postcss.config.js | 6 + src/App.tsx | 29 +++ src/components/Footer.tsx | 18 ++ src/components/Hero.tsx | 52 +++++ src/components/Navbar.tsx | 32 +++ src/components/ResourceSection.tsx | 67 +++++++ src/data/resources.ts | 189 ++++++++++++++++++ src/index.css | 29 +++ tailwind.config.js | 30 +++ tsconfig.json | 25 +++ tsconfig.node.json | 10 + vite.config.ts | 13 ++ 46 files changed, 561 insertions(+), 39 deletions(-) mode change 160000 => 100644 ai200-architectures/TrainDistributedDeepModel create mode 100644 index.html create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/App.tsx create mode 100644 src/components/Footer.tsx create mode 100644 src/components/Hero.tsx create mode 100644 src/components/Navbar.tsx create mode 100644 src/components/ResourceSection.tsx create mode 100644 src/data/resources.ts create mode 100644 src/index.css create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.ci/python-keras-scoring.yml b/.ci/python-keras-scoring.yml index eec5c85..1936ae6 100644 --- a/.ci/python-keras-scoring.yml +++ b/.ci/python-keras-scoring.yml @@ -103,4 +103,4 @@ jobs: fieldMappings: | Description=Branch: Branch $(Build.SourceBranch) failed to build. Go to Boards>WorkItems and tag the failure type. displayName: 'Create work item on failure' - condition: failed() \ No newline at end of file + condition: failed() diff --git a/.ci/python-ml-scoring.yml b/.ci/python-ml-scoring.yml index 55a6003..2c7697b 100644 --- a/.ci/python-ml-scoring.yml +++ b/.ci/python-ml-scoring.yml @@ -68,4 +68,4 @@ jobs: fieldMappings: | Description=Branch: Branch $(Build.SourceBranch) failed to build. Go to Boards>WorkItems and tag the failure type. displayName: 'Create work item on failure' - condition: failed() \ No newline at end of file + condition: failed() diff --git a/.ci/python-ml-training.yml b/.ci/python-ml-training.yml index 74e4a10..938bc9a 100644 --- a/.ci/python-ml-training.yml +++ b/.ci/python-ml-training.yml @@ -115,4 +115,4 @@ jobs: fieldMappings: | Description=Branch: Branch $(Build.SourceBranch) failed to build. Go to Boards>WorkItems and tag the failure type. displayName: 'Create work item on failure' - condition: failed() \ No newline at end of file + condition: failed() diff --git a/.ci/realtime-serving-dl-dev.yml b/.ci/realtime-serving-dl-dev.yml index 406a0f6..71a6544 100644 --- a/.ci/realtime-serving-dl-dev.yml +++ b/.ci/realtime-serving-dl-dev.yml @@ -1,4 +1,3 @@ - # Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: diff --git a/.ci/scripts/SetResource.ps1 b/.ci/scripts/SetResource.ps1 index 74d74bd..e115a15 100644 --- a/.ci/scripts/SetResource.ps1 +++ b/.ci/scripts/SetResource.ps1 @@ -79,4 +79,4 @@ $clusterResources = Get-AzResource -ResourceType "Microsoft.ContainerService/man foreach($cluster in $clusterResources) { Update-GroupResources -resGroup $cluster.Properties.nodeResourceGroup -tags $projectTags -} +} diff --git a/.ci/steps/DLAKSDeployAMLJob.yml b/.ci/steps/DLAKSDeployAMLJob.yml index 27798f4..45275fc 100644 --- a/.ci/steps/DLAKSDeployAMLJob.yml +++ b/.ci/steps/DLAKSDeployAMLJob.yml @@ -1,5 +1,3 @@ - - parameters: azureSubscription: '' azure_subscription: '' diff --git a/.ci/steps/MLAKSDeployAMLJob.yml b/.ci/steps/MLAKSDeployAMLJob.yml index f60b8a2..499c5b0 100644 --- a/.ci/steps/MLAKSDeployAMLJob.yml +++ b/.ci/steps/MLAKSDeployAMLJob.yml @@ -1,5 +1,3 @@ - - parameters: azureSubscription: '' azure_subscription: '' @@ -93,4 +91,3 @@ steps: conda: ${{parameters.conda}} azureresourcegroup: ${{parameters.azureresourcegroup}} doCleanup: ${{parameters.doCleanup}} - diff --git a/.ci/steps/MLBatchDeployAMLJob.yml b/.ci/steps/MLBatchDeployAMLJob.yml index 4954761..7740dcf 100644 --- a/.ci/steps/MLBatchDeployAMLJob.yml +++ b/.ci/steps/MLBatchDeployAMLJob.yml @@ -1,4 +1,3 @@ - parameters: azureSubscription: '' azure_subscription: '' diff --git a/.ci/steps/RecoPySparkRTS.yml b/.ci/steps/RecoPySparkRTS.yml index 2e4aa10..99ed88f 100644 --- a/.ci/steps/RecoPySparkRTS.yml +++ b/.ci/steps/RecoPySparkRTS.yml @@ -1,4 +1,3 @@ - parameters: azureSubscription: '' azure_subscription: '' diff --git a/.ci/steps/az-ml-realtime-score.yml b/.ci/steps/az-ml-realtime-score.yml index 9fde99b..7cf25cd 100644 --- a/.ci/steps/az-ml-realtime-score.yml +++ b/.ci/steps/az-ml-realtime-score.yml @@ -1,5 +1,3 @@ - - parameters: azureSubscription: '' azure_subscription: '' diff --git a/.ci/steps/azpapermill.yml b/.ci/steps/azpapermill.yml index 48a3557..b450ea7 100644 --- a/.ci/steps/azpapermill.yml +++ b/.ci/steps/azpapermill.yml @@ -1,5 +1,3 @@ - - parameters: notebook: 01_DataPrep.ipynb # defaults for any parameters that aren't specified location: "x" diff --git a/.ci/steps/azpapermill_iterator.yml b/.ci/steps/azpapermill_iterator.yml index ccba492..0b78759 100644 --- a/.ci/steps/azpapermill_iterator.yml +++ b/.ci/steps/azpapermill_iterator.yml @@ -1,5 +1,3 @@ - - parameters: notebooks: 01_DataPrep.ipynb # defaults for any parameters that aren't specified location: "x" diff --git a/.ci/steps/azure_r.yml b/.ci/steps/azure_r.yml index f2675ef..f456352 100644 --- a/.ci/steps/azure_r.yml +++ b/.ci/steps/azure_r.yml @@ -1,4 +1,3 @@ - parameters: notebook: # defaults for any parameters that aren't specified location: "." diff --git a/.ci/steps/bash_r.yml b/.ci/steps/bash_r.yml index 79f5ab0..a388b85 100644 --- a/.ci/steps/bash_r.yml +++ b/.ci/steps/bash_r.yml @@ -1,4 +1,3 @@ - parameters: notebook: # defaults for any parameters that aren't specified location: "." diff --git a/.ci/steps/cleanuptask.yml b/.ci/steps/cleanuptask.yml index 4efc7bb..5f4d39e 100644 --- a/.ci/steps/cleanuptask.yml +++ b/.ci/steps/cleanuptask.yml @@ -22,4 +22,3 @@ steps: echo Project resource group did not exist fi echo Done Cleanup - diff --git a/.ci/steps/config_conda.yml b/.ci/steps/config_conda.yml index eb186ae..7aa15a3 100644 --- a/.ci/steps/config_conda.yml +++ b/.ci/steps/config_conda.yml @@ -1,4 +1,3 @@ - parameters: conda_location: . azureSubscription: # @@ -105,4 +104,3 @@ steps: pip install -U "azureml-core<0.1.5" "azureml-contrib-services<0.1.5" "azureml-pipeline<0.1.5" \ --extra-index-url https://azuremlsdktestpypi.azureedge.net/sdk-release/master/588E708E0DF342C4A80BD954289657CF - diff --git a/.ci/steps/deploy_rts.yml b/.ci/steps/deploy_rts.yml index df62962..5d27669 100644 --- a/.ci/steps/deploy_rts.yml +++ b/.ci/steps/deploy_rts.yml @@ -108,4 +108,3 @@ steps: location: ${{parameters.location}} azureSubscription: ${{parameters.azureSubscription}} conda: ${{parameters.conda}} - diff --git a/.ci/steps/deploy_steps.yml b/.ci/steps/deploy_steps.yml index 57be9d5..21b7ad3 100644 --- a/.ci/steps/deploy_steps.yml +++ b/.ci/steps/deploy_steps.yml @@ -73,4 +73,3 @@ steps: ScriptArguments: '-resourceGroupName ''${{parameters.azureresourcegroup}}'' -tagId ''deployment-id'' -deploymentId ''${{parameters.deploymentguidtag}}''' azurePowerShellVersion: 'LatestVersion' displayName: 'Tag All Resources' - diff --git a/.ci/steps/deploy_steps_v2.yml b/.ci/steps/deploy_steps_v2.yml index 7dfe404..0987152 100644 --- a/.ci/steps/deploy_steps_v2.yml +++ b/.ci/steps/deploy_steps_v2.yml @@ -85,4 +85,3 @@ steps: ScriptArguments: '-resourceGroupName ''${{parameters.azureresourcegroup}}'' -tagId ''deployment-id'' -deploymentId ''${{parameters.deploymentguidtag}}''' azurePowerShellVersion: 'LatestVersion' displayName: 'Tag All Resources' - diff --git a/.ci/steps/docker_clean_step.yml b/.ci/steps/docker_clean_step.yml index d5c4940..586a010 100644 --- a/.ci/steps/docker_clean_step.yml +++ b/.ci/steps/docker_clean_step.yml @@ -1,4 +1,3 @@ - steps: - script: | docker stop $(docker ps -a -q) diff --git a/.ci/steps/papermill.yml b/.ci/steps/papermill.yml index 5f55f71..6ce82bc 100644 --- a/.ci/steps/papermill.yml +++ b/.ci/steps/papermill.yml @@ -1,5 +1,3 @@ - - parameters: notebook: 01_DataPrep.ipynb # defaults for any parameters that aren't specified location: "{{cookiecutter.project_name}}" diff --git a/.ci/steps/reco_conda_clean_win.yml b/.ci/steps/reco_conda_clean_win.yml index a9f60f0..c136939 100644 --- a/.ci/steps/reco_conda_clean_win.yml +++ b/.ci/steps/reco_conda_clean_win.yml @@ -17,4 +17,4 @@ steps: del /q /S %LOCALAPPDATA%\Temp\* for /d %%i in (%LOCALAPPDATA%\Temp\*) do @rmdir /s /q "%%i" displayName: 'Remove Temp Files' - condition: succeededOrFailed() + condition: succeededOrFailed() diff --git a/.ci/steps/shorten_string.yml b/.ci/steps/shorten_string.yml index 8bdd17d..c5b3cc8 100644 --- a/.ci/steps/shorten_string.yml +++ b/.ci/steps/shorten_string.yml @@ -1,4 +1,3 @@ - parameters: Input_String: "" Output_Variable: "" diff --git a/.docs/python_scoring.md b/.docs/python_scoring.md index 6c29cde..9f85450 100644 --- a/.docs/python_scoring.md +++ b/.docs/python_scoring.md @@ -4,4 +4,4 @@

-When deploying ML models in Python there are two core questions. The first is will it be real time and whether the model is a deep learning model. For deploying deep learning models that require real time we recommend Azure Kubernetes Services (AKS) with GPUs. For a tutorial on how to do that look at [AKS w/GPU](https://github.com/Microsoft/AKSDeploymentTutorialAML). For deploying deep learning models for batch scoring we recommend using AzureML pipelines with GPUs, for a tutorial on how to do that look [AzureML Pipelines w/GPU](https://github.com/Azure/Batch-Scoring-Deep-Learning-Models-With-AML). For non deep learning models we recommend you use the same services but without GPUs. For a tutorial on deploying classical ML models for real time scoring look [AKS](https://github.com/Microsoft/MLAKSDeployAML) and for batch scoring [AzureML Pipelines](https://github.com/Microsoft/AMLBatchScoringPipeline) \ No newline at end of file +When deploying ML models in Python there are two core questions. The first is will it be real time and whether the model is a deep learning model. For deploying deep learning models that require real time we recommend Azure Kubernetes Services (AKS) with GPUs. For a tutorial on how to do that look at [AKS w/GPU](https://github.com/Microsoft/AKSDeploymentTutorialAML). For deploying deep learning models for batch scoring we recommend using AzureML pipelines with GPUs, for a tutorial on how to do that look [AzureML Pipelines w/GPU](https://github.com/Azure/Batch-Scoring-Deep-Learning-Models-With-AML). For non deep learning models we recommend you use the same services but without GPUs. For a tutorial on deploying classical ML models for real time scoring look [AKS](https://github.com/Microsoft/MLAKSDeployAML) and for batch scoring [AzureML Pipelines](https://github.com/Microsoft/AMLBatchScoringPipeline) diff --git a/.docs/python_training.md b/.docs/python_training.md index cc934f7..0e253e3 100644 --- a/.docs/python_training.md +++ b/.docs/python_training.md @@ -7,4 +7,4 @@ There are many options for training ML models in Python on Azure. The most straight forward way is to train your model on a [DSVM](https://azure.microsoft.com/en-us/services/virtual-machines/data-science-virtual-machines/). You can either do this in local model straight on the VM or through attaching it in AzureML as a compute target. If you want to have AzureML manage the compute for you and scale it up and down based on whether jobs are waiting in the queue then you should AzureML Compute. Now if you are going to run multiple jobs for hyperparameter tuning or other purposes then we would recommend using [Hyperdrive](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-tune-hyperparameters), [Azure automated ML](https://docs.microsoft.com/en-us/azure/machine-learning/service/concept-automated-ml) or AzureML Compute dependent on your requirements. -For a tutorial on how to use Hyperdrive go [here](https://github.com/Microsoft/MLHyperparameterTuning). \ No newline at end of file +For a tutorial on how to use Hyperdrive go [here](https://github.com/Microsoft/MLHyperparameterTuning). diff --git a/.github/ISSUE_TEMPLATE/scenario_request.md b/.github/ISSUE_TEMPLATE/scenario_request.md index 29f0a98..e359ef8 100644 --- a/.github/ISSUE_TEMPLATE/scenario_request.md +++ b/.github/ISSUE_TEMPLATE/scenario_request.md @@ -13,4 +13,4 @@ assignees: '' ### Reasons for scenario -### Other Comments \ No newline at end of file +### Other Comments diff --git a/.images/decision_python_scoring.png b/.images/decision_python_scoring.png index 91534d41d795c9118d889d5d2dd1eca684dd67f0..261256664b4109bcf40205ba2c527b177206244f 100644 GIT binary patch literal 52656 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 eVu}XQ91LFLEb8d&pvw} zP-iSpO8l_<2M`D(ar%_`IS^=L5D4^5!}lA3C$t?(6yU!N!RJmM1C@5lO#xrN^*#zc z3IbImZC<_f9q@fqz$yD+5J+a5=N8wSH&GUE$eRmcHoD_M;kJ4OjK>! z@ZAeFN4XdKRDP}7_+iNP`{!Hz4)r!S56kM*)N07m3EXyXJb4K}iH>RyiK0f*>nB$E zj|iMvD&n>_DY7}sy`3$P27$s)={9z^&20go1vU1M1-cH$dxnYd1G&QH^$rCzJv9^) zeJj_AkPBZF7mOV^KK9$W&tCaZ5LRwyo|>^At0j65L zF40@D)vcqA4~L$+ZL{}!GTSM71S*Cqh%2xqr4w2XTYm*@omXF}_P}~K%vM#zv z8%4o;)o0YU(0^$_>b3-&JfeW|c|h|SI5<+LP^e@RJ}^xJmm7;zlRT;bh9$@zS#t_^=22?p!4;sod+ zb~1CdqSlnn^*FYAkXDNNvrZlP>>#qH7*&ZJLDCnm!!vMJ6s+KmoK`YLrD8-ITIS2t zMgB)!fIQQX7S2}^$O>JArDv+nBFb3lf%KJh3UMZZR!x#%?PS^EXz*YDP3=70WH5Le zBfr~iBsUC^-H1AUV@Vi_*$UoG;qhM=4c()5&OmL9y38$^xLU3}^RZ>s`8Ns}?s!?m zliN?~TpUdiv!}9uP2k)j6@ZVjm1e8)vAI zKTf^Bz}TxQ2Ip__Z&J>Jy{|8-1iGEe%|LJU0q@3PRL~YiwpxgReU@XyN57RJINA5k zt3J=8R`V=XsTcdr&oJ>0r~f5B9%=Qb<4^G-s?x8%cTz0$PF*a;SOiOe^@F{es!*AF zFAKu>jwJS2Qyy=rfnSX+*YW;TsFSPt6p6ucps7 zvaI)P7f+jdC|N74r@fSSVq(aG-&ftEfIGq)dU^3n;~c)(Cl9<`GXk7)u$W^IuSPLggoAW|Y8v6gEO& z&!?ZiiONLef%QXjl@+v94EuwL=9WCJjcSlG15)4w85{V*D+Bu78Joe2(oS9xUz)Mk zRSTr+RJ9@UM53qzSOFefHeL-EGoz+t`1kF^>Hgrpd#g{g*Bwv4=IZPy%HCa{Sn9E7y4+l&vSAU`n zFhmYHavI+E`;xFOdJf)1{K@)qt&iyg>5=99+8O?jj!~WIzoJMtX*E=N?|n^(k!Mr< zi;>J~Z>oD&6?OMI@j80`rJ6H^DatHned}Exw->qmgAP{Nu0FL%1gA<1M>@Lea*6^g zodP(WGmKF7(^Q>gaLUo(GDCGHlt}b_!bOp;B`|~*|gAAX+09kMkYrhZVHolC#Q+6 zN??6x)U7&oXDf;!T2*~BtG^!sK+D0q{ik5aJ2M;~F2TN)Gd0@!FI#%B7Q7wyG&j@G zOjSiKb7m$1*H?sy1aJ zQuf6`#@eCZHbuenzz3o5Z{GK!vchlUX2$>cQf3ZnKvoCrvtOe&rLI`}!d{HOK8-Si z(^U-fz?xW<%U2{bS~8*}LX^D?E@^QoSKg>-UITOZC1?a$L*rjNkPIvS=_-S>Z{!Sq zc{7Vepl8!9iL;sa3;RN_2=Fghm7wVmC50km=bNor2-B1r=JJ0550)ZGkI9zvk<7k( znKOuohIUQHf1HEU8(emYYHo>zL%gav-?NzE4Q7HKs9}++K>7?bGUC#gBHuPwb^4Zp z{#$j!MfljF!o#$BjB8X2DodmQx6>Fro=K44%Qz-=85na$^;hHsn>_wl*NV@`O06rl zjIP?0x;4ojPTTJN;XxxA~t0cngSs*Xj7B!ty1a9%Dr#uznNDs$-@2@>C-Ft)6xh zw12|>OJ~{&y`Q(EPTv}`Kccy-vhC^%Wd(QtV~GeY!qprEoDZT<(z2{xPwW+4NW0NpQVraP)SjRRI1+I$)ztzBHee-$$PnK z)&PCd@?X-N?9|6i@k?Hz_+mR<{~Z0-F2cihB>(lXRlkc&KXhF&-!GF86Fl@^tgsZN z&xV6UChIm>CwVCh3|QA@efXCGkuYlkc}=t`s>ay+y8UPJHato&VHh*Z8057M{%h^8 zd-yeX_%*%o|MR5G&N{cx@=onP;6?`(@yi1mQS5Y$rD^KKYV}Jmvlh%l2X<^Q(2F<&Pqyhv|$XpMXK(T)uPF~B1fy&RQ0O>%{AL&=-l4~Ct zk7cy1rMy6PKZEtx9)UJ{DvPgua(w_9TYq%$?*Hm!!{6)59Yk-b69el9WIz2eDA(@< zFm>$cIO{vfJJ5{-*HChGmi9mBpViq5Ja1&pFMT84q9QieXfElPfAEj2pV2^05;Pnh z5q(X}BV|LFtFm~hb?Pz8yB*&H&jT8a@QoXuw#FJBN*1I3Vxgq^%IjO;xt_Cv%P^?V zqftJ+<=V{M$9KSgP2w<)XN*uS zN$PDC(W6so8Zk<@xc9egSV_D8$DJhZvN%WxT12Go|4Sm?bw+~qlkK3`B$QmQ5Y9&=8}GK>jKIgdtDjS6RKm`@|S?sRZe+8vfG#4=^rfC>Ch$vs2uImnuxwIG#o3= zs?NR*{u~H{UEm@g(-~i9UYBQZVs;CPBzVgdcIQiOJnr`5XGuXcuV^Tv)~M`n5e@g| zb-vP{@XOL0)ouPJq+y%s)Nc1{;aO%x_vq(s^rbF$qC2u%3r?&5e%$UelJ=l)6{a<9 z__JP2nFJZ@qRss#_q+b&hV;*rj-0DbycuH~mvwt#b_OFW1FxcWcv91qo4?nbqF`Mt z9Aio=%>UBM7ujqT_mSa~PVaV$dq+lc8HM6u%7I%|JKIq_VobicM`r{`bcD~4nx@B;>YUb8`caOhRbD(d)1G4II8f)~H zSC~@Iv!ReO3=e7H1_#F8{PMS!zw7I&47ylSI(n_XGI07Qi-EFQ*S*c(Gjx)tdLIg+ z9Uvo%3VT%oM(QQ`s2arQ%Z3LW8I?T0l%QUqH= z_RT%u_NjgbVfWPsC)=(*KWPmQZplrI(k>8HL~bY30>|%KTmghkIx%Zz(k_3EY;{#K zxWx?2HhYKpr5D-VV!$RVCo&bXx@hmff5yb;1A;|=V+w@+Wqk9or7l#~5L@|agU2sM z*mOM~w!vZDY@GKH#(w6zf?ao@3tgXK*F}!ZQJ^esTX$7v}9o+W3wxUdYU?@KU6}Z-)>LC zSd>AJ_uP@ejb&)G4|)PeI5&nGFO2mEtMgRcGb6Ejm$!S5&tjRsfc4p$(6O60Zw{!X zbxntObY4}S9B?z*?!C~w>m@rvQa)^!;%l9(O%yrE1Z(kPg0P7!FiF<_DM@3X4`7Un z=EH^Sm2yE@7eX%`FRJ2r80yh>9{pA#{-iO)5*e z_cX2`QtVI_2>P<%_t)*>mJn6y^->?$o0<`W{*@_7lf$i~O^6o4KU#U6Rb) zY&t6Ij8rp({5m63pfr}=+xOUVHOqG&4DhJ29j)iWw^cVY&&eROX1uK@~XE+m%GPVe;68uDtpf*Ns|X_1?{Ij<_@9_P~bk@so-0Fhe5qr2mg>cJHt`0 zD1WFfSo%*IA#l>FxQXE|w^dj&g4Eo$2$+#JiyRx$5siqxnT5C5R9$CQ5tClC4;;! zj5iF0%GkNNiYTONKEHbQq)!CW~%ngKs83ZR*pZXa%_ascJ*9j5#*$_!pS+;&S_?!-&0muL!T6Q|)|$ zstk%WE$ShTSu(d|h2H3_CvES$RsO>o=Z}E(i_fmdCZKZt^|+__KWj|vSZAUr3<3FB zu7^1PV9r{=BoYQuH1khz*J7i_36HhF^o3wTm17$Yp`zAe6Eb?!Y>iFz#zLn0{_gblp3&rjExNf z0Xveor%G23arDMD*pR5gz-Cl5TzD+Zbm@->CNqXrNzh;d$M@V(Ag;=~Eh4~0`5>Fb z%0S?#|49Q@>eBk z@A(~P7Rz~$0u0!xq4(*%Q0p{JB<=RJ-5AS$l_~C6_~`|SwU6b__6sLshOO}D%uDxN2nBrEu(^Jf0=tXTKf!$651K;4t(su=&ZAyOBr>p$FE9(DvGS1<9Z$rEjfIgt=P7w;cVHV_?G!|0DvHncbnBcPyI@c8Srb z_1Q$|>Q3)C@e$B9>KRYpCVZT&G19X`mi@!SkAQwf`zyD<3i(&v{%X?xPqpM8Gt2R5 zgsF+OQ(9~e?-b`Q8qGBpRQsnVI`KX$;b0kk@I(Pk$Spz8f`^;S?m#C`1LQ#Jt;&@JnKl6+Y=R+mF zar@(B@#4+v?{U0R?GmVho15!t)CN~SF^kJ_cJ@C4hcCW`z&}DNYza?p|A#BYpC9qN zq0dSHRlpZT$4PStYG#j$l%{6+qk}#Kz3n{0+UapfmI^0rM#FZ1>stbN(vQAx^l?zZ zP9maNhVX>9)7Jug{oxSX;WYSq&k)<|I2x5+*{GQfF(YkFFAPC z5B7AC|J)+qKGKlL%CuYE>1N0noH!?f@2>^kLR8g8+Hcr3ofWUr+}ZoW!?Kc%%F_A1 zf!UgDJ%7e<*FQpzv{wTH^I2hYhF+k}39z@h-=)Ko4>%R6slNRhiS9drdMb;xFyf=* zPy4OX_ie7^#*ucQB&FxB*9=&ndbj3wCJ+S2&fHszBoKvihkdqz4H(|pqr-xJ8U4(b zdOXppSQ|H^aZkjcj}eIT{to=SLIEd#cPn|9&>s`!lr1eJ6fxYj9S~~9j1Z=UkyX@O_|Onc zeGR`)@fv_Z`ssukrVcmkl;xoAttv!KO$>M>FqF?)IaCV|eZRm7f}p$Puy94x%t(kO z?ckgYFENNxftC5HhL}GF{OL32IJ>hdh?6luL(*uorUepcz zRGorM$#`W=JKyU`OYkjwriazkXP^+`{k$P{1w#QrBGGJ%Umn-@dQBayfuqj~$8NO5 z9f_+t{nL;w0>{8npWDHQ<;6OkCi;u<+{@@fGdOjzUw1oqGcNS<2%;mymzVy%U+&;Y z#1)=4>{t8&))E_+{q%ZJ+CNm-Wj~CrDxhKUd2?h4H%x^0A}6KaBs`r)xH4@;fOaq( z=3Z&Swxg&$b70BA+A{Ct_NnT=2fU`_iMxC%C#MtVB8RaBW2}s<_zmbf|46#?6~j)L z`xiJ*+&P_Kp!Xz=^n5|b^%kw`=x?i7i4#C^5i(iF?lzC~Yq7JfxEbYw9_)1w(Y=;O z3hrsm9&!z|%`{UDn&zP`f2z_+;OgSkH(t@S-^Q#2-X6xa-kOR^qE+#zIs@G&0(m-n zBydOhN@6`*%c>=Qe8`xQY`NNf&d5qj-m!*kxN!w{&EF!5!Dh!zjSimtLTPK@+k^}! z7YfJW*q|^z>lxfmYMRS=&@Z?&>)Sn}d|^;Gfk>bs+)ayy;4XRh{Z=8$;K5mOSg_c=I-trCsotRkd%N+G zW$p%=}qG}{MaC1F2 zFwlSn!bQnsvYs*d_6sA~k0%e9z@USQg*>IOK3%^wGUIv=DaV;gG_heu%;3j0c~DYS zs}qM2wl7if2!&LFd0EOIITbuB@O@PMQlFbJ zZHaXV#StQ%;N`tf;Q>2+uD>06RSF?A*b<|vWo$!E=u??9eg5lYFv$tkDDE>k)x=D_0`hTyjBF$ljXhyy|;2$ z;cg#BKqr4>rGI8zjbu62j^J>=u!Txu&veqiXFT0`NLy16b<|P=_B7wbDypHbGz@bJ z4f=tBOh$-dP9Xr!6|Ey=M2v|lGkxn17S0);Xs8Je-N`a{QKWAD}4FhmEyF9$alP0l9wW5q*d8F+#_XEVB9CzBR)yNW78@s#0- z!`a1!Oke6Zq*Gel)i3ab!p|Ir%7!=nn&)IAzALUkEZN{^n(D?J29h#al4eDbn-^Tn zG@A>)H3d@J_yqPV&H`sO_L_@qVf1^SF{Mm}Oe&Q3ka3K$uF!Nrd*hKfypVV5^KCHq z@l#*I<;;~@tLbr40q;f#-3Oz$q{vIgO=i<{6XX^I7ZdBPuneU<9w)H*HBi^Njstd< zkP}6ybEc{^PJ2+5Opj7$S7w=e|LJLl?mx=Q89Zmp>e4!xC~s6{O_tiV(=xc_ehGfU z-PxhC45|#<(V03O02J<5ad$boHTFAOH%u-`Z zMun3KWqGjRK#Zui`SbXNY2islzBvNhc5#-{)n+xQTO9K;FN}{rg5^B!_cfWQmR}Pz zI2p{4*=(9m=zI;KyU=R4u;-mKKQSZ>U`VLZp6w}-A(z~Z=yqS-RR*tUGerzxAKt&Em#=Y9ZzQvX`r_FI2=o z%DM1VgYB2&u6k|yK5Qk$Qw`RrZ5$HilIa9{d(PHMUhDmk_L*CvLfEkPvFtlE#_lW^ zfCCCzH5u+T_a5i{3*N5nyeP(&n^S#y0B90>8G%XJ-^L$dWk&MsLg>Y{Hv`lGr`ZNr z>kv$JE!V;u@XC^VBqs+n{L@Gk@$M!m>vR7VIBCh>CAuniW?sIYdPw(B zu~kt>p61sSnWkvd9p(XrLLNJxx{{S_a?krQtyfimo z7>+*$1URR2dhy4q!eErRFVy95t;>(ReHCPDuEr$COysb;_>a=t3#lY`qRAP@A@uvg zkqVk1e4xxy9ZIL++pAk0`x#~p7&9&dJr$L}ebcW6;TlT~Y9t;Z%@I!Y^WtfcGT%hR zz)F99?(GqM_iZrPOP`TvJtl8zaI^v2&vIDdg>w5hZVTCJ0NoV}D|DOa52Rhnywu_Y`e64UZPtjEls>TI?eHuo%8(r$F2 zlo@5&AgpJUm~aLb=xfV-7DStI&K?`^r#@$kn2P22qMg9{*g1l)@QR3^gLIP+I)0Ac zWPaWVzN%~PP!nUt7rp)Fc6WE>^LYcoo1uV=5w8Ch&9>y#NSr~d$iP(Hdt)= zK2+ko??|ZT9bd7M*9xi|eX$CvDkt*9ns$EMJPIX$KtaS|foOxvw_-5Q_Is8>pG>)v z?rZm7F$lQL{ZXu{{yBBggvHb;zfIkiF_e$v4uxpP4XB5Hdkh|TAE7|G7Wyb7$|VqU z2r;MgPKFu$%$Vrjea)X4v6p2Z7d~4*Nhtd=AR`pyGbkPM#h8gM#LH7gCmT|GsXlH( z1N8(%;gAOe%)L!2W$v4kEgSDWoz+sR<1=k;*;c{hB-b?zsXB)_K>D3YRfB892!@%~ z3U}8Nk%0py>IsnAqF$>+om(@<8ibJuoD;TVafygnGXWpTGJm!IzS?4G+W5YW?_l@! z<%@f&t_1;(g#YJ1vyU2(N?%2b)O$5#*%UwA%-)b>cjn5z&vzd4S0Q7LE|UEA{#Vs@ z*VYPnKTlAm%H(M#2OIl@BD^Y0<=ljIAD8%)l8i7=2`beHoDKu$cUxI8lZ0hOiKUlL zKKfk!9h}pf%{$qT_;LuQDrqk}zdJO$y7KO4rt)k~BCrX8K!(o;{uW`ueobISUH(Vh zH~xnY0H&2&Ol|z8>>8H=m4IVR_*ON|&)mq}dX>Co3a@YnSB*R227!;Y_KJYSEt zKHskXcb({om7f2!m)yAaQFH)V{Muy+O}M&H@4}hZgon?FFP!U9`IMZkJjO|=Ra(yk z8ri(3IIql(M$=7~*bR59TR$CH7T@8Iz*>NB0f^~XwzbR3LrjK@==4~nS7Re^;=aWW zsORiG%xeOH4rXpR02~)PcoBAr3S3-)V`$g5S>WaJ%NvV+CR*;vN!S3gJ0fNSyj9bV)C4Mmyc&U{@y67?uZ#RQlk4Cs3Gvp6{@+Wa z>=yP;uGQrR1nPe~4pjHbU7i8>-1uTFJ<<4Sz0Rc>v7XhI^-5w#N6Dl5KqZZM{|dmq z@7(B73;ZPTFj;$fLIvok;ma`Uwsyi4@00ivF$1bH?!q*j7*pQLN+B5gYRJDWF&imOGY2Ui)nr(R)C;;ciK9n)9Y+xVjav9w9r zEdMs?@6z)%+8)lnRVbdn7b_SZUBp}5>!{x3pjbX}5~&)ObFZ?dGVs`6RP+PZCQZ3~ znAe>sS%HidQ+l`wNy+Hm>@H*#v-fr8ItYN_5mB?bVa&74w4hu8sHYTfApnAKyS7C9 z)hJ!FG4b>xi>&TDf337uK)&dgWe59Fth+ydg!4vxL{oBG(l*o0XBGE`T8;*iag`aO z0(ihAzBWv#2$5AKE$Im?Px6GJeOXfoE=n_c7TeRBd&>#GL;q%?5Oo2Y^2O7B95#) z!Eb83-XbDb?}=pJyyG>tvlDX;P(@YA0J3~lj>3RR+9#hiUwM;J<)2a_)%DzU%TM_u zp^TNf7Ulbp;}@~b0g{W@d7pPq}wd1JnU39I5`kEhXzE0Ig3&wq$hJpe~V5V<$UTOSh#Tk;{6`Zb}_m$t<@lSQ?*nV zEch9C=QPZHoNU78u$cSj=%ophh91g`rIE1xVK;$l(pdX7n=~A5;FY7^o|*WDJ6P)^ zGnKvJkhbw2L<>SP83=Nw(+A8u{Q*cEx36=no%gxZaE zuW#=c9uIGc8rK1g;Unq3A&>T|_cc3qT%sdn(K z+!J_fa3=kky5&F!-I@!XK}42K{s?GwL1HU(Y&I3$Yu}B$K)#aDmY)aCtB&Dx35>EA zQHbgK8TEbWZLxrcH{3i5n8L#A6z8)N6#9NxQ9Ng`R{BjnDJQek)gaDKU1yK!d}R^h ze%KFTKtVsr%ODw?Th@IIZUOl~WVpYMvh2Gx@H`*CxC0}o^AZ*8rr!hXUy=KVdQ{4@ zLq&q$xuv`w{$R_4>EI4r4$wRict3JW>pB^`tC+LXQtXnACXQJ}R!IFKB ze!n8eyu&V=7G7`e6_C|bVAGA-+f(!>ci;8W3IdwqK(4!P7_7d0Iy(l07t=e9ni;{< zjQ(^a6#<+;m2msmk%@17P5Y9AwoDz@h?uAzq_w02ir~NEdmz{}!zM{q9^I2v)T^6g zsa#FOFXA!&hBjr;$Cw8iNNDP1*N!XOIumw!4A!NXNu7zCY7CslRdhf-{?$tznkKl?8fJqyCz<*?Et}xHThn-cu-5J8M(%CC& zOa!Gqm@|8II9NT-a_sjh@?i!R?qn3w@|?aB*GsNGr1=q&9vS6ej=b%&B0b3+gW z4|-VB13;PiK(FHM0(sMQ(Mil`*%UJDu=(8p!u>6ic=Yt-pF8tzQoGt-<69EpRQ;LrZNL`BT(`XRZ#(r+ZBi)3tjR^pRXK}-w1 zUlDcW#VAfAD^t^W4#g)p=B{SwuQQe-_({FK@a=YqM5}urrHZte(i@sjyXv=~`J7U-yc9P0?$&Aa z6B8Fl88DiG2d-3_+C>fle2J)06=b)Occ)DhBNdHKi|&VLa3)cBbB0b?y|NgqGE-`q z#gRUbfY5rBlQ}~M+r^)JZ=DwOid6>mpk)AEfjTXF8Z-csWnFBU?gPaQ)aE=cKcM-& z3HOIvAB~k^4Th-W81^%FUk%XMWy)~Jr7t=vtnrnjl%}y}76ySkBz~V7YX=%=7*Q#v z6ynnAKnf6geWHzfT4Wx?gYIFuSTO|4O=_;l*K70M&q2>T@*S9y`zIvk8~pz8oAV|| zjv(2;E+`eL$-exiD{8obfChv5#06n)GVm-^H>Z3(|DKtQ*xs?RT?P|JF0jC)*IW#R9 zAy>kmxgMB{Dr7~ZKsS1)p?i;aA)k^L(;Rb6sV+e%b9xc4nIdpzD%Qfd38X?&*@z~G z%{BAXI{Xr7$-Hwk++}U|?It$AmJ;}!IifxN$0>CW-dsA8p*MnYzn*;vmb(-%aLCXU-J#S-THm?6C2I+V-@jKJ7pb zZNTalNy8aJZuH^a)|&2Iri>{8@~0BydVR|a-c$eblR7f8cNF!3R^&Bv-gvk-&Ji#7 zpCF*`SP#3NXV3!Lk2mi6ox8T<7x^hsPU0Vg6XiEVk`xFuOnU)_LE`ZD%(iFG71kL7 zv_&V2TAo2|u8Kj+LEpaudZ34A*HaViz;js-kp_q|8NIRVDUo&iw60>J)Wh?>@wE-$ z-*UMzYTdjA11pN!uR#Z|BU;AWlzs;Kv9DLQtz|R*=gGelK;PpA&}qBp`UiZm>}>Ly z!gT^$&W{#*U7khF)qqZm5+MH%7$ZXeE5X-|(IEf0Wnal zYrgim$xk4ogX_u+a$FAsI7%CaFJ-K0i}>*Fk9KGiND63>1gwT0i26~kPl3Yi))n?M zpud84`1}8tR6D@sxvb7I(Rq?D@~KT}$A)%*=DMp?5d9W8%ULAtnSErzhsBi!Sx~^G z5XHk9-+<ue7nqq(}rQ^CVO36|B)2##b}^8>|xJv!}p-N zlK`*8a)YVYxQ-*CFVkMAjt_!{oo{=;yE<*HA*}#vjTYkl|cuMK(TRWX97QgqX{&j$^9tiTBri7EGrIDI8{gjv}<^S$l_mF zdltK|$a~x_90Zce?;bt%Y2Z;|)1+`rQQi=D-3@ebK)A4w!!M-^-+E($0qh2nWN=Fv zRwzVMX6SGM<77|tw1o?63TV_DhK$(W%Xw0-f#7JQMXnCzmnLjs8!~?=e%{g1p%}gR z{!JNfNhmm}h@{X=mog$WK?g0nid|N_xrEUJgc&F^A!ZUtxqrtNSPquz1$+yd)a5Vi zjG7-RphwsaXBtN?zE_l;zo$DTMp&+35d!TU({#mR#q+&3G``GS&3?8FY^4=Du^^Cl zkHDxI-|&7PIT||jU7c5wg7FGDt|7wchn{WJCfNK0=!0w5K~Q)&kR}`TlLOUdiLLbn zI%3giG@bwc%|ik*>irDL+eJ8#Uf953c4EaEaj2Dtz)C^0>urGnf$Q9MtUsBg!1p#o zj&lO2C0rw61)4B#MhIPq!_QBWh=kFn`{%&ij<^l63D%V$*9hR6%C#jMjMq3&+6~Z# z31Ifdc0geya^z&p6iyezXA_o|V(ly(rK!+y_tny9JCGi>K9dgbBCq#-?p?%$XQfxB)D8_3XpC;l=IMI*wBqKmD_apJL+sFhp*{HGls z*EiK#UmsY$gDK*Ti)@m|j zA_RCU08GJ1M!aOaD{>(7CrJMI+1MQ&!6;s{`+1fe%W=616mUd)GpLljE~t%sbe0JJ zI%!>9UBc*_hbLp$oIBlMa)Y2AEfl~N@VOD{qB~8km$L|aT{ePdcZ8UAd=opvURo3M z#_K-oU=sn11u05pSYt@Y3}10&sl$c$j$(U+yiY+(0UJM=NWG&W4)Q9r2L%k?2wF)J zcKOncEyq@et%NIKB;n)*P@^$wg~z7zCKUOLraZ9j*|ctVyYdIu1soAW@4X{fMR3^U z!PPhLrN?teOM-t=FwAk^@6rY*r-_4-jw8-gf`*?-uor~dW7OPKBrOTAEdXn?sU!0Z zn*dW(tq?QF#oHU-*e7c+5o0u#)|``R^5H=eJ$gAQD@H`$`Vsx2a44&P-t(K-%4F$jI(XT#2WuF&%TiK?zb)StXc{AdExFTFV-kLd~PDiDL^!V{%C#v zytbewx)0=crfY+U%(OGAie)RXA^!8Ep;er%uz88T-(RMdjQs}WovZM2$1a0m#hvs0 zvndaykV~VwF08$9hC=x>GST-Y^<0zhZEBW=Vywj3HPpr{u+!X=NES|4h$)L=*jbMf zSVHRv)1qq|h7)sho{$3e-H_xu#3gdmND6ih^J(<31rmWJ5HZ2oq9Ly^nnBQ}OM(ta z)471;I@Uf=2({%4=%$OlgU@!SIY?{)O+H?OsXyk(*kmR1c8;)x1Q)C%nXJZ7)DwLZ zsCG?JH@SbpH^=Tcw+51D0P_jG-cB@fTZpysjRS|TmTTY`SFBcv8U*G<%u?QX@#P$g zhUV}RYgW!YV?(*}`pR?i)ze|>BAQNhxz{P1#jQxiHK_1<-|L#LpwMN}O+jl=2RCr` z4>>fDqOl-H&2@UtSvs=~WkfjZomK1>jXk+yQR_5~!bFeq`~^f^Tq#YdOo`P$Y7A+L z>Zp}y{0J+Xaj*zE>85=MG@CENa)q2Pkv%!-k9}Jrg#a3iT-fooA%?@+Dnk|x`TOY$ z`JP&!fbT}497N)--BnpxwvwID-3WRu6LMw^({w^OEhJ}293DyUNFXdniXa}cZm2E1 zeBDnHBn{~RXjJEKCXappkw#Vpq=4f$BSRa zZLmK(#2WuoU=L7<3j5iGTeD83@{qI4H9F-l{aF$BqbWO&OONhs>!}rKr}LBbHRmIA2$E>jPHa z#{#8uvnD-Wr)@%PSfS8<0g%-T`Cnav#X4g?2L?i#Kj`h2Xg|`Gx zK-qF(xwrFj)hg{b)Pb~TmI?rTThGLlx_uleA)?mH8+^qr%Y_3yCl!Unhv+hXMQxbj z&4xp7Y~FZXsPd_T>1ctx?|Tgz1JsuC`PtC6cAeS*CApUC>#mUL{{2=B(;bR+%LDL= z+~r<#^l=*WxU6@uSb+GIo@Kxaf7p7%Ah`RZXi?2YqT$yl6x_kI!y*?^CzJf~bEJ~X zc;8%!hiXNaXD%=JAwh}vy`0p6Rk@db)+n-HXOi8sf|Jvlj>(r^@?GG%?^KZ-Tho9A zQ~Nj3HRcW{(3Zz(lO#~%hOXkalO5j-|9K8lHb;ELTlWA~j)>UJ+}DSsdU4)HQ* zb3aSJL-G#*Yo5=Ascz05wHUp}vL7RT^J`pYh!CK$UjBny#mJA8`XzU+fMjKzWM6e@ zboE7`g___^8De;1LBNrHCi^T)<4yCM9(k8^MJdqnXwxAi)Z~HJpcUY(JKw!&w&8a+ zU2z2|{23W7%T6ykv~NQJlJ(1t zpo+eap!1~J$BmH&)0zo7em5~O*wZGgU;^hF+H|?Z=7{O}T*jzYdOUf*sZK2PTxF_^ z_U2gkE$rt{=<*`GdG{5ViIMHOTV#g_T4Q|!(u%xhOnGj^FDSCxev`_j*?ISGd%xB8 zT?TOO_569W4PRj=U^wdT7VMp7T{@d&|NEuuyx>~&5V#E4CJqwOBNN#OtS`a6@trdNX(E2{N1b?CQ1|=mML^j+n~hx z)U>7I5iN8)S;y2X_QILUQqwEajWrT91R& zitme`D1t_Z%A0P-gdk@@wx>HTx^x|kh3&$RmaO2;h~PbQR;FvT&D?lG`G&-ME4u%0 zR;#NHrr`_T_`&!IU#sXFEPKl)?;J(b#tUaFdt|jYyUN~Rh5%420jriLL`IvQP0~-e zbbVPjZZ*K)ED1NOxEdMuGGzuDod+K3Z%X$+Y_=pfC}-Fda6OqOmP1*Z!am~%t^nauERLlW=zI{M-YCp~8TMNut4-{L@c0SuKR25^?C&@Y^bx9x=`u%^kHO& zgJ~~rPW>(HsmKJDsB_ZB;ZY=va~KLRV$@4Zk$}yA2Z*;Te}v~~>>S$V zo^v?*111W)$%vJ}3>QqqEE~dS{eOLmBi3xC5zqS>*6-RdkPugFPsR)CSaN;BJK4oYTTN zEo=qrZv%vT*A1pq5z=-m08=SCvLUg6B&!*HUpRe-*+E{afb)I4-?apyU|#!cN_v}v zg2n1m_H`Fy1oyZ}WO?urmJs$$9#>qjmsRPm`TQJ3<@^Yp5eoa}v9k?0EzV%u+c~gU ztxk9Xt;yG?Hi0T5RCGJ6>KwCL>m=$3uAN{j9^u;5_elRaHEwivxNXMag{^SE$e0txrO0TM?sZ$IuX4&^|%Bukj^D}+0W0#*r>f#fmmj@ zOhJ{asfLKsRGo~oJO{~^HS9ZZO9=qMoBURjD2+*6|8!}Phw304zY3Q;h>{WVR! zD!~iihQE62Ys1@BF{CJfdzV0j6A)AMZaNEz);Zg)QkG|0 z-_zALJ#K++@d5l$r~A@M)pXb>py0#rnz$vA4Gds8uO(LjNl6jQPxt4~8^%;dfqom? zj)JMx)bFop?bQj^`fjHh&Z}FDuUU8)iXO}0?WznFPLZEhI|eD|>joZ4t0(!ToPoW~ z=T`b9=Q-PGxB%@N<^WUC?|5&YxI~CdvciqXgWA)q7ZQp@g3%ar!h4~YzMK&jVtOXo zLbV20*n7g=p`$~(x4^g19yT(vmC~B8m*6?aY_F=?bhjRr16;=jiP;XbolvOc8)t

AF6Js%Pr}eIm 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 RJvRUQ;yDM~inHFo{};YlFDd{4 diff --git a/.images/demo.svg b/.images/demo.svg index 0fe4bf7..b808937 100644 --- a/.images/demo.svg +++ b/.images/demo.svg @@ -1 +1 @@ -ai@azure:~$ai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectures.gitCloninginto'AIReferenceArchitectures'...remote:Enumeratingobjects:28,done.remote:Countingobjects:100%(28/28),done.remote:Compressingobjects:100%(23/23),done.remote:Total28(delta12),reused13(delta4),pack-reused0Unpackingobjects:100%(28/28),done.Checkingconnectivity...Checkingconnectivity...done.Submodule'DeployDeepModelKubernetes'(https://github.com/Microsoft/AKSDeploymentTutorialAML)registeredforpath'DeployDeepModelKubernetes'Submodule'DeployDeepModelPipelines'(https://github.com/Azure/Batch-Scoring-Deep-Learning-Models-With-AML)registeredforpath'DeployDeepModelPipelines'Submodule'DeployMLModelKubernetes'(https://github.com/Microsoft/MLAKSDeployAML)registeredforpath'DeployMLModelKubernetes'Submodule'DeployMLModelPipelines'(https://github.com/Microsoft/AMLBatchScoringPipeline)registeredforpath'DeployMLModelPipelines'Submodule'TrainMLModelHyperdrive'(https://github.com/Microsoft/MLHyperparameterTuning)registeredforpath'TrainMLModelHyperdrive'Cloninginto'DeployDeepModelKubernetes'...remote:Enumeratingobjects:110,done.remote:Countingobjects:100%(110/110),done.remote:Compressingobjects:100%(67/67),done.remote:Total727(delta65),reused81(delta43),pack-reused617Receivingobjects:100%(727/727),3.32MiB|0bytes/s,done.Resolvingdeltas:100%(490/490),done.Submodulepath'DeployDeepModelKubernetes':checkedout'72e4804adaaa5047739c06a1ed1d442ca714af66'Cloninginto'DeployDeepModelPipelines'...remote:Enumeratingobjects:3,done.remote:Countingobjects:100%(3/3),done.remote:Compressingobjects:100%(3/3),done.remote:Total178(delta0),reused3(delta0),pack-reused175Receivingobjects:100%(178/178),6.04MiB|0bytes/s,done.Resolvingdeltas:100%(94/94),done.Submodulepath'DeployDeepModelPipelines':checkedout'c8624daf1670ddd396830774fee9e41b490ba2de'Cloninginto'DeployMLModelKubernetes'...remote:Enumeratingobjects:305,done.remote:Total305(delta0),reused0(delta0),pack-reused305Receivingobjects:100%(305/305),1.15MiB|0bytes/s,done.Resolvingdeltas:100%(188/188),done.Submodulepath'DeployMLModelKubernetes':checkedout'afb172bc65b48de1a139586730581639d2fdede1'Cloninginto'DeployMLModelPipelines'...remote:Enumeratingobjects:183,done.remote:Total183(delta0),reused0(delta0),pack-reused183Receivingobjects:100%(183/183),275.05KiB|0bytes/s,done.Resolvingdeltas:100%(108/108),done.Submodulepath'DeployMLModelPipelines':checkedout'25b73b829c0b2593df24799f8213954e9f010b75'Cloninginto'TrainMLModelHyperdrive'...remote:Enumeratingobjects:95,done.remote:Countingobjects:100%(95/95),done.remote:Compressingobjects:100%(73/73),done.remote:Total772(delta48),reused52(delta22),pack-reused677Receivingobjects:100%(772/772),762.10KiB|0bytes/s,done.Resolvingdeltas:100%(441/441),done.Submodulepath'TrainMLModelHyperdrive':checkedout'99e243209923f437e1143c7e5005c4f8ea7d6895'ai@azure:~$giai@azure:~$gitclone--ai@azure:~$gitclone--recuai@azure:~$gitclone--recursai@azure:~$gitclone--recurse-submai@azure:~$gitclone--recurse-submodulesai@azure:~$gitclone--recurse-submoduleshai@azure:~$gitclone--recurse-submoduleshttai@azure:~$gitclone--recurse-submoduleshttpsai@azure:~$gitclone--recurse-submoduleshttps://giai@azure:~$gitclone--recurse-submoduleshttps://githai@azure:~$gitclone--recurse-submoduleshttps://github.coai@azure:~$gitclone--recurse-submoduleshttps://github.comai@azure:~$gitclone--recurse-submoduleshttps://github.com/Micai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/ai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIRai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIRefai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferencai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchiteai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectuai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectureai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectures.giremote:Countingobjects:10%(3/28)remote:Countingobjects:25%(7/28)remote:Countingobjects:60%(17/28)remote:Countingobjects:92%(26/28)remote:Compressingobjects:8%(2/23)remote:Compressingobjects:21%(5/23)remote:Compressingobjects:30%(7/23)remote:Compressingobjects:34%(8/23)remote:Compressingobjects:60%(14/23)Unpackingobjects:3%(1/28)Unpackingobjects:7%(2/28)Unpackingobjects:10%(3/28)Unpackingobjects:14%(4/28)Unpackingobjects:17%(5/28)Unpackingobjects:21%(6/28)Unpackingobjects:25%(7/28)Unpackingobjects:28%(8/28)Unpackingobjects:32%(9/28)Unpackingobjects:35%(10/28)Unpackingobjects:39%(11/28)Unpackingobjects:42%(12/28)Unpackingobjects:46%(13/28)Unpackingobjects:50%(14/28)Unpackingobjects:53%(15/28)Unpackingobjects:57%(16/28)Unpackingobjects:60%(17/28)Unpackingobjects:64%(18/28)Unpackingobjects:67%(19/28)Unpackingobjects:71%(20/28)Unpackingobjects:75%(21/28)Unpackingobjects:78%(22/28)Unpackingobjects:82%(23/28)Unpackingobjects:85%(24/28)Unpackingobjects:89%(25/28)Unpackingobjects:92%(26/28)Unpackingobjects:96%(27/28)remote:Countingobjects:9%(10/110)remote:Countingobjects:30%(33/110)remote:Countingobjects:51%(57/110)remote:Countingobjects:63%(70/110)remote:Countingobjects:71%(79/110)remote:Countingobjects:73%(81/110)remote:Countingobjects:75%(83/110)remote:Countingobjects:85%(94/110)remote:Compressingobjects:2%(2/67)remote:Compressingobjects:13%(9/67)remote:Compressingobjects:14%(10/67)remote:Compressingobjects:16%(11/67)remote:Compressingobjects:17%(12/67)remote:Compressingobjects:19%(13/67)remote:Compressingobjects:20%(14/67)remote:Compressingobjects:23%(16/67)remote:Compressingobjects:25%(17/67)remote:Compressingobjects:26%(18/67)remote:Compressingobjects:28%(19/67)remote:Compressingobjects:29%(20/67)remote:Compressingobjects:32%(22/67)remote:Compressingobjects:34%(23/67)remote:Compressingobjects:35%(24/67)remote:Compressingobjects:37%(25/67)remote:Compressingobjects:38%(26/67)remote:Compressingobjects:40%(27/67)remote:Compressingobjects:41%(28/67)remote:Compressingobjects:49%(33/67)remote:Compressingobjects:53%(36/67)remote:Compressingobjects:56%(38/67)remote:Compressingobjects:61%(41/67)remote:Compressingobjects:64%(43/67)remote:Compressingobjects:68%(46/67)remote:Compressingobjects:71%(48/67)remote:Compressingobjects:74%(50/67)remote:Compressingobjects:77%(52/67)remote:Compressingobjects:80%(54/67)remote:Compressingobjects:88%(59/67)remote:Compressingobjects:94%(63/67)remote:Compressingobjects:95%(64/67)remote:Compressingobjects:98%(66/67)remote:Compressingobjects:100%(67/67)Receivingobjects:0%(1/727)Receivingobjects:2%(15/727)Receivingobjects:3%(22/727)Receivingobjects:4%(30/727)Receivingobjects:5%(37/727)Receivingobjects:6%(44/727)Receivingobjects:7%(51/727)Receivingobjects:8%(59/727)Receivingobjects:9%(66/727)Receivingobjects:10%(73/727)Receivingobjects:11%(80/727)Receivingobjects:12%(88/727)Receivingobjects:13%(95/727)Receivingobjects:14%(102/727)Receivingobjects:15%(110/727)Receivingobjects:16%(117/727)Receivingobjects:17%(124/727)Receivingobjects:18%(131/727)Receivingobjects:19%(139/727)Receivingobjects:20%(146/727)Receivingobjects:21%(153/727)Receivingobjects:22%(160/727)Receivingobjects:23%(168/727)Receivingobjects:24%(175/727)Receivingobjects:25%(182/727)Receivingobjects:26%(190/727)Receivingobjects:27%(197/727)Receivingobjects:28%(204/727)Receivingobjects:29%(211/727)Receivingobjects:31%(226/727)Receivingobjects:33%(240/727)Receivingobjects:35%(255/727)Receivingobjects:38%(277/727)Receivingobjects:40%(291/727)Receivingobjects:41%(299/727)Receivingobjects:43%(313/727)Receivingobjects:45%(328/727)Receivingobjects:46%(335/727)Receivingobjects:47%(342/727)Receivingobjects:48%(349/727)Receivingobjects:50%(364/727)Receivingobjects:51%(371/727)Receivingobjects:54%(393/727)Receivingobjects:55%(400/727)Receivingobjects:58%(422/727)Receivingobjects:59%(429/727)Receivingobjects:62%(451/727)Receivingobjects:63%(459/727)Receivingobjects:64%(466/727)Receivingobjects:65%(473/727)Receivingobjects:66%(480/727)Receivingobjects:67%(488/727)Receivingobjects:68%(495/727)Receivingobjects:69%(502/727)Receivingobjects:70%(509/727)Receivingobjects:71%(517/727)Receivingobjects:72%(524/727)Receivingobjects:73%(531/727)Receivingobjects:74%(538/727)Receivingobjects:75%(546/727)Receivingobjects:76%(553/727)Receivingobjects:78%(568/727)Receivingobjects:79%(575/727)Receivingobjects:80%(582/727)Receivingobjects:82%(597/727)Receivingobjects:84%(611/727)Receivingobjects:85%(618/727)Receivingobjects:86%(626/727)Receivingobjects:87%(633/727)Receivingobjects:88%(640/727)Receivingobjects:89%(648/727)Receivingobjects:90%(655/727)Receivingobjects:91%(662/727)Receivingobjects:92%(669/727)Receivingobjects:94%(684/727)Receivingobjects:95%(691/727)Receivingobjects:96%(698/727)Receivingobjects:97%(706/727)Receivingobjects:98%(713/727)Receivingobjects:99%(720/727)Resolvingdeltas:0%(0/490)Resolvingdeltas:1%(5/490)Resolvingdeltas:2%(12/490)Resolvingdeltas:12%(59/490)Resolvingdeltas:24%(120/490)Resolvingdeltas:28%(138/490)Resolvingdeltas:33%(166/490)Resolvingdeltas:34%(168/490)Resolvingdeltas:35%(175/490)Resolvingdeltas:37%(184/490)Resolvingdeltas:38%(190/490)Resolvingdeltas:39%(194/490)Resolvingdeltas:43%(215/490)Resolvingdeltas:45%(223/490)Resolvingdeltas:51%(254/490)Resolvingdeltas:52%(258/490)Resolvingdeltas:60%(298/490)Resolvingdeltas:63%(310/490)Resolvingdeltas:65%(320/490)Resolvingdeltas:66%(324/490)Resolvingdeltas:69%(339/490)Resolvingdeltas:72%(354/490)Resolvingdeltas:77%(379/490)Resolvingdeltas:78%(384/490)Resolvingdeltas:81%(398/490)Resolvingdeltas:82%(403/490)Resolvingdeltas:86%(424/490)Resolvingdeltas:88%(432/490)Resolvingdeltas:89%(438/490)Resolvingdeltas:90%(445/490)Resolvingdeltas:92%(451/490)Resolvingdeltas:93%(459/490)Resolvingdeltas:94%(461/490)Resolvingdeltas:95%(466/490)Resolvingdeltas:99%(487/490)Resolvingdeltas:100%(490/490)Receivingobjects:0%(1/178)Receivingobjects:4%(8/178)Receivingobjects:7%(13/178)Receivingobjects:8%(15/178)Receivingobjects:11%(20/178)Receivingobjects:14%(25/178)Receivingobjects:15%(27/178)Receivingobjects:17%(31/178)Receivingobjects:19%(34/178)Receivingobjects:20%(36/178)Receivingobjects:22%(40/178)Receivingobjects:28%(50/178)Receivingobjects:29%(52/178)Receivingobjects:32%(57/178)Receivingobjects:33%(59/178)Receivingobjects:34%(61/178)Receivingobjects:35%(63/178)Receivingobjects:39%(70/178)Receivingobjects:40%(72/178)Receivingobjects:41%(73/178)Receivingobjects:42%(75/178)Receivingobjects:44%(79/178)Receivingobjects:46%(82/178)Receivingobjects:47%(84/178)Receivingobjects:48%(86/178)Receivingobjects:50%(89/178)Receivingobjects:54%(97/178)Receivingobjects:63%(113/178)Receivingobjects:76%(136/178)Receivingobjects:83%(148/178)Receivingobjects:89%(159/178)Receivingobjects:92%(164/178)Receivingobjects:93%(166/178)Receivingobjects:97%(173/178)Receivingobjects:99%(177/178)Resolvingdeltas:0%(0/94)Resolvingdeltas:2%(2/94)Resolvingdeltas:4%(4/94)Resolvingdeltas:34%(32/94)Resolvingdeltas:40%(38/94)Resolvingdeltas:43%(41/94)Resolvingdeltas:51%(48/94)Resolvingdeltas:60%(57/94)Resolvingdeltas:67%(63/94)Resolvingdeltas:71%(67/94)Resolvingdeltas:72%(68/94)Resolvingdeltas:80%(76/94)Resolvingdeltas:85%(80/94)Resolvingdeltas:86%(81/94)Resolvingdeltas:88%(83/94)Resolvingdeltas:100%(94/94)Receivingobjects:1%(4/305)Receivingobjects:6%(19/305)Receivingobjects:7%(22/305)Receivingobjects:8%(25/305)Receivingobjects:9%(28/305)Receivingobjects:12%(37/305)Receivingobjects:15%(46/305)Receivingobjects:17%(52/305)Receivingobjects:18%(55/305)Receivingobjects:20%(61/305)Receivingobjects:21%(65/305)Receivingobjects:22%(68/305)Receivingobjects:24%(74/305)Receivingobjects:26%(80/305)Receivingobjects:27%(83/305)Receivingobjects:29%(89/305)Receivingobjects:30%(92/305)Receivingobjects:31%(95/305)Receivingobjects:32%(98/305)Receivingobjects:33%(101/305)Receivingobjects:34%(104/305)Receivingobjects:35%(107/305)Receivingobjects:37%(113/305)Receivingobjects:38%(116/305)Receivingobjects:39%(119/305)Receivingobjects:40%(122/305)Receivingobjects:42%(129/305)Receivingobjects:43%(132/305)Receivingobjects:44%(135/305)Receivingobjects:45%(138/305)Receivingobjects:47%(144/305)Receivingobjects:50%(153/305)Receivingobjects:57%(174/305)Receivingobjects:61%(187/305)Receivingobjects:62%(190/305)Receivingobjects:65%(199/305)Receivingobjects:68%(208/305)Receivingobjects:71%(217/305)Receivingobjects:72%(220/305)Receivingobjects:76%(232/305)Receivingobjects:77%(235/305)Receivingobjects:84%(257/305)Receivingobjects:87%(266/305)Receivingobjects:92%(281/305)Receivingobjects:94%(287/305)Receivingobjects:96%(293/305)Receivingobjects:98%(299/305)Resolvingdeltas:0%(0/188)Resolvingdeltas:1%(3/188)Resolvingdeltas:3%(6/188)Resolvingdeltas:22%(43/188)Resolvingdeltas:29%(55/188)Resolvingdeltas:52%(99/188)Resolvingdeltas:57%(108/188)Resolvingdeltas:62%(117/188)Resolvingdeltas:63%(119/188)Resolvingdeltas:70%(133/188)Resolvingdeltas:71%(135/188)Resolvingdeltas:79%(149/188)Resolvingdeltas:85%(160/188)Resolvingdeltas:90%(171/188)Resolvingdeltas:93%(176/188)Resolvingdeltas:95%(180/188)Resolvingdeltas:96%(181/188)Resolvingdeltas:98%(186/188)Resolvingdeltas:100%(188/188)Receivingobjects:2%(4/183)Receivingobjects:12%(22/183)Receivingobjects:15%(28/183)Receivingobjects:18%(33/183)Receivingobjects:20%(37/183)Receivingobjects:22%(41/183)Receivingobjects:24%(44/183)Receivingobjects:25%(46/183)Receivingobjects:26%(48/183)Receivingobjects:27%(50/183)Receivingobjects:28%(52/183)Receivingobjects:30%(55/183)Receivingobjects:31%(57/183)Receivingobjects:33%(61/183)Receivingobjects:34%(63/183)Receivingobjects:36%(66/183)Receivingobjects:37%(68/183)Receivingobjects:43%(79/183)Receivingobjects:47%(87/183)Receivingobjects:59%(108/183)Receivingobjects:71%(130/183)Receivingobjects:77%(141/183)Receivingobjects:80%(147/183)Receivingobjects:87%(160/183)Receivingobjects:88%(162/183)Receivingobjects:90%(165/183)Receivingobjects:92%(169/183)Receivingobjects:93%(171/183)Receivingobjects:94%(173/183)Receivingobjects:96%(176/183)Receivingobjects:99%(182/183)Resolvingdeltas:0%(0/108)Resolvingdeltas:3%(4/108)Resolvingdeltas:18%(20/108)Resolvingdeltas:39%(43/108)Resolvingdeltas:53%(58/108)Resolvingdeltas:61%(66/108)Resolvingdeltas:66%(72/108)Resolvingdeltas:71%(77/108)Resolvingdeltas:76%(83/108)Resolvingdeltas:88%(96/108)Resolvingdeltas:93%(101/108)Resolvingdeltas:98%(106/108)Resolvingdeltas:99%(107/108)Resolvingdeltas:100%(108/108)remote:Countingobjects:8%(8/95)remote:Countingobjects:20%(19/95)remote:Countingobjects:38%(37/95)remote:Countingobjects:55%(53/95)remote:Countingobjects:80%(76/95)remote:Countingobjects:93%(89/95)remote:Compressingobjects:2%(2/73)remote:Compressingobjects:4%(3/73)remote:Compressingobjects:10%(8/73)remote:Compressingobjects:13%(10/73)remote:Compressingobjects:16%(12/73)remote:Compressingobjects:17%(13/73)remote:Compressingobjects:19%(14/73)remote:Compressingobjects:21%(16/73)remote:Compressingobjects:23%(17/73)remote:Compressingobjects:24%(18/73)remote:Compressingobjects:26%(19/73)remote:Compressingobjects:27%(20/73)remote:Compressingobjects:28%(21/73)remote:Compressingobjects:36%(27/73)remote:Compressingobjects:63%(46/73)remote:Compressingobjects:71%(52/73)remote:Compressingobjects:72%(53/73)remote:Compressingobjects:76%(56/73)remote:Compressingobjects:80%(59/73)remote:Compressingobjects:82%(60/73)remote:Compressingobjects:83%(61/73)remote:Compressingobjects:87%(64/73)remote:Compressingobjects:90%(66/73)remote:Compressingobjects:93%(68/73)remote:Compressingobjects:95%(70/73)Receivingobjects:0%(1/772)Receivingobjects:1%(8/772)Receivingobjects:2%(16/772)Receivingobjects:3%(24/772)Receivingobjects:4%(31/772)Receivingobjects:5%(39/772)Receivingobjects:6%(47/772)Receivingobjects:7%(55/772)Receivingobjects:8%(62/772)Receivingobjects:9%(70/772)Receivingobjects:10%(78/772)Receivingobjects:11%(85/772)Receivingobjects:12%(93/772)Receivingobjects:13%(101/772)Receivingobjects:14%(109/772)Receivingobjects:15%(116/772)Receivingobjects:16%(124/772)Receivingobjects:17%(132/772)Receivingobjects:18%(139/772)Receivingobjects:19%(147/772)Receivingobjects:20%(155/772)Receivingobjects:21%(163/772)Receivingobjects:22%(170/772)Receivingobjects:23%(178/772)Receivingobjects:24%(186/772)Receivingobjects:25%(193/772)Receivingobjects:26%(201/772)Receivingobjects:27%(209/772)Receivingobjects:28%(217/772)Receivingobjects:29%(224/772)Receivingobjects:30%(232/772)Receivingobjects:31%(240/772)Receivingobjects:32%(248/772)Receivingobjects:33%(255/772)Receivingobjects:34%(263/772)Receivingobjects:35%(271/772)Receivingobjects:36%(278/772)Receivingobjects:39%(302/772)Receivingobjects:40%(309/772)Receivingobjects:43%(332/772)Receivingobjects:45%(348/772)Receivingobjects:48%(371/772)Receivingobjects:49%(379/772)Receivingobjects:50%(386/772)Receivingobjects:51%(394/772)Receivingobjects:52%(402/772)Receivingobjects:53%(410/772)Receivingobjects:54%(417/772)Receivingobjects:56%(433/772)Receivingobjects:57%(441/772)Receivingobjects:58%(448/772)Receivingobjects:59%(456/772)Receivingobjects:62%(479/772)Receivingobjects:64%(495/772)Receivingobjects:67%(518/772)Receivingobjects:68%(525/772)Receivingobjects:69%(533/772)Receivingobjects:71%(549/772)Receivingobjects:72%(556/772)Receivingobjects:74%(572/772)Receivingobjects:75%(579/772)Receivingobjects:79%(610/772)Receivingobjects:80%(618/772)Receivingobjects:81%(626/772)Receivingobjects:82%(634/772)Receivingobjects:83%(641/772)Receivingobjects:84%(649/772)Receivingobjects:85%(657/772)Receivingobjects:86%(664/772)Receivingobjects:87%(672/772)Receivingobjects:88%(680/772)Receivingobjects:89%(688/772)Receivingobjects:90%(695/772)Receivingobjects:91%(703/772)Receivingobjects:92%(711/772)Receivingobjects:93%(718/772)Receivingobjects:94%(726/772)Receivingobjects:95%(734/772)Receivingobjects:97%(749/772)Receivingobjects:100%(772/772)Resolvingdeltas:0%(0/441)Resolvingdeltas:1%(5/441)Resolvingdeltas:6%(30/441)Resolvingdeltas:18%(83/441)Resolvingdeltas:19%(85/441)Resolvingdeltas:24%(109/441)Resolvingdeltas:28%(125/441)Resolvingdeltas:30%(133/441)Resolvingdeltas:32%(143/441)Resolvingdeltas:35%(158/441)Resolvingdeltas:38%(171/441)Resolvingdeltas:39%(173/441)Resolvingdeltas:41%(181/441)Resolvingdeltas:65%(289/441)Resolvingdeltas:66%(293/441)Resolvingdeltas:69%(308/441)Resolvingdeltas:71%(314/441)Resolvingdeltas:73%(322/441)Resolvingdeltas:75%(332/441)Resolvingdeltas:76%(337/441)Resolvingdeltas:78%(348/441)Resolvingdeltas:83%(367/441)Resolvingdeltas:84%(372/441)Resolvingdeltas:87%(387/441)Resolvingdeltas:91%(403/441)Resolvingdeltas:95%(423/441)Resolvingdeltas:96%(426/441)Resolvingdeltas:97%(430/441)Resolvingdeltas:99%(438/441)Resolvingdeltas:100%(441/441)ai@azure:~$exit \ No newline at end of file +ai@azure:~$ai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectures.gitCloninginto'AIReferenceArchitectures'...remote:Enumeratingobjects:28,done.remote:Countingobjects:100%(28/28),done.remote:Compressingobjects:100%(23/23),done.remote:Total28(delta12),reused13(delta4),pack-reused0Unpackingobjects:100%(28/28),done.Checkingconnectivity...Checkingconnectivity...done.Submodule'DeployDeepModelKubernetes'(https://github.com/Microsoft/AKSDeploymentTutorialAML)registeredforpath'DeployDeepModelKubernetes'Submodule'DeployDeepModelPipelines'(https://github.com/Azure/Batch-Scoring-Deep-Learning-Models-With-AML)registeredforpath'DeployDeepModelPipelines'Submodule'DeployMLModelKubernetes'(https://github.com/Microsoft/MLAKSDeployAML)registeredforpath'DeployMLModelKubernetes'Submodule'DeployMLModelPipelines'(https://github.com/Microsoft/AMLBatchScoringPipeline)registeredforpath'DeployMLModelPipelines'Submodule'TrainMLModelHyperdrive'(https://github.com/Microsoft/MLHyperparameterTuning)registeredforpath'TrainMLModelHyperdrive'Cloninginto'DeployDeepModelKubernetes'...remote:Enumeratingobjects:110,done.remote:Countingobjects:100%(110/110),done.remote:Compressingobjects:100%(67/67),done.remote:Total727(delta65),reused81(delta43),pack-reused617Receivingobjects:100%(727/727),3.32MiB|0bytes/s,done.Resolvingdeltas:100%(490/490),done.Submodulepath'DeployDeepModelKubernetes':checkedout'72e4804adaaa5047739c06a1ed1d442ca714af66'Cloninginto'DeployDeepModelPipelines'...remote:Enumeratingobjects:3,done.remote:Countingobjects:100%(3/3),done.remote:Compressingobjects:100%(3/3),done.remote:Total178(delta0),reused3(delta0),pack-reused175Receivingobjects:100%(178/178),6.04MiB|0bytes/s,done.Resolvingdeltas:100%(94/94),done.Submodulepath'DeployDeepModelPipelines':checkedout'c8624daf1670ddd396830774fee9e41b490ba2de'Cloninginto'DeployMLModelKubernetes'...remote:Enumeratingobjects:305,done.remote:Total305(delta0),reused0(delta0),pack-reused305Receivingobjects:100%(305/305),1.15MiB|0bytes/s,done.Resolvingdeltas:100%(188/188),done.Submodulepath'DeployMLModelKubernetes':checkedout'afb172bc65b48de1a139586730581639d2fdede1'Cloninginto'DeployMLModelPipelines'...remote:Enumeratingobjects:183,done.remote:Total183(delta0),reused0(delta0),pack-reused183Receivingobjects:100%(183/183),275.05KiB|0bytes/s,done.Resolvingdeltas:100%(108/108),done.Submodulepath'DeployMLModelPipelines':checkedout'25b73b829c0b2593df24799f8213954e9f010b75'Cloninginto'TrainMLModelHyperdrive'...remote:Enumeratingobjects:95,done.remote:Countingobjects:100%(95/95),done.remote:Compressingobjects:100%(73/73),done.remote:Total772(delta48),reused52(delta22),pack-reused677Receivingobjects:100%(772/772),762.10KiB|0bytes/s,done.Resolvingdeltas:100%(441/441),done.Submodulepath'TrainMLModelHyperdrive':checkedout'99e243209923f437e1143c7e5005c4f8ea7d6895'ai@azure:~$giai@azure:~$gitclone--ai@azure:~$gitclone--recuai@azure:~$gitclone--recursai@azure:~$gitclone--recurse-submai@azure:~$gitclone--recurse-submodulesai@azure:~$gitclone--recurse-submoduleshai@azure:~$gitclone--recurse-submoduleshttai@azure:~$gitclone--recurse-submoduleshttpsai@azure:~$gitclone--recurse-submoduleshttps://giai@azure:~$gitclone--recurse-submoduleshttps://githai@azure:~$gitclone--recurse-submoduleshttps://github.coai@azure:~$gitclone--recurse-submoduleshttps://github.comai@azure:~$gitclone--recurse-submoduleshttps://github.com/Micai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/ai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIRai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIRefai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferencai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchiteai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectuai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectureai@azure:~$gitclone--recurse-submoduleshttps://github.com/Microsoft/AIReferenceArchitectures.giremote:Countingobjects:10%(3/28)remote:Countingobjects:25%(7/28)remote:Countingobjects:60%(17/28)remote:Countingobjects:92%(26/28)remote:Compressingobjects:8%(2/23)remote:Compressingobjects:21%(5/23)remote:Compressingobjects:30%(7/23)remote:Compressingobjects:34%(8/23)remote:Compressingobjects:60%(14/23)Unpackingobjects:3%(1/28)Unpackingobjects:7%(2/28)Unpackingobjects:10%(3/28)Unpackingobjects:14%(4/28)Unpackingobjects:17%(5/28)Unpackingobjects:21%(6/28)Unpackingobjects:25%(7/28)Unpackingobjects:28%(8/28)Unpackingobjects:32%(9/28)Unpackingobjects:35%(10/28)Unpackingobjects:39%(11/28)Unpackingobjects:42%(12/28)Unpackingobjects:46%(13/28)Unpackingobjects:50%(14/28)Unpackingobjects:53%(15/28)Unpackingobjects:57%(16/28)Unpackingobjects:60%(17/28)Unpackingobjects:64%(18/28)Unpackingobjects:67%(19/28)Unpackingobjects:71%(20/28)Unpackingobjects:75%(21/28)Unpackingobjects:78%(22/28)Unpackingobjects:82%(23/28)Unpackingobjects:85%(24/28)Unpackingobjects:89%(25/28)Unpackingobjects:92%(26/28)Unpackingobjects:96%(27/28)remote:Countingobjects:9%(10/110)remote:Countingobjects:30%(33/110)remote:Countingobjects:51%(57/110)remote:Countingobjects:63%(70/110)remote:Countingobjects:71%(79/110)remote:Countingobjects:73%(81/110)remote:Countingobjects:75%(83/110)remote:Countingobjects:85%(94/110)remote:Compressingobjects:2%(2/67)remote:Compressingobjects:13%(9/67)remote:Compressingobjects:14%(10/67)remote:Compressingobjects:16%(11/67)remote:Compressingobjects:17%(12/67)remote:Compressingobjects:19%(13/67)remote:Compressingobjects:20%(14/67)remote:Compressingobjects:23%(16/67)remote:Compressingobjects:25%(17/67)remote:Compressingobjects:26%(18/67)remote:Compressingobjects:28%(19/67)remote:Compressingobjects:29%(20/67)remote:Compressingobjects:32%(22/67)remote:Compressingobjects:34%(23/67)remote:Compressingobjects:35%(24/67)remote:Compressingobjects:37%(25/67)remote:Compressingobjects:38%(26/67)remote:Compressingobjects:40%(27/67)remote:Compressingobjects:41%(28/67)remote:Compressingobjects:49%(33/67)remote:Compressingobjects:53%(36/67)remote:Compressingobjects:56%(38/67)remote:Compressingobjects:61%(41/67)remote:Compressingobjects:64%(43/67)remote:Compressingobjects:68%(46/67)remote:Compressingobjects:71%(48/67)remote:Compressingobjects:74%(50/67)remote:Compressingobjects:77%(52/67)remote:Compressingobjects:80%(54/67)remote:Compressingobjects:88%(59/67)remote:Compressingobjects:94%(63/67)remote:Compressingobjects:95%(64/67)remote:Compressingobjects:98%(66/67)remote:Compressingobjects:100%(67/67)Receivingobjects:0%(1/727)Receivingobjects:2%(15/727)Receivingobjects:3%(22/727)Receivingobjects:4%(30/727)Receivingobjects:5%(37/727)Receivingobjects:6%(44/727)Receivingobjects:7%(51/727)Receivingobjects:8%(59/727)Receivingobjects:9%(66/727)Receivingobjects:10%(73/727)Receivingobjects:11%(80/727)Receivingobjects:12%(88/727)Receivingobjects:13%(95/727)Receivingobjects:14%(102/727)Receivingobjects:15%(110/727)Receivingobjects:16%(117/727)Receivingobjects:17%(124/727)Receivingobjects:18%(131/727)Receivingobjects:19%(139/727)Receivingobjects:20%(146/727)Receivingobjects:21%(153/727)Receivingobjects:22%(160/727)Receivingobjects:23%(168/727)Receivingobjects:24%(175/727)Receivingobjects:25%(182/727)Receivingobjects:26%(190/727)Receivingobjects:27%(197/727)Receivingobjects:28%(204/727)Receivingobjects:29%(211/727)Receivingobjects:31%(226/727)Receivingobjects:33%(240/727)Receivingobjects:35%(255/727)Receivingobjects:38%(277/727)Receivingobjects:40%(291/727)Receivingobjects:41%(299/727)Receivingobjects:43%(313/727)Receivingobjects:45%(328/727)Receivingobjects:46%(335/727)Receivingobjects:47%(342/727)Receivingobjects:48%(349/727)Receivingobjects:50%(364/727)Receivingobjects:51%(371/727)Receivingobjects:54%(393/727)Receivingobjects:55%(400/727)Receivingobjects:58%(422/727)Receivingobjects:59%(429/727)Receivingobjects:62%(451/727)Receivingobjects:63%(459/727)Receivingobjects:64%(466/727)Receivingobjects:65%(473/727)Receivingobjects:66%(480/727)Receivingobjects:67%(488/727)Receivingobjects:68%(495/727)Receivingobjects:69%(502/727)Receivingobjects:70%(509/727)Receivingobjects:71%(517/727)Receivingobjects:72%(524/727)Receivingobjects:73%(531/727)Receivingobjects:74%(538/727)Receivingobjects:75%(546/727)Receivingobjects:76%(553/727)Receivingobjects:78%(568/727)Receivingobjects:79%(575/727)Receivingobjects:80%(582/727)Receivingobjects:82%(597/727)Receivingobjects:84%(611/727)Receivingobjects:85%(618/727)Receivingobjects:86%(626/727)Receivingobjects:87%(633/727)Receivingobjects:88%(640/727)Receivingobjects:89%(648/727)Receivingobjects:90%(655/727)Receivingobjects:91%(662/727)Receivingobjects:92%(669/727)Receivingobjects:94%(684/727)Receivingobjects:95%(691/727)Receivingobjects:96%(698/727)Receivingobjects:97%(706/727)Receivingobjects:98%(713/727)Receivingobjects:99%(720/727)Resolvingdeltas:0%(0/490)Resolvingdeltas:1%(5/490)Resolvingdeltas:2%(12/490)Resolvingdeltas:12%(59/490)Resolvingdeltas:24%(120/490)Resolvingdeltas:28%(138/490)Resolvingdeltas:33%(166/490)Resolvingdeltas:34%(168/490)Resolvingdeltas:35%(175/490)Resolvingdeltas:37%(184/490)Resolvingdeltas:38%(190/490)Resolvingdeltas:39%(194/490)Resolvingdeltas:43%(215/490)Resolvingdeltas:45%(223/490)Resolvingdeltas:51%(254/490)Resolvingdeltas:52%(258/490)Resolvingdeltas:60%(298/490)Resolvingdeltas:63%(310/490)Resolvingdeltas:65%(320/490)Resolvingdeltas:66%(324/490)Resolvingdeltas:69%(339/490)Resolvingdeltas:72%(354/490)Resolvingdeltas:77%(379/490)Resolvingdeltas:78%(384/490)Resolvingdeltas:81%(398/490)Resolvingdeltas:82%(403/490)Resolvingdeltas:86%(424/490)Resolvingdeltas:88%(432/490)Resolvingdeltas:89%(438/490)Resolvingdeltas:90%(445/490)Resolvingdeltas:92%(451/490)Resolvingdeltas:93%(459/490)Resolvingdeltas:94%(461/490)Resolvingdeltas:95%(466/490)Resolvingdeltas:99%(487/490)Resolvingdeltas:100%(490/490)Receivingobjects:0%(1/178)Receivingobjects:4%(8/178)Receivingobjects:7%(13/178)Receivingobjects:8%(15/178)Receivingobjects:11%(20/178)Receivingobjects:14%(25/178)Receivingobjects:15%(27/178)Receivingobjects:17%(31/178)Receivingobjects:19%(34/178)Receivingobjects:20%(36/178)Receivingobjects:22%(40/178)Receivingobjects:28%(50/178)Receivingobjects:29%(52/178)Receivingobjects:32%(57/178)Receivingobjects:33%(59/178)Receivingobjects:34%(61/178)Receivingobjects:35%(63/178)Receivingobjects:39%(70/178)Receivingobjects:40%(72/178)Receivingobjects:41%(73/178)Receivingobjects:42%(75/178)Receivingobjects:44%(79/178)Receivingobjects:46%(82/178)Receivingobjects:47%(84/178)Receivingobjects:48%(86/178)Receivingobjects:50%(89/178)Receivingobjects:54%(97/178)Receivingobjects:63%(113/178)Receivingobjects:76%(136/178)Receivingobjects:83%(148/178)Receivingobjects:89%(159/178)Receivingobjects:92%(164/178)Receivingobjects:93%(166/178)Receivingobjects:97%(173/178)Receivingobjects:99%(177/178)Resolvingdeltas:0%(0/94)Resolvingdeltas:2%(2/94)Resolvingdeltas:4%(4/94)Resolvingdeltas:34%(32/94)Resolvingdeltas:40%(38/94)Resolvingdeltas:43%(41/94)Resolvingdeltas:51%(48/94)Resolvingdeltas:60%(57/94)Resolvingdeltas:67%(63/94)Resolvingdeltas:71%(67/94)Resolvingdeltas:72%(68/94)Resolvingdeltas:80%(76/94)Resolvingdeltas:85%(80/94)Resolvingdeltas:86%(81/94)Resolvingdeltas:88%(83/94)Resolvingdeltas:100%(94/94)Receivingobjects:1%(4/305)Receivingobjects:6%(19/305)Receivingobjects:7%(22/305)Receivingobjects:8%(25/305)Receivingobjects:9%(28/305)Receivingobjects:12%(37/305)Receivingobjects:15%(46/305)Receivingobjects:17%(52/305)Receivingobjects:18%(55/305)Receivingobjects:20%(61/305)Receivingobjects:21%(65/305)Receivingobjects:22%(68/305)Receivingobjects:24%(74/305)Receivingobjects:26%(80/305)Receivingobjects:27%(83/305)Receivingobjects:29%(89/305)Receivingobjects:30%(92/305)Receivingobjects:31%(95/305)Receivingobjects:32%(98/305)Receivingobjects:33%(101/305)Receivingobjects:34%(104/305)Receivingobjects:35%(107/305)Receivingobjects:37%(113/305)Receivingobjects:38%(116/305)Receivingobjects:39%(119/305)Receivingobjects:40%(122/305)Receivingobjects:42%(129/305)Receivingobjects:43%(132/305)Receivingobjects:44%(135/305)Receivingobjects:45%(138/305)Receivingobjects:47%(144/305)Receivingobjects:50%(153/305)Receivingobjects:57%(174/305)Receivingobjects:61%(187/305)Receivingobjects:62%(190/305)Receivingobjects:65%(199/305)Receivingobjects:68%(208/305)Receivingobjects:71%(217/305)Receivingobjects:72%(220/305)Receivingobjects:76%(232/305)Receivingobjects:77%(235/305)Receivingobjects:84%(257/305)Receivingobjects:87%(266/305)Receivingobjects:92%(281/305)Receivingobjects:94%(287/305)Receivingobjects:96%(293/305)Receivingobjects:98%(299/305)Resolvingdeltas:0%(0/188)Resolvingdeltas:1%(3/188)Resolvingdeltas:3%(6/188)Resolvingdeltas:22%(43/188)Resolvingdeltas:29%(55/188)Resolvingdeltas:52%(99/188)Resolvingdeltas:57%(108/188)Resolvingdeltas:62%(117/188)Resolvingdeltas:63%(119/188)Resolvingdeltas:70%(133/188)Resolvingdeltas:71%(135/188)Resolvingdeltas:79%(149/188)Resolvingdeltas:85%(160/188)Resolvingdeltas:90%(171/188)Resolvingdeltas:93%(176/188)Resolvingdeltas:95%(180/188)Resolvingdeltas:96%(181/188)Resolvingdeltas:98%(186/188)Resolvingdeltas:100%(188/188)Receivingobjects:2%(4/183)Receivingobjects:12%(22/183)Receivingobjects:15%(28/183)Receivingobjects:18%(33/183)Receivingobjects:20%(37/183)Receivingobjects:22%(41/183)Receivingobjects:24%(44/183)Receivingobjects:25%(46/183)Receivingobjects:26%(48/183)Receivingobjects:27%(50/183)Receivingobjects:28%(52/183)Receivingobjects:30%(55/183)Receivingobjects:31%(57/183)Receivingobjects:33%(61/183)Receivingobjects:34%(63/183)Receivingobjects:36%(66/183)Receivingobjects:37%(68/183)Receivingobjects:43%(79/183)Receivingobjects:47%(87/183)Receivingobjects:59%(108/183)Receivingobjects:71%(130/183)Receivingobjects:77%(141/183)Receivingobjects:80%(147/183)Receivingobjects:87%(160/183)Receivingobjects:88%(162/183)Receivingobjects:90%(165/183)Receivingobjects:92%(169/183)Receivingobjects:93%(171/183)Receivingobjects:94%(173/183)Receivingobjects:96%(176/183)Receivingobjects:99%(182/183)Resolvingdeltas:0%(0/108)Resolvingdeltas:3%(4/108)Resolvingdeltas:18%(20/108)Resolvingdeltas:39%(43/108)Resolvingdeltas:53%(58/108)Resolvingdeltas:61%(66/108)Resolvingdeltas:66%(72/108)Resolvingdeltas:71%(77/108)Resolvingdeltas:76%(83/108)Resolvingdeltas:88%(96/108)Resolvingdeltas:93%(101/108)Resolvingdeltas:98%(106/108)Resolvingdeltas:99%(107/108)Resolvingdeltas:100%(108/108)remote:Countingobjects:8%(8/95)remote:Countingobjects:20%(19/95)remote:Countingobjects:38%(37/95)remote:Countingobjects:55%(53/95)remote:Countingobjects:80%(76/95)remote:Countingobjects:93%(89/95)remote:Compressingobjects:2%(2/73)remote:Compressingobjects:4%(3/73)remote:Compressingobjects:10%(8/73)remote:Compressingobjects:13%(10/73)remote:Compressingobjects:16%(12/73)remote:Compressingobjects:17%(13/73)remote:Compressingobjects:19%(14/73)remote:Compressingobjects:21%(16/73)remote:Compressingobjects:23%(17/73)remote:Compressingobjects:24%(18/73)remote:Compressingobjects:26%(19/73)remote:Compressingobjects:27%(20/73)remote:Compressingobjects:28%(21/73)remote:Compressingobjects:36%(27/73)remote:Compressingobjects:63%(46/73)remote:Compressingobjects:71%(52/73)remote:Compressingobjects:72%(53/73)remote:Compressingobjects:76%(56/73)remote:Compressingobjects:80%(59/73)remote:Compressingobjects:82%(60/73)remote:Compressingobjects:83%(61/73)remote:Compressingobjects:87%(64/73)remote:Compressingobjects:90%(66/73)remote:Compressingobjects:93%(68/73)remote:Compressingobjects:95%(70/73)Receivingobjects:0%(1/772)Receivingobjects:1%(8/772)Receivingobjects:2%(16/772)Receivingobjects:3%(24/772)Receivingobjects:4%(31/772)Receivingobjects:5%(39/772)Receivingobjects:6%(47/772)Receivingobjects:7%(55/772)Receivingobjects:8%(62/772)Receivingobjects:9%(70/772)Receivingobjects:10%(78/772)Receivingobjects:11%(85/772)Receivingobjects:12%(93/772)Receivingobjects:13%(101/772)Receivingobjects:14%(109/772)Receivingobjects:15%(116/772)Receivingobjects:16%(124/772)Receivingobjects:17%(132/772)Receivingobjects:18%(139/772)Receivingobjects:19%(147/772)Receivingobjects:20%(155/772)Receivingobjects:21%(163/772)Receivingobjects:22%(170/772)Receivingobjects:23%(178/772)Receivingobjects:24%(186/772)Receivingobjects:25%(193/772)Receivingobjects:26%(201/772)Receivingobjects:27%(209/772)Receivingobjects:28%(217/772)Receivingobjects:29%(224/772)Receivingobjects:30%(232/772)Receivingobjects:31%(240/772)Receivingobjects:32%(248/772)Receivingobjects:33%(255/772)Receivingobjects:34%(263/772)Receivingobjects:35%(271/772)Receivingobjects:36%(278/772)Receivingobjects:39%(302/772)Receivingobjects:40%(309/772)Receivingobjects:43%(332/772)Receivingobjects:45%(348/772)Receivingobjects:48%(371/772)Receivingobjects:49%(379/772)Receivingobjects:50%(386/772)Receivingobjects:51%(394/772)Receivingobjects:52%(402/772)Receivingobjects:53%(410/772)Receivingobjects:54%(417/772)Receivingobjects:56%(433/772)Receivingobjects:57%(441/772)Receivingobjects:58%(448/772)Receivingobjects:59%(456/772)Receivingobjects:62%(479/772)Receivingobjects:64%(495/772)Receivingobjects:67%(518/772)Receivingobjects:68%(525/772)Receivingobjects:69%(533/772)Receivingobjects:71%(549/772)Receivingobjects:72%(556/772)Receivingobjects:74%(572/772)Receivingobjects:75%(579/772)Receivingobjects:79%(610/772)Receivingobjects:80%(618/772)Receivingobjects:81%(626/772)Receivingobjects:82%(634/772)Receivingobjects:83%(641/772)Receivingobjects:84%(649/772)Receivingobjects:85%(657/772)Receivingobjects:86%(664/772)Receivingobjects:87%(672/772)Receivingobjects:88%(680/772)Receivingobjects:89%(688/772)Receivingobjects:90%(695/772)Receivingobjects:91%(703/772)Receivingobjects:92%(711/772)Receivingobjects:93%(718/772)Receivingobjects:94%(726/772)Receivingobjects:95%(734/772)Receivingobjects:97%(749/772)Receivingobjects:100%(772/772)Resolvingdeltas:0%(0/441)Resolvingdeltas:1%(5/441)Resolvingdeltas:6%(30/441)Resolvingdeltas:18%(83/441)Resolvingdeltas:19%(85/441)Resolvingdeltas:24%(109/441)Resolvingdeltas:28%(125/441)Resolvingdeltas:30%(133/441)Resolvingdeltas:32%(143/441)Resolvingdeltas:35%(158/441)Resolvingdeltas:38%(171/441)Resolvingdeltas:39%(173/441)Resolvingdeltas:41%(181/441)Resolvingdeltas:65%(289/441)Resolvingdeltas:66%(293/441)Resolvingdeltas:69%(308/441)Resolvingdeltas:71%(314/441)Resolvingdeltas:73%(322/441)Resolvingdeltas:75%(332/441)Resolvingdeltas:76%(337/441)Resolvingdeltas:78%(348/441)Resolvingdeltas:83%(367/441)Resolvingdeltas:84%(372/441)Resolvingdeltas:87%(387/441)Resolvingdeltas:91%(403/441)Resolvingdeltas:95%(423/441)Resolvingdeltas:96%(426/441)Resolvingdeltas:97%(430/441)Resolvingdeltas:99%(438/441)Resolvingdeltas:100%(441/441)ai@azure:~$exit diff --git a/.images/python_training_diag.png b/.images/python_training_diag.png index cbb61888e39fc2b6f82dd5164901e4ad6b53da7d..1a0e6a7d007a2125c0bac2eb9aded28b7a4de361 100644 GIT binary patch literal 94884 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

@VjlG(&N!)&`?&mF@iz=&3(3 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 diff --git a/LICENSE b/LICENSE index 4b1ad51..f27f877 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ - MIT License +MIT License Copyright (c) Microsoft Corporation. All rights reserved. @@ -18,4 +18,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + SOFTWARE diff --git a/README.md b/README.md index c9947b7..1749821 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - # AI Introduction +# AI Introduction Artificial intelligence (AI) is intelligence demonstrated by machines, as opposed to intelligence of humans and other animals. Example tasks in which this is done include speech recognition, computer vision, translation between (natural) languages, as well as other mappings of inputs. AI applications include advanced web search engines (e.g., Google Search), recommendation systems (used by YouTube, Amazon, and Netflix), understanding human speech (such as Siri and Alexa), self-driving cars (e.g., Waymo), generative or creative tools (ChatGPT and AI art), automated decision-making, and competing at the highest level in strategic game systems (such as chess and Go). diff --git a/ai200-architectures/TrainDistributedDeepModel b/ai200-architectures/TrainDistributedDeepModel deleted file mode 160000 index d037c56..0000000 --- a/ai200-architectures/TrainDistributedDeepModel +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d037c568bbd4394fbf2f668937d32122ae5a1a37 diff --git a/ai200-architectures/TrainDistributedDeepModel b/ai200-architectures/TrainDistributedDeepModel new file mode 100644 index 0000000..0bcddee --- /dev/null +++ b/ai200-architectures/TrainDistributedDeepModel @@ -0,0 +1 @@ +data:application/octet-stream;base64,PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iIGRhdGEtdGhlbWU9ImRhcmsiPjxoZWFkPjwhLS1yZW1peC1pc2xhbmQtc3RhcnQtLT48bWV0YSBjaGFyU2V0PSJ1dGYtOCIvPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIvPjxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iM2FLTVhzNlU4TElSM1VwNW1FS00zbGR3d1h4RXIxa09PUlIwdGcxeWUwRSIvPjxtZXRhIG5hbWU9InRpdGxlIiBjb250ZW50PSJJZGVhIHRvIEFwcCBpbiBtaW51dGVzIHdpdGggRHVhbGl0ZSIvPjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJEdWFsaXRlIGlzIHRoZSBmYXN0ZXN0IHdheSBmb3IgeW91IHRvIHR1cm4geW91ciBpZGVhcyBpbnRvIHJlYWxpdHkuIEJ1aWxkIHdlYiBhbmQgbW9iaWxlIGFwcHMsIEFJIGFnZW50cywgZGFzaGJvYXJkcywgYW5kIG1vcmUgd2l0aG91dCBhbnkgY29kaW5nLiIvPjxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJEdWFsaXRlLCBBSSBhcHAgYnVpbGRlciwgbm8tY29kZSwgd2ViIGRldmVsb3BtZW50LCBtb2JpbGUgYXBwcywgQUkgYWdlbnRzLCBkYXNoYm9hcmQgYnVpbGRlciwgRmlnbWEgaW1wb3J0LCBHaXRIdWIgaW1wb3J0LCByYXBpZCBwcm90b3R5cGluZywgYXBwIGRldmVsb3BtZW50Ii8+PG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJEdWFsaXRlIi8+PG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93Ii8+PG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giLz48bWV0YSBuYW1lPSJyZXZpc2l0LWFmdGVyIiBjb250ZW50PSI3IGRheXMiLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYWxwaGEuZHVhbGl0ZS5kZXYiLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IklkZWEgdG8gQXBwIGluIG1pbnV0ZXMgd2l0aCBEdWFsaXRlIi8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJEdWFsaXRlIGlzIHRoZSBmYXN0ZXN0IHdheSBmb3IgeW91IHRvIHR1cm4geW91ciBpZGVhcyBpbnRvIHJlYWxpdHkuIEJ1aWxkIHdlYiBhbmQgbW9iaWxlIGFwcHMsIEFJIGFnZW50cywgZGFzaGJvYXJkcywgYW5kIG1vcmUgd2l0aG91dCBhbnkgY29kaW5nLiIvPjxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hbHBoYS5kdWFsaXRlLmRldi9pbWFnZXMvb2dJbWFnZS5wbmciLz48bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6d2lkdGgiIGNvbnRlbnQ9IjEyMDAiLz48bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6aGVpZ2h0IiBjb250ZW50PSI2MzAiLz48bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2U6YWx0IiBjb250ZW50PSJEdWFsaXRlIC0gQnVpbGQgYXBwcyB3aXRob3V0IGNvZGluZyIvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkR1YWxpdGUiLz48bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIvPjxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIvPjxtZXRhIG5hbWU9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL2FscGhhLmR1YWxpdGUuZGV2Ii8+PG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iSWRlYSB0byBBcHAgaW4gbWludXRlcyB3aXRoIER1YWxpdGUiLz48bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJEdWFsaXRlIGlzIHRoZSBmYXN0ZXN0IHdheSBmb3IgeW91IHRvIHR1cm4geW91ciBpZGVhcyBpbnRvIHJlYWxpdHkuIEJ1aWxkIHdlYiBhbmQgbW9iaWxlIGFwcHMsIEFJIGFnZW50cywgZGFzaGJvYXJkcywgYW5kIG1vcmUgd2l0aG91dCBhbnkgY29kaW5nLiIvPjxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYWxwaGEuZHVhbGl0ZS5kZXYvaW1hZ2VzL29nSW1hZ2UucG5nIi8+PG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZTphbHQiIGNvbnRlbnQ9IkR1YWxpdGUgLSBCdWlsZCBhcHBzIHdpdGhvdXQgY29kaW5nIi8+PGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vYWxwaGEuZHVhbGl0ZS5kZXYiLz48bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzEwMTEwQyIvPjxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyIvPjxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLXN0YXR1cy1iYXItc3R5bGUiIGNvbnRlbnQ9ImJsYWNrLXRyYW5zbHVjZW50Ii8+PG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtdGl0bGUiIGNvbnRlbnQ9IkR1YWxpdGUiLz48dGl0bGU+RHVhbGl0ZTwvdGl0bGU+PG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlRhbGsgd2l0aCBBbHBoYSwgYW4gQUkgRnJvbnRlbmQgRGV2ZWxvcGVyIGZyb20gRHVhbGl0ZSIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy9yb290LWEtQ0tjalJiLmNzcyIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy9SZWFjdFRvYXN0aWZ5LUJoNzZqN2NzLmNzcyIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy90YWlsd2luZC1jb21wYXQtQndoLUJtakUuY3NzIi8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXNzZXRzL2luZGV4LUItcXg4anppLmNzcyIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy94dGVybS1MWm96blg2ci5jc3MiLz48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hc3NldHMvdGhlbWUtdmFyaWFibGVzLUNWQUJubXgwLmNzcyIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnN0cnVtZW50K1NlcmlmOml0YWxAMDsxJmFtcDtkaXNwbGF5PXN3YXAiLz48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii9pbWFnZXMvTG9naW5CR25ldy53ZWJwIiBhcz0iaW1hZ2UiIHR5cGU9ImltYWdlL3dlYnAiLz48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii9pbWFnZXMvRm9vdGVyQkcud2VicCIgYXM9ImltYWdlIiB0eXBlPSJpbWFnZS93ZWJwIi8+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvaW1hZ2VzL25ld2JnLmF2aWYiIGFzPSJpbWFnZSIgdHlwZT0iaW1hZ2Uvd2VicCIvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy9faW5kZXgtQkdZbXM3ZG4uY3NzIi8+PHNjcmlwdD53aW5kb3cuRU5WID0geyJTRU5UUllfRFNOIjoiaHR0cHM6Ly9mMTlhODU2YWVjNTg0NzU2ZTUwMjEyYjIzNTc0ZmM5Y0BvNDUwOTQwNTczODk1ODg0OC5pbmdlc3QudXMuc2VudHJ5LmlvLzQ1MDk0MDU3NTMyNDU2OTYiLCJQT1NUSE9HX0tFWSI6InBoY19RUWszbENZTzBKc3dQTU01bEhiSXpYZjlRRjRWb05nRjR2R0tJV0FvYXduIiwiUE9TVEhPR19IT1NUIjoiaHR0cHM6Ly91cy5pLnBvc3Rob2cuY29tIiwiRUFSTFlfQUNDRVNTX1VSTCI6Imh0dHBzOi8vZ2V0LWVhcmx5LWFjY2Vzcy5kdWFsaXRlLmRldiIsIlBPU1RIT0dfVVNFX1BST1hZIjoiZmFsc2UiLCJWSVRFX1FVRVNUSU9OTkFJUkVfU0hFRVRfSUQiOiJSU0dxdlJ3S0tDbVZZWEVBIiwiVklURV9RVUVTVElPTk5BSVJFX1RBQl9JRCI6InRlbXAiLCJWSVRFX1FVRVNUSU9OTkFJUkVfVVNFUk5BTUUiOiJtdWt1bF9kdWFsaXRlIn07PC9zY3JpcHQ+PHNjcmlwdD5zZXRUdXRvcmlhbEtpdFRoZW1lKCk7CgpmdW5jdGlvbiBzZXRUdXRvcmlhbEtpdFRoZW1lKCkgewpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJyk/LnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsICdkYXJrJyk7Cn08L3NjcmlwdD48c2NyaXB0IGFzeW5jPSIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLUpSUkUyRjhaMk4iPjwvc2NyaXB0PjxzY3JpcHQ+CiAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogICAgICAgICAgICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgICAgICAgICAgIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7CiAgICAgICAgICAgIGd0YWcoJ2NvbmZpZycsICdHLUpSUkUyRjhaMk4nKTsKICAgICAgICAgIDwvc2NyaXB0PjwhLS1yZW1peC1pc2xhbmQtZW5kLS0+PC9oZWFkPjxib2R5IGNsYXNzPSJiZy1hbHBoYS1iYWNrZ3JvdW5kLXByaW1hcnkgbS0wIHAtMCI+PGRpdiBpZD0icm9vdCIgY2xhc3M9InctZnVsbCI+PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwO21pbi1oZWlnaHQ6MTAwdmg7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwdnc7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW4iPjxkaXYgY2xhc3M9InRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0zMDAgb3BhY2l0eS0wIGFic29sdXRlIGluc2V0LTAgdy1mdWxsIGgtZnVsbCI+PC9kaXY+PGRpdiBjbGFzcz0icmVsYXRpdmUgei0xMCI+PGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBoLWZ1bGwgdy1mdWxsIj48L2Rpdj48L2Rpdj48c2NyaXB0PigoU1RPUkFHRV9LRVkyLCByZXN0b3JlS2V5KSA9PiB7CiAgICBpZiAoIXdpbmRvdy5oaXN0b3J5LnN0YXRlIHx8ICF3aW5kb3cuaGlzdG9yeS5zdGF0ZS5rZXkpIHsKICAgICAgbGV0IGtleTIgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDMyKS5zbGljZSgyKTsKICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsKICAgICAgICBrZXk6IGtleTIKICAgICAgfSwgIiIpOwogICAgfQogICAgdHJ5IHsKICAgICAgbGV0IHBvc2l0aW9ucyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWTIpIHx8ICJ7fSIpOwogICAgICBsZXQgc3RvcmVkWSA9IHBvc2l0aW9uc1tyZXN0b3JlS2V5IHx8IHdpbmRvdy5oaXN0b3J5LnN0YXRlLmtleV07CiAgICAgIGlmICh0eXBlb2Ygc3RvcmVkWSA9PT0gIm51bWJlciIpIHsKICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgc3RvcmVkWSk7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGVycm9yNCkgewogICAgICBjb25zb2xlLmVycm9yKGVycm9yNCk7CiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVkyKTsKICAgIH0KICB9KSgicG9zaXRpb25zIiwgbnVsbCk8L3NjcmlwdD48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvbWFuaWZlc3QtMThhMzExZGYuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvZW50cnkuY2xpZW50LUR5V3U2aXFLLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2pzeC1ydW50aW1lLURCWjUzdElxLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2FwaS5nZXQtbmV0bGlmeS1hY2Nlc3MtY29udHJvbC10b2tlbi1DZUUtbXBBZy5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9pbmRleC1ELVBQaTBIRS5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9wb3N0aG9nLW1hbmFnZXItQ0pYX2RtT18uanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvcHJlbG9hZC1oZWxwZXItQ1BPVmJ3alUuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvbm9ybWFsaXplLUNvNjB6SnVyLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2kxOG5JbnN0YW5jZS1CNmpfRE56Yy5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9jb21wb25lbnRzLURGRlhvLWJYLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2V4cG9ydHMtRDV6TGpZWlkuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvcGVyZm9ybWFuY2UtZ25mVTRlU1ouanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvdHJhY2UtRGZvM3ZXRHYuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvYnJlYWRjcnVtYnMtRGlTNW1WanouanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvbW9kdWxlLUNSdkVkLVlXLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2luZGV4LUJoRkxzczh4LmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2luZGV4LURUa2lXMVVULmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3RoZW1lLUR5TjctYnM4LmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3JlYWN0LXRvYXN0aWZ5LmVzbS1CRzkzWm9NRi5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9IZWFkZXIuY2xpZW50LUNMUTBKWmNlLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3VzZVN0b3JhZ2VTdGF0dXMtQlRXR1doenAuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvdXNlci1EcHdmUDRhbi5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9tb2JpbGUtRC1JRldINE0uanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvdXNlVHJhbnNsYXRpb24tQ1NzMDZmRFouanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvcnVsZXMtQ2dfT1RnQUIuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvaW5kZXgtQmVTOFdrSjUuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvZGItUjJnMUs4RDguanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvaW5kZXgtRGsweXN2XzUuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvUHJpY2luZ1NlY3Rpb24tQmc1QU1YcEMuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvZm9sZGVyLUlvWThXNkxFLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3BsYW5OYW1lQ2xlYW5lci1CWF9jSUlKeS5qcyIvPjxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgaHJlZj0iL2Fzc2V0cy9Mb2FkaW5nLUMzckY4M1p3LmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3NlbGVjdGlvblN0b3JlLUNleFlYLWtyLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2luZGV4LW9iNmhROG5ULmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2luZGV4LURiN1psR29jLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL3Jvb3QtZGNKWmktZHEuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvX2luZGV4LUNkdVBwUW9uLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2luZGV4LUJtSU5nQXVlLmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL0NvbmZpcm1hdGlvbkRpYWxvZy5jbGllbnQtQjE2eXRva1QuanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvSWNvbnNNYXBwaW5nLURGeUxtRE15LmpzIi8+PGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBocmVmPSIvYXNzZXRzL2xvYWRlci1jaXJjbGUtREI5NUtISm4uanMiLz48bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGhyZWY9Ii9hc3NldHMvX2luZGV4LV9OYUo4bW5ZLmpzIi8+PHNjcmlwdD53aW5kb3cuX19yZW1peENvbnRleHQgPSB7ImJhc2VuYW1lIjoiLyIsImZ1dHVyZSI6eyJ2M19mZXRjaGVyUGVyc2lzdCI6dHJ1ZSwidjNfcmVsYXRpdmVTcGxhdFBhdGgiOnRydWUsInYzX3Rocm93QWJvcnRSZWFzb24iOnRydWUsInYzX3JvdXRlQ29uZmlnIjpmYWxzZSwidjNfc2luZ2xlRmV0Y2giOmZhbHNlLCJ2M19sYXp5Um91dGVEaXNjb3ZlcnkiOmZhbHNlLCJ1bnN0YWJsZV9vcHRpbWl6ZURlcHMiOmZhbHNlfSwiaXNTcGFNb2RlIjpmYWxzZSwic3RhdGUiOnsibG9hZGVyRGF0YSI6eyJyb290Ijp7ImJhc2VVcmwiOiJodHRwczovL2dldC1lYXJseS1hY2Nlc3MuZHVhbGl0ZS5kZXYiLCJuZXdEb21haW4iOiJodHRwczovL2FscGhhLmR1YWxpdGUuZGV2IiwicGF5bWVudFVybCI6Imh0dHBzOi8vcGF5bWVudHMuZHVhbGl0ZS5kZXYiLCJjdXJyZW5jeSI6IkdCUCIsIkVOViI6eyJTRU5UUllfRFNOIjoiaHR0cHM6Ly9mMTlhODU2YWVjNTg0NzU2ZTUwMjEyYjIzNTc0ZmM5Y0BvNDUwOTQwNTczODk1ODg0OC5pbmdlc3QudXMuc2VudHJ5LmlvLzQ1MDk0MDU3NTMyNDU2OTYiLCJQT1NUSE9HX0tFWSI6InBoY19RUWszbENZTzBKc3dQTU01bEhiSXpYZjlRRjRWb05nRjR2R0tJV0FvYXduIiwiUE9TVEhPR19IT1NUIjoiaHR0cHM6Ly91cy5pLnBvc3Rob2cuY29tIiwiRUFSTFlfQUNDRVNTX1VSTCI6Imh0dHBzOi8vZ2V0LWVhcmx5LWFjY2Vzcy5kdWFsaXRlLmRldiIsIlBPU1RIT0dfVVNFX1BST1hZIjoiZmFsc2UiLCJWSVRFX1FVRVNUSU9OTkFJUkVfU0hFRVRfSUQiOiJSU0dxdlJ3S0tDbVZZWEVBIiwiVklURV9RVUVTVElPTk5BSVJFX1RBQl9JRCI6InRlbXAiLCJWSVRFX1FVRVNUSU9OTkFJUkVfVVNFUk5BTUUiOiJtdWt1bF9kdWFsaXRlIn0sInRva2VuIjoiNWNiNTdhYzMtYjczMS00YzQzLWJmYzgtMjk0NzU5NTk1MzMzIiwiYWNjZXNzVG9rZW4iOiJleUpoYkdjaU9pSklVekkxTmlKOS5leUpwWkNJNkltOTBjRjkwYjI5c2MxOXJaVzV1ZVc1M2IydHZlV1ZmWTI5dFh6RTNOalU1TlRreU16Y3dOalFpTENKbGJXRnBiQ0k2SW5SdmIyeHpRR3RsYm01NWJuZHZhMjk1WlM1amIyMGlMQ0p3Y205MmFXUmxjaUk2SW05MGNDSXNJbkJwWTNSMWNtVWlPaUlpTENKcFlYUWlPakUzTmpVNU5Ua3lNemNzSW1WNGNDSTZNVGMzTXpjek5USXpOMzAueXpHSzNETkJMbTJybVJhamRPRk5lVmI1cGlWX3lwZU9ObGRqd1ZfUS05MCIsInVzZXIiOnsiaWQiOiJvdHBfdG9vbHNfa2Vubnlud29rb3llX2NvbV8xNzY1OTU5MjM3MDY0IiwiZW1haWwiOiJ0b29sc0BrZW5ueW53b2tveWUuY29tIiwicHJvdmlkZXIiOiJvdHAiLCJwaWN0dXJlIjoiIn0sInByb21wdCI6IiIsInVzZXJEYXRhIjp7ImVtYWlsIjoidG9vbHNAa2Vubnlud29rb3llLmNvbSIsIm1heFByb21wdHMiOiIxMDAwIiwicHJvbXB0c1VzZWQiOiI2NDAiLCJpc1N1YnNjcmliZWQiOnRydWUsInRvcFVwUHJvbXB0cyI6IjAiLCJ0b3BVcFByb21wdHNVc2VkIjoiMCIsInBsYW5OYW1lIjoiTGF1bmNoLURpc2NvdW50ZWQtTW9udGhseSIsImNyZWF0ZWRfYXQiOiIyMDI1LTEwLTI1VDIyOjM4OjA1LjI5NloiLCJpbnZpdGVDb2RlIjoiI1RPT0FMUDM4NiIsIm5hbWUiOiJ0b29scyIsInBob3RvVXJsIjoiIn19LCJyb3V0ZXMvX2luZGV4Ijp7IkZJR01BX0NMSUVOVF9JRCI6IlFnaHRGNnJBWUJ5NVpCN0ZwcWNGVjIiLCJGSUdNQV9SRURJUkVDVF9VUkkiOiJodHRwczovL2FscGhhLmR1YWxpdGUuZGV2L2xvZ2luIiwiUFJPRF9CQVNFX1VSTCI6Imh0dHBzOi8vZ2V0LWVhcmx5LWFjY2Vzcy5kdWFsaXRlLmRldiIsIk5FWFRfUFVCTElDX05FVExJRllfQ0xJRU5UX0lEIjoiVGJQSDMtZ0k4Y05ZOFRqeExqZ1lVUkp2MFYtbjdUM21VcTdJanFhNzFVcyIsIk5FWFRfUFVCTElDX05FVExJRllfQ0xJRU5UX1NFQ1JFVCI6IjNjNUNBekt2RFdZTVZMVUczVkVfcVdUY1phQ1lBbkVzVFVoWG1KNkJ1VzQiLCJORVhUX1BVQkxJQ19ORVRMSUZZX0FQUF9VUkwiOiJodHRwczovL2FscGhhLmR1YWxpdGUuZGV2L25ldGxpZnkvYXV0aCIsIk5FWFRfUFVCTElDX0dJVEhVQl9SRVBPIjoiZHVhbGl0ZWluZGlhL2FscGhhIiwiTkVYVF9QVUJMSUNfR0lUSFVCX1JFRElSRUNUX1VSSSI6Imh0dHBzOi8vYWxwaGEuZHVhbGl0ZS5kZXYvZ2l0aHViL2NhbGxiYWNrIiwiR0lUSFVCX0NMSUVOVF9TRUNSRVQiOiIwZjMyNDY1MThmM2QwYmU0NWU2MmQ0YjY2N2E2ZGM2Y2MwYjc1ZmNjIiwiR0lUSFVCX0NMSUVOVF9JRCI6Ik92MjNsaVFLdmdHQTY5UEJkbGlyIiwiTkVXX0RPTUFJTiI6Imh0dHBzOi8vYWxwaGEuZHVhbGl0ZS5kZXYiLCJWSVRFX1BVQkxJQ19QQVlNRU5UX1VSTCI6Imh0dHBzOi8vcGF5bWVudHMuZHVhbGl0ZS5kZXYiLCJ0b2tlbiI6IjVjYjU3YWMzLWI3MzEtNGM0My1iZmM4LTI5NDc1OTU5NTMzMyJ9fSwiYWN0aW9uRGF0YSI6bnVsbCwiZXJyb3JzIjpudWxsfX07X19yZW1peENvbnRleHQucCA9IGZ1bmN0aW9uKHYsZSxwLHgpIHsKICBpZiAodHlwZW9mIGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICB4PW5ldyBFcnJvcihlLm1lc3NhZ2UpOwogICAgeC5zdGFjaz1lLnN0YWNrOwogICAgcD1Qcm9taXNlLnJlamVjdCh4KTsKICB9IGVsc2UgewogICAgcD1Qcm9taXNlLnJlc29sdmUodik7CiAgfQogIHJldHVybiBwOwp9OwpfX3JlbWl4Q29udGV4dC5uID0gZnVuY3Rpb24oaSxrKSB7CiAgX19yZW1peENvbnRleHQudCA9IF9fcmVtaXhDb250ZXh0LnQgfHwge307CiAgX19yZW1peENvbnRleHQudFtpXSA9IF9fcmVtaXhDb250ZXh0LnRbaV0gfHwge307CiAgbGV0IHAgPSBuZXcgUHJvbWlzZSgociwgZSkgPT4ge19fcmVtaXhDb250ZXh0LnRbaV1ba10gPSB7cjoodik9PntyKHYpO30sZToodik9PntlKHYpO319O30pOwoKICByZXR1cm4gcDsKfTsKX19yZW1peENvbnRleHQuciA9IGZ1bmN0aW9uKGksayx2LGUscCx4KSB7CiAgcCA9IF9fcmVtaXhDb250ZXh0LnRbaV1ba107CiAgaWYgKHR5cGVvZiBlICE9PSAndW5kZWZpbmVkJykgewogICAgeD1uZXcgRXJyb3IoZS5tZXNzYWdlKTsKICAgIHguc3RhY2s9ZS5zdGFjazsKICAgIHAuZSh4KTsKICB9IGVsc2UgewogICAgcC5yKHYpOwogIH0KfTtPYmplY3QuYXNzaWduKF9fcmVtaXhDb250ZXh0LnN0YXRlLmxvYWRlckRhdGFbInJvb3QiXSwge30pOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ibW9kdWxlIiBhc3luYz0iIj5pbXBvcnQgIi9hc3NldHMvbWFuaWZlc3QtMThhMzExZGYuanMiOwppbXBvcnQgKiBhcyByb3V0ZTAgZnJvbSAiL2Fzc2V0cy9yb290LWRjSlppLWRxLmpzIjsKaW1wb3J0ICogYXMgcm91dGUxIGZyb20gIi9hc3NldHMvX2luZGV4LV9OYUo4bW5ZLmpzIjsKCndpbmRvdy5fX3JlbWl4Um91dGVNb2R1bGVzID0geyJyb290Ijpyb3V0ZTAsInJvdXRlcy9faW5kZXgiOnJvdXRlMX07CgppbXBvcnQoIi9hc3NldHMvZW50cnkuY2xpZW50LUR5V3U2aXFLLmpzIik7PC9zY3JpcHQ+PGRpdiBjbGFzcz0iVG9hc3RpZnkiPjwvZGl2PjxkaXYgY2xhc3M9ImZpeGVkIGJvdHRvbS00IGxlZnQtNCB6LTUwIj48L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENsb3VkZmxhcmUgV2ViIEFuYWx5dGljcyAtLT48c2NyaXB0IGRlZmVyIHNyYz0naHR0cHM6Ly9zdGF0aWMuY2xvdWRmbGFyZWluc2lnaHRzLmNvbS9iZWFjb24ubWluLmpzJyBkYXRhLWNmLWJlYWNvbj0neyJ0b2tlbiI6ICI1ZmU3NDRkZDFhZDE0NTU2YjQ3ZjgwMTdiM2ZhMWFkMSJ9Jz48L3NjcmlwdD48IS0tIEVuZCBDbG91ZGZsYXJlIFdlYiBBbmFseXRpY3MgLS0+PC9ib2R5PjwvaHRtbD4= diff --git a/index.html b/index.html new file mode 100644 index 0000000..1175191 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + + + Microsoft AI Open Source Collection + + + + + + + +

+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..9a11a10 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "microsoft-ai-portal", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "lucide-react": "^0.344.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "framer-motion": "^11.0.8", + "clsx": "^2.1.0", + "tailwind-merge": "^2.2.1" + }, + "devDependencies": { + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.18", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "typescript": "^5.2.2", + "vite": "^5.1.6" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..1df9499 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Navbar } from './components/Navbar'; +import { Hero } from './components/Hero'; +import { ResourceSection } from './components/ResourceSection'; +import { Footer } from './components/Footer'; +import { resources } from './data/resources'; + +function App() { + return ( +
+ +
+ +
+ {resources.map((category, index) => ( + + ))} +
+
+
+
+ ); +} + +export default App; diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..dd183ee --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +export const Footer: React.FC = () => { + return ( +
+
+
+

+ © {new Date().getFullYear()} Microsoft AI Open Source Collection. All rights reserved. +

+

+ This portal is a frontend contribution to improve the accessibility of the Microsoft AI repository. +

+
+
+
+ ); +}; diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx new file mode 100644 index 0000000..beee98c --- /dev/null +++ b/src/components/Hero.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { motion } from 'framer-motion'; +import { ArrowRight } from 'lucide-react'; + +export const Hero: React.FC = () => { + return ( +
+ ); +}; diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 0000000..c18ae65 --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Github, Menu } from 'lucide-react'; + +export const Navbar: React.FC = () => { + return ( + + ); +}; diff --git a/src/components/ResourceSection.tsx b/src/components/ResourceSection.tsx new file mode 100644 index 0000000..b4638c2 --- /dev/null +++ b/src/components/ResourceSection.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { ResourceCategory } from '../data/resources'; +import { ExternalLink } from 'lucide-react'; +import { motion } from 'framer-motion'; + +interface Props { + category: ResourceCategory; + index: number; +} + +export const ResourceSection: React.FC = ({ category, index }) => { + const isEven = index % 2 === 0; + + return ( +
+
+
+

{category.title}

+

{category.description}

+
+ +
+ {category.items.map((item, itemIndex) => { + const Icon = item.icon; + return ( + +
+ {Icon && } +
+ +

+ {item.title} +

+ +

+ {item.description} +

+ +
+ {item.tags.map(tag => ( + + {tag} + + ))} +
+ +
+ +
+
+ ); + })} +
+
+
+ ); +}; diff --git a/src/data/resources.ts b/src/data/resources.ts new file mode 100644 index 0000000..854c2da --- /dev/null +++ b/src/data/resources.ts @@ -0,0 +1,189 @@ +import { BookOpen, Code2, Layers, Cpu, Database, Cloud, Terminal, BrainCircuit } from 'lucide-react'; + +export interface ResourceItem { + id: string; + title: string; + description: string; + url: string; + tags: string[]; + icon?: any; +} + +export interface ResourceCategory { + id: string; + title: string; + description: string; + items: ResourceItem[]; +} + +export const resources: ResourceCategory[] = [ + { + id: 'ai100', + title: 'AI100 - Samples', + description: 'A collection of open source Python repositories created by Microsoft product teams focusing on AI services.', + items: [ + { + id: 'azure-ml-sdk', + title: 'Azure ML Python SDK', + description: 'Python notebooks with ML and deep learning examples with Azure Machine Learning.', + url: 'https://github.com/Azure/MachineLearningNotebooks', + tags: ['Python', 'Azure ML', 'Notebooks'], + icon: Code2 + }, + { + id: 'cognitive-services', + title: 'Azure Cognitive Services Python SDK', + description: 'Learn how to use the Cognitive Services Python SDK with these samples.', + url: 'https://github.com/Azure-Samples/cognitive-services-python-sdk-samples', + tags: ['Python', 'Cognitive Services', 'SDK'], + icon: BrainCircuit + }, + { + id: 'intelligent-kiosk', + title: 'Azure Intelligent Kiosk', + description: 'Demos showcasing workflows and experiences built on top of Microsoft Cognitive Services.', + url: 'https://github.com/microsoft/Cognitive-Samples-IntelligentKiosk', + tags: ['Demos', 'Workflows', 'Cognitive Services'], + icon: Layers + }, + { + id: 'mml-spark', + title: 'MML Spark Samples', + description: 'Ecosystem of tools aimed towards expanding the distributed computing framework Apache Spark.', + url: 'https://github.com/Azure/mmlspark/tree/master/notebooks/samples', + tags: ['Spark', 'Distributed Computing', 'MMLSpark'], + icon: Database + }, + { + id: 'seismic-dl', + title: 'Seismic Deep Learning Samples', + description: 'Deep Learning for Seismic Imaging and Interpretation.', + url: 'https://github.com/microsoft/seismic-deeplearning/', + tags: ['Deep Learning', 'Seismic', 'Imaging'], + icon: ActivityIcon + } + ] + }, + { + id: 'ai200', + title: 'AI200 - Reference Architectures', + description: 'Architectures arranged by scenario, including considerations for scalability, availability, manageability, and security.', + items: [ + { + id: 'classic-ml-k8s', + title: 'Deploy Classic ML Model on Kubernetes', + description: 'Train LightGBM model locally using Azure ML, deploy on Kubernetes or IoT Edge for real-time scoring.', + url: 'https://github.com/microsoft/MLAKSDeployAML', + tags: ['Python', 'CPU', 'Real-Time Scoring', 'Kubernetes'], + icon: Cloud + }, + { + id: 'dl-k8s', + title: 'Deploy Deep Learning Model on Kubernetes', + description: 'Deploy image classification model on Kubernetes or IoT Edge for real-time scoring using Azure ML.', + url: 'https://github.com/microsoft/AKSDeploymentTutorialAML', + tags: ['Python', 'Keras', 'Real-Time Scoring', 'Kubernetes'], + icon: Cloud + }, + { + id: 'hyperparameter', + title: 'Hyperparameter Tuning', + description: 'Train LightGBM model locally and run Hyperparameter tuning using Hyperdrive in Azure ML.', + url: 'https://github.com/Microsoft/MLHyperparameterTuning', + tags: ['Python', 'CPU', 'Training', 'Hyperdrive'], + icon: Cpu + }, + { + id: 'dl-pipelines', + title: 'Deploy Deep Learning Model on Pipelines', + description: 'Deploy PyTorch style transfer model for batch scoring using Azure ML Pipelines.', + url: 'https://github.com/Azure/Batch-Scoring-Deep-Learning-Models-With-AML', + tags: ['Python', 'GPU', 'Batch Scoring', 'PyTorch'], + icon: Layers + }, + { + id: 'classic-ml-pipelines', + title: 'Deploy Classic ML Model on Pipelines', + description: 'Deploy one-class SVM for batch scoring anomaly detection using Azure ML Pipelines.', + url: 'https://github.com/Microsoft/AMLBatchScoringPipeline', + tags: ['Python', 'CPU', 'Batch Scoring', 'SVM'], + icon: Layers + }, + { + id: 'r-ml-k8s', + title: 'Deploy R ML Model on Kubernetes', + description: 'Deploy ML model for real-time scoring on Kubernetes.', + url: 'https://github.com/Azure/RealtimeRDeployment', + tags: ['R', 'CPU', 'Real-Time Scoring', 'Kubernetes'], + icon: Terminal + }, + { + id: 'spark-databricks', + title: 'Deploy Spark ML Model on Databricks', + description: 'Deploy a classification model for batch scoring using Databricks.', + url: 'https://github.com/Azure/BatchSparkScoringPredictiveMaintenance', + tags: ['Python', 'Spark', 'Batch Scoring', 'Databricks'], + icon: Database + } + ] + }, + { + id: 'ai300', + title: 'AI300 - Best Practices', + description: 'Best practices arranged by topic, including open source methods and considerations for production.', + items: [ + { + id: 'cv', + title: 'Computer Vision', + description: 'Accelerate the development of computer vision applications with examples and guidelines.', + url: 'https://github.com/microsoft/computervision', + tags: ['Computer Vision', 'Best Practices'], + icon: BookOpen + }, + { + id: 'nlp', + title: 'Natural Language Processing', + description: 'State-of-the-art methods and common scenarios for text and language problems.', + url: 'https://github.com/microsoft/nlp', + tags: ['NLP', 'Text', 'Language'], + icon: BookOpen + }, + { + id: 'recommenders', + title: 'Recommenders', + description: 'Examples and best practices for building recommendation systems (Jupyter notebooks).', + url: 'https://github.com/microsoft/recommenders', + tags: ['Recommenders', 'Jupyter'], + icon: BookOpen + }, + { + id: 'mlops', + title: 'MLOps', + description: 'MLOps empowers data scientists and app developers to help bring ML models to production.', + url: 'https://github.com/microsoft/MLOps', + tags: ['MLOps', 'Production', 'DevOps'], + icon: BookOpen + } + ] + } +]; + +// Helper component for icon fallback +function ActivityIcon(props: any) { + return ( + + + + ); +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..d6e34ea --- /dev/null +++ b/src/index.css @@ -0,0 +1,29 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + body { + @apply font-sans; + } +} + +/* Custom scrollbar for a cleaner look */ +::-webkit-scrollbar { + width: 8px; +} + +::-webkit-scrollbar-track { + background: #f1f5f9; +} + +::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..cc43103 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,30 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: { + colors: { + primary: { + 50: '#eff6ff', + 100: '#dbeafe', + 200: '#bfdbfe', + 300: '#93c5fd', + 400: '#60a5fa', + 500: '#3b82f6', + 600: '#2563eb', + 700: '#1d4ed8', + 800: '#1e40af', + 900: '#1e3a8a', + 950: '#172554', + } + }, + fontFamily: { + sans: ['Inter', 'system-ui', 'sans-serif'], + } + }, + }, + plugins: [], +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4ed36bf --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "baseUrl": "./src", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..42872c5 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..e2f45a7 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import path from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, +})