Last active
March 18, 2020 06:26
-
-
Save spinaki/144e0698aa7922ea0937ba5ce88db42a to your computer and use it in GitHub Desktop.
FastAI2 CourseV4 AWS Sagemaker Cloudfront Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Description: "Creates the SageMaker resources to run the fast.ai v4 (2020) course on a SageMaker notebook instance." | |
Parameters: | |
NotebookName: | |
Type: String | |
Default: fastai2 | |
Description: Enter the name of the SageMaker notebook instance. Deafault is fastai2. | |
InstanceType: | |
Type: String | |
Default: ml.p2.xlarge | |
AllowedValues: | |
- ml.p2.xlarge | |
- ml.p3.2xlarge | |
Description: Enter ml.p2.xlarge or ml.p3.2xlarge. Default is ml.p2.xlarge. | |
VolumeSize: | |
Type: Number | |
Default: 50 | |
MinValue: 5 | |
MaxValue: 16384 | |
ConstraintDescription: Must be an integer between 5 (GB) and 16384 (16 TB). | |
Description: Enter the size of the EBS volume in GB. | |
Resources: | |
SageMakerIamRole: | |
Type: "AWS::IAM::Role" | |
Properties: | |
AssumeRolePolicyDocument: | |
Version: "2012-10-17" | |
Statement: | |
- | |
Effect: Allow | |
Principal: | |
Service: sagemaker.amazonaws.com | |
Action: sts:AssumeRole | |
Path: "/" | |
ManagedPolicyArns: | |
- "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess" | |
FastaiNbLifecycleConfig: | |
Type: "AWS::SageMaker::NotebookInstanceLifecycleConfig" | |
Properties: | |
OnCreate: | |
- Content: | |
Fn::Base64: | | |
#!/bin/bash | |
sudo -H -i -u ec2-user bash << EOF | |
# create symlinks to EBS volume | |
echo "Creating symlinks" | |
mkdir /home/ec2-user/SageMaker/.torch && ln -s /home/ec2-user/SageMaker/.torch /home/ec2-user/.torch | |
mkdir /home/ec2-user/SageMaker/.fastai && ln -s /home/ec2-user/SageMaker/.fastai /home/ec2-user/.fastai | |
# clone the course notebooks | |
echo "Clone the course repo" | |
git clone https://github.com/fastai/course-v4.git /home/ec2-user/SageMaker/course-v4 | |
echo "Finished running onCreate script" | |
EOF | |
OnStart: | |
- Content: | |
Fn::Base64: | | |
#!/bin/bash | |
sudo -H -i -u ec2-user bash << EOF | |
echo "Creating symlinks" | |
[ ! -L "/home/ec2-user/.torch" ] && ln -s /home/ec2-user/SageMaker/.torch /home/ec2-user/.torch | |
[ ! -L "/home/ec2-user/.fastai" ] && ln -s /home/ec2-user/SageMaker/.fastai /home/ec2-user/.fastai | |
echo "install fastai dependencies https://github.com/fastai/fastai2" | |
conda install -y -c fastai -c pytorch fastai | |
echo "Install a new kernel for fastai with name 'Python 3'" | |
python -m ipykernel install --name 'fastai' --display-name 'Python 3' --user | |
# uncomment if you want to update PyTorch on every start | |
#echo "Update PyTorch library" | |
#conda install -y pytorch torchvision -c pytorch | |
echo "Update fastai library" | |
pip install fastai2 | |
echo "Install the deps for the course" | |
pip install fastai2>=0.0.11 graphviz ipywidgets matplotlib nbdev>=0.2.12 pandas scikit_learn azure-cognitiveservices-search-imagesearch sentencepiece | |
echo "Install jupyter nbextension" | |
source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv | |
pip install jupyter_contrib_nbextensions | |
jupyter contrib nbextensions install --user | |
echo "Restarting jupyter notebook server" | |
pkill -f jupyter-notebook | |
echo "Getting latest version of fastai course" | |
cd /home/ec2-user/SageMaker/course-v4 | |
git pull | |
echo "Finished running onStart script" | |
EOF | |
FastaiNotebookInstance: | |
Type: "AWS::SageMaker::NotebookInstance" | |
Properties: | |
InstanceType: !Ref InstanceType | |
LifecycleConfigName: !GetAtt FastaiNbLifecycleConfig.NotebookInstanceLifecycleConfigName | |
NotebookInstanceName: !Ref NotebookName | |
RoleArn: !GetAtt SageMakerIamRole.Arn | |
VolumeSizeInGB: !Ref VolumeSize |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment