Texto de introdução e tutorial...
- (muito, muito, muito) inspirado do trabalho do Welton Rodrigo Torres Nascimento (até cópias/colas de seus textos porque não fazia sentido modificá-los)
- (muito, muito) inspirado do trabalho do Anurag Goel
- (muito) inspirado do trabalho do Nikhil
Muito obrigado a eles!
Existem várias formas de colocar na Internet o seu modelo baseado em fastai. A página de informações do curso mostra diversas opções:
Com certeza, uma opção que se destaca é o Render.com (tutorial online), que é uma plataforma criada pelo mesmo criador do Crestle mas uma outra opçao é usar gratuitamente o Heroku.
Gere o seu modelo normalmente e salve o export.pkl
com learn.export()
.
Coloque que arquivo no google drive ou dropbox (porque é de graça). É necessário gerar um link para o arquivo usando um dos dois serviços abaixo:
- Google Drive: Use este gerador de links.
- Dropbox: Use este gerador de links.
Faça um fork no github deste repositório base, que contém uma aplicação pré-pronta e customizável.
Edite, no próprio Github, o arquivo app/server.py para incluir:
- O endereço do
export.pkl
emexport_file_url
. - Troque o nome das classes geradas pelo seu modelo em
classes = ['with_glasses', 'without_glasses']
. - Lembre-se de usar a opção "Commit directly to the master branch".
- Edite também o texto que aparece para os usuários da sua aplicação, no arquivo app/views/index.html:
- O título (tag
<title>
) - O cabeçalho (
div class='title'
) e a explicação (tag<p>
)
- O título (tag
- E pronto!
Apesar de ser gratuito, o deploy no Heroku exige passos adicionais, que devem ser repetidos manualmente sempre que o código da aplicação for alterado na Github.
Normalmente o deploy no Heroku exige apenas o código da aplicação, mas, no caso dos modelos do fastai, ela é grande demais para o método tradicional e exige o deploy em containers docker. Para isso, é necessário executar os comandos numa máquina com docker instalado.
No entanto, como estamos usando uma máquina do Google Cloud para gerar o modelo, podemos usar o Cloud Shell para fazer o deploy.
Os passos a seguir consideram que você já tem uma conta no gcloud.
-
Acesse o dashboard em https://console.cloud.google.com/home/dashboard.
-
Abra o Cloud Shell no topo da página:
-
Ative o modo de otimização. Ele faz com que o Cloud Shell rode numa máquina mais potente e permita o build do container.
-
Instale o cliente da heroku:
curl https://cli-assets.heroku.com/install.sh | sh
-
Faça o clone da aplicação modificada e entre no diretório. Note que o seu endereço vai ser diferente do meu.
git clone https://github.com/piegu/glasses-or-not.git
-
Entre na pasta do seu modelo. Note que o nome da sua pasta vai ser diferente do meu.
cd glasses-or-not
-
Faça o login no heroku:
heroku login
O cliente heroku vai pedir que você aperte enter e depois apresentar um link para ser aberto na internet. Esse link vai te levar para a página de login. Nessa tela você pode fazer seu cadastro se ainda não tiver. Depois da autenticação bem sucedida, o cliente vai informar que está logado.
-
Crie um novo app no Heroku para receber sua aplicação:
heroku create -a <app-name>
O nome da aplicação também vai ser o endereço dela na Internet. No exemplo acima, seria nome-da-aplicacao.app.herokuapp.com. Caso você não queira um nome específico, ele vai criar um nome aleatório.
-
É necessário informar ao cliente docker como fazer o login no heroku, mas o próprio cliente toma conta disso:
heroku container:login
-
Agora para construir e enviar o container para o heroku. Isso deve levar em torno de 5 minutos. O print abaixo mostra só o começo do texto de saída gerado pelo comando.
heroku container:push web -a <app-name>
Se a construção e envio forem bem sucedidos, deve gerar uma saída parecida com esta:
-
Agora é necessário informar o keroku que faça o deploy propriamente dito do container criado:
heroku container:release web -a <app-name>
-
Acesse seu aplicativo.
heroku open
Se isso não abrir a janela do navegador, seu aplicativo já estará disponível em https://<nome_da_aplicação>.herokuapp.com. No nosso exemplo em https://glasses-or-not.herokuapp.com/