Deep Learning Brasília - Lição 1


(Saul Campos Berardo) #7

Pessoal,

Alguém perguntou na aula desta terça (20/03/2016) como visualizar e executar o código dos scripts python utilizados no notebooks. Segue abaixo um roteiro de como converter o arquivo do notebook (.ipynb) para script python (.py) e como realizar as modificações necessárias para executá-lo no Crastle.

Para converter o notebook para um script python, basta seguir os passos abaixo:

  1. Na tela inicial do Jupyter, clicar no botão “>_ New Terminal” .

  2. Alterar diretório para o diretórioodo curso:
    cd courses/fastai/courses/dl1

  3. Converter notebook para script python (o script python será criado no mesmo diretório o scirpt lesson1.py)
    jupyter nbconvert --to script lesson1.ipynb

  4. Alterar backend utilizado pelo matplotlib (isto é necessário, já que não é possível mostrar os gráficos executando os scripts através do terminal):
    vim lesson1.py
    Na tela do vim, adicionar as linhas abaixo no início do arquivo, logo após a linha # coding: utf-8, e salvar o arquivo.
    import matplotlib
    matplotlib.use(‘Agg’) # Este backend evita que se tente plotar gráficos no terminal

  5. Comentar as linhas abaixo, adicionando “#” no início:
    get_ipython().run_line_magic(‘reload_ext’, ‘autoreload’)
    get_ipython().run_line_magic(‘autoreload’, ‘2’)
    get_ipython().run_line_magic(‘matplotlib’, ‘inline’)

  6. Executar o script com o ipython (é importante executar no ipython ao invés do python)
    ipython3 lesson1.py


(Pierre Guillou) #8

Oi @lucasosouza e todos os participantes,

só para complementar o post do @lucasosouza, antes de postar nesta thead (lição 1), leiam por favor a thread Wiki Lesson 1 : é a thread criada pelos @jeremy e @rachel no fim do ano passado para conversar sobre a lição 1 (parte 1) entre professores, alunos do programa internacional e alunos do curso em presencial na universidade de San Francisco. é um mina de ouro :slight_smile:

(… e somente se tiverem tempo :wink: leiam todas as threads da Parte 1 !)

Além disso, deem uma olhada se tiverem o tempo à seção About : há 8800 pessoas registradas nesse fórum ! Que bom para obter uma resposta a qualquer dúvida :slight_smile:

Por fim, é bom conhecer todas as funções desse fórum. Por isso, além do post da @rachel (Welcome MOOC students!), há um guia online : “What is Discourse?”.

Boa leitura :slight_smile:


(Pierre Guillou) #9

Cursos online e gratuitos sobre o Machine Learning :


(Pierre Guillou) #10

Quer “desenvolver um Rede Neural Profunda com apenas alguns cliques” e “assistir ao treinamento dela” ? http://playground.tensorflow.org :slight_smile:


(Pierre Guillou) #11

Quer comparar (e assim melhorar) a sua compreensão da lição 1 com a dos alunos do curso Fast.ai ?

Leiam DeepLearning-Lec1Notes do @timlee e Cats and Dogs code notes do @amritv :slight_smile:


(Lucas O. Souza) #12

Pessoal,

Uma correção importante: essas instruções do link que o Pierre postou estão desatualizadas. Não usem o template fastai que está disponível no paperspace.

O correto é iniciar uma máquina com o template ubuntu16, e usar esse script de configuração para configurar a máquina: http://files.fast.ai/setup/paperspace

Para quem não entende muito de linux, segue um passo-a-passo básico:

  1. Inicialize a máquina usando a senha padrão que foi enviada no seu email ao contratar a máquina virtual
  2. Execute o comando passwd, para já trocar a senha padrão
  3. Execute sudo nano setup.sh para abrir um editor de text com um novo arquivo. Copie e cole o texto para esse arquivo. Aperte ctrl+x, para sair, e ao perguntar se quer salvar ou não, Y para salvar, e depois enter novamente. Isso vai criar um arquivo setup.sh.
  4. Execute sudo chmod +x setup.sh para conceder todas as permissões nesse arquivo para o usuário atual
  5. Execute ./setup.sh para rodar o arquivo. Irá levar uns 20 minutos a meia hora para baixar tudo e configurar a máquina
  6. Quando terminar, rode sudo reboot para reinicializar a máquina.

As outras partes do tutorial (https://github.com/reshamas/fastai_deeplearn_part1/blob/master/tools/paperspace.md) pode seguir. Essas instruções substituem apenas a Parte I do Tutorial.

abs


Paperspace setup help
(Pierre Guillou) #13

[ Edição do 26/03/2018 :

  1. Até aqui, podem usar 2 possibilidades para criar uma maquina PaperSpace usando os jupyter notebooks do Fast.ai.
  2. o passo-a-passo do @lucasosouza usando o Ubuntu 16.04 with Fast.ai Script é mais rápido porque não precisa pedir a “permissão” a PaperSpace.
  3. o passo-a-passo usando o Fast.ai Public Templates funciona bem também (não é desatualizado) mas precisa pedir a “permissão” a PaperSpace.
    ]

Oi @lucasosouza,

segui o seu passo-a-passo e funcionou ! Obrigado :slight_smile: (e acabei de publicar também um post para @dillon e @reshama para entender o que está falso/desatualizado no tutorial publicado).

Uma pequena correção ao ponto 4 :

Na verdade, execute

sudo chmod +x setup.sh


(Pierre Guillou) #14

Bom dia @lucasosouza, bom dia a todos,

acabei de publicar um post para @dillon (dono do PaperSpace) falando o seguinte :

Hi @dillon,

my machine created through the Fast.ai Public Templates works :slight_smile: (whatever Web browser used)

In fact, it is needed after creation of a machine (whatever the process used in order to create it) :

  1. Go to https://www.paperspace.com/console/machines/
  2. Click on the wheel of the machine you want to launch
  3. Launch the machine by clicking on the Start button in the “Machine Actions” list.
  4. When the machine is started (blue “Ready”), go back to https://www.paperspace.com/console/machines/
  5. Then, click on the small terminal image of the machine launched. The terminal will be opened and you can start using it (a bit complicated but works :wink:

Just one more point : we agree now that creating a machine through the Fast.ai Public Templates or Ubuntu 16.04 with Fast.ai Script gives the same result BUT when using the Fast.ai Public Templates, it is needed to ask the permission (read my post). Why ? Many people of the Brasilia study group wait and wait and wait a (positive) answer…

Could you solve this issue ? Many thanks.

O que isso significa ?

  1. Até aqui, podem usar 2 possibilidades para criar uma maquina PaperSpace usando os jupyter notebooks do Fast.ai.
  2. o passo-a-passo do @lucasosouza usando o Ubuntu 16.04 with Fast.ai Script é mais rápido porque não precisa pedir a “permissão” a PaperSpace.
  3. o passo-a-passo usando o Fast.ai Public Templates funciona bem também (não é desatualizado) mas precisa pedir a “permissão” a PaperSpace.

Espero que isso ajude. Abraços.


(Erick Muzart Fonseca) #15

@pierreguillou e @lucasosouza
Encontro bloqueio de indisponibilidade, que requer explicar os motivos para criar uma instância com GPU, tanto usando o template Fast.ai, quanto usando o template Linux Ubuntu 16.01. Assim essa espera pela autorização do PaperSpace, após teste de validade do cartão de crédito com uma transação de U$ 1, parece ser inevitável.
Infelizmente, faço parte do grupo que não está recebendo resposta com autorização da Paperspace…


(Pierre Guillou) #16

Olá @ErickMFS,

entendo melhor : a gente precisa pedir uma vez a “permissão” a PaperSpace para usar o serviço PaperSpace (…). Acho que encontrei a razão neste post do @dillon : spammers.


(Lucas Neves) #17

Olá,

Boa tarde a todos. Tentei rodar um exemplo com um dataset de imagens de pessoas com óculos (glasses) e pessoas sem óculos(noglasses) e não obtive muito êxito. Utilizei um pequeno dataset de 15 imagens de validação e 77 imagens de treino e fiz upload na pasta no /courses/dl1/data.

Consegui realizar todos os passos, mas na hora de rodar o modelo apareceu esse erro:

Acredito que o erro pode estar na existência de um .DS_Store na pasta (utilizei um Mac para criar o arquivo).

Alguém sabe a melhor forma de deletar esse arquivo diretamente no script?
Ou vocês acreditam que pode ser outro erro?

Abs.,


(Saul Campos Berardo) #18

@LucasNevest89, é possível executar comandos do shell no próprio Jupyter Notebook. Basta inserir um ponto de exclamação ("!") no início da linha. Portanto, podes excluir o diretório com o comando:
!rm -rf .DS_Store

Na tela inicial do Jupyter Notebook é possível também abrir um terminal (no botão “New --> Other --> Terminal”).


(Pierre Guillou) #19

Fotos da primeira lição na terça e no sábado :slight_smile:


(Lucas Neves) #20

Muito obrigado pela dica!


(Victor Hart) #21

Se tiro fotos e transfiro para o meu PC, como carrego para a pasta do Jupyter para poder rodar o image classifier nelas?

É uma pergunta muito básica: como carrego arquivos (imagens), que estão em pasta local no computador, para uma pasta virtual que o Jupyter utiliza? A propósito, ainda estou usando Crestle, mas estou tentando configurar Paperspace também.


(Pierre Guillou) #22

Bom dia @vicohart,

uma opção é usar o comando Unix scp num Terminal.
@lucasosouza, o que pensa disso ?

Alguns recursos :
https://www.tecmint.com/scp-commands-examples/
http://www.ccp4.ac.uk/ronan/guide-sge3/node66.html


(Pierre Guillou) #23

Pessoal,

se quiser usar “Collapsable / expandable jupyter cells” em seus jupyter notebooks como os do @jeremy, instale a extensão ‘collapsible headings’ : https://github.com/ipython-contrib/jupyter_contrib_nbextensions

Passo-a-passo num Terminal :

  1. Download : pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
  2. Install : jupyter contrib nbextension install --user
  3. Enable : jupyter nbextension enable collapsible_headings/main

That’s it ! :slight_smile: Pode rodar o seu jupyter notebook agora :slight_smile:


Deep Learning Brasília - Revisão (lições 1, 2, 3 e 4)
(Pierre Guillou) #24

Verifique a sua compreensão da lição 1

Oi pessoal,

Eu assisti novamente ao video da lição 1 (parte 1) para melhorar meu entendimento dela e tomei notas do vocabulário usado pelo @jeremy.

Vamos jogar um pouquinho ! Concorda ? :wink:
Você pode dar uma definição / uma URL / uma explicação para todos os termos e expressões a seguir?

Se sim, você entendeu perfeitamente a primeira lição! :sunglasses::sunglasses::sunglasses:

PS: se você não quiser se testar ou se quiser checar as suas respostas, vá para o post “Deep Learning 2: Part 1 Lesson 1” do blog de @hiromi : " super travail !!! :slight_smile: "

  • course Fastai
  • forum Fastai
  • GPU
  • CUDA
  • NVIDIA
  • Crestle / PaperSpace
  • jupyter notebook
  • Data Science
  • SHIFT + ENTER in a jupyter notebook
  • python 3
  • wget
  • exclamation mark in a cell (ex : !ls)
  • bash command
  • python variable into brackets
  • training set
  • validation set
  • Fastai Machine Learning course : prerequesite or not ?
  • image Classifier
  • label
  • keras
  • plt.imread
  • plt.imshow
  • python 3.6 format string
  • img.shape
  • 3 dimensional array (rank 3 tensor)
  • Red Green Blue (RGB) pixel values between 0 and 255
  • kaggal competition
  • pre-trained model
  • resnet24
  • ImageNet competition
  • Convolucional Neural Network (CNN)
  • accuracy
  • train a model
  • 3 lines of code
  • epoch
  • testing set
  • learning rate
  • loss function
  • cross entropy loss
  • validation and testing set accuracy
  • Fastai library
  • transfer learning
  • pytorch
  • tensorflow
  • network architecture
  • data augmentation
  • validation set dependent variable val_y
  • data.classes
  • classes
  • object data
  • object learn
  • the model
  • prediction on validation set
  • learn.predict()
  • log of the predictions : log_preds
  • get the predictions on validation set np.argmax(log_preds, axis=1)
  • get probabilities on dogs : np.exp(log_preds[:,1])
  • numpy
  • top-down, the whole game
  • code driven approach
  • world class neural network
  • stalelite images
  • structured data
  • NLP classifier
  • recommendation system
  • text generator
  • create our own architecture from scratch
  • donwload a pre-trained model and precompute
  • alphago
  • image classifier for fraude dectection
  • machine learning
  • Arthur Samuels, 1950s, ML father
  • IBM mainframe
  • play checkers
  • traditional Machine Learning
  • features engineering
  • domaine experts and specialits
  • algorithm (Deep Learning) :
    ** infinitely flexible function
    ** all-purpose parameters fitting
    ** fast and scalable
  • neural network, number of simple linear layers interspersed with a number of non linear layers
  • universal approximation theorem
  • Fit parameters, Gradient Descent (how good are they, find a minimum on loss function curve, local miminim)
  • minimum time, GPU 10 time faster than a CPU
  • hidden layer
  • increase of number of parameters by layer is a problem but increase number of layers is teh solution
  • DL = neural network with multiple hidden layers
  • Google starts using DL in 2012
  • Geoffrey Hinton, DL father
  • Andrej Karpathy
  • inBox by Gmail
  • Skype Translator
  • Semantic Style Transfer
  • cancer detection
  • true/false positive/negative
  • CNN, Convolucional Neural Network
  • convolucional
  • find edges
  • multiplication of pixels values by a kernel (filter)
  • linear operation
  • linear layer
  • non linear layer
  • sigmoid
  • Relu
  • element wise multiplication
  • michael Neslon
  • Stochastic Gradient Descent
  • derivative
  • small step
  • learning rate
  • combine convolution, non linearity, gradient descent
  • picture of what each layer learns
  • parameters of the kernels are learnt using gradient descent
  • learn.fit()
  • learning rate not too high, but not too low as well
  • choosing a learning rate
  • learn.lr_find()
  • best improvement of the loss before it gets worse
  • learn.shed.plot_lr()
  • learn.sched.plot()
  • mini batches
  • traing loss
  • validation loss
  • validation accuracy
  • overfitting : stop fitting your model
  • tab to get list of function
  • SHIFT + TAB (once : parameters, twice : documentation, 3 times : pops up a window with source code)
  • 1 question mark : documentation
  • 2 question mark : pops up source code
  • H to get short codes in jupyter notebooks
  • Stop your Crestle or PaperSpace machine !
  • use the fastai forum !

Wiki: Lesson 1
Deep Learning Brasília - Revisão (lições 1, 2, 3 e 4)
(Pierre Guillou) #25

from @nirantk : https://twitter.com/NirantK/status/984285662059917312

A curated list of tips and tricks to Make the Best of Project Jupyter for ML: https://github.com/NirantK/best-of-jupyter

  • debugging power tips: using the inbuilt debugger
  • searchmagic for searching across notebooks
  • improved the plotting utils which from @fastdotai for vision

(Pierre Guillou) #26

Um link encontrado pelo @victorm : Wiki thread: Intro workshop

  • Windows setup
  • Mac setup
  • Initial AWS setup
  • Initial Paperspace setup
  • Initial Crestle setup
  • Using the terminal
  • Anaconda on laptop
  • Pros and cons: Crestle, AWS, Paperspace, laptop, workstation
  • Introduction to Jupyter notebooks
  • Introduction to numeric programming in Python
  • ssh into Paperspace
  • ssh into AWS
  • Machine Learning Foundations