H2O — Primeiros Passos

Aprenda os requisitos mínimos, como baixar, e como iniciar com H2O.

The AI Academy
H2O.ai Brasil
11 min readFeb 15, 2019

--

Este post vai ajudar você com os primeiros passos em português, mas também recomendamos periodicamente visitar a documentação oficial, pois ela está em constante evolução.

Também é recomendado que você se inscreva na comunidade no slack para aprender, compartilhar aprendizados, enviar dúvidas, e etc.

O que e’ o H2O?

O H2O é uma plataforma de machine learning e análise preditiva open source, com processamento distribuído, e em memória oferecendo grande escalabilidade, e facilidade para implantação de modelos de machine learning em produção.

O código core da H2O é escrito em Java, e possui um sistema de armazenamento de Chave/Valor em memória, que é utilizado para o acesso e referênciamento a dados, modelos, objetos, e etc, permeando todos os nós das máquinas utilizadas.

A plataforma possui interoperabilidade com uma série de ambientes e linguagens de programação que serão vistos abaixo, e sim, permite que você instale em seu PC onde é recomendado a utilização de datasets não muito grandes.

Os algoritmos são implementados sobre o framework distribuído Map/Reduce H2O, e utilizam o framework Java Fork/Join para multi-threading. O dado é lido de forma paralela e é distribuido através do cluster, onde é armazenado em memória em um formato colunar comprimido. O parser de dados possui inteligência embarcada, onde tenta descobrir o schema de dados do dataset, suportando a ingestão de várias fontes de dados e diversos formatos.

O H2O fornece APIs REST que trafegam formato JSON, e que permitem acesso a todas as funcionalidades e capacidades da plataforma através de um programa ou script externo. As APIs são utilizadas pela interface web que se chama FLOW,e podem ser utilizadas com R através do H2O-R, e com Python através do H2O-Phyton.

Requerimentos Mínimos

Sistema Operacional

  • Windows 7 ou Superior
  • OS X 10.9 ou Superior
  • Ubuntu 12.04
  • RHEL/CentOS 6 ou Superior

Linguagens de Programação

  • Scala, R, e Phyton não são obrigatórios a menos que deseje utilizar em conjunto com o ambiente H2O.
  • Java é requerido com versão 7 ou Superior e JDK de 64-bit
  • Para rodar o arquivo Binário do H2O utilizando a linha de comando com pacotes R ou Python, somente a JRE 64-bit é requerida.
  • Scala 2.10 ou superior
  • R version 3 ou superior
  • Python 2.7.x, 3.5.x, 3.6.x
  • Navegador — Para acessar a interface web (Flow) é necessário um navegador, sendo que há suporte para as últimas versões de Chrome, Firefox, Safari ou Internet Explorer.

Requerimentos Adicionais

Hadoop — Não é requerido ao menos que deseje rodar o H2O em um cluster hadoop. As versões suportadas são:

  • Cloudera CDH 5.4 ou superior
  • Hortonworks HDP 2.2 ou superior
  • MapR 4.0 ou superior
  • IBM Open Platform 4.2

Conda 2.7, 3.5, ou 3.6 — Não é requerido ao menos que deseje rodar o H2O na nuvem Anaconda.

Spark: versões 2.1, 2.2, ou 2.3 — Spark só será requerido se desejar rodar o H2O Sparkling Water.

Baixar o H2O

Usuários Iniciantes

Se você esta começando com o H2O, é recomendado fazer o download da última versão alfa, e opção standalone (baixar). Não se esqueça de certificar que o Java esta instalado.

Clonando o repositório GitHub

  1. Em um terminal do computador que o H2O será instalado crie repositório para armazenar o H2O. Crie uma pasta chamada repos.

user$ mkdir ~/Desktop/repos

2. Acesse a pasta criada e então clone o repositório

user$ cd ~/Desktop/repos

repos user$ git clone https://github.com/h2oai/h2o-3.git

3. Depois de ter o repositório clonado, acesse a pasta h2o

repos user$ cd h2o-3 h2o-3 user$

4. Execute o comando a seguir para obter os datasets de exemplo que são utilizados no guia do usuário e também nos booklets.

h2o-3 user$ ./gradlew syncSmalldata

Agora determine como deseje terminar este passo a passo, com R ou Python e execute os comandos a seguir:

Acessar o H2O

Uma vez instalado o H2O existem varias opções de “client” para lançar co cluster H2O e acessar a plataforma.

Com R

Outra maneira de efetuar a instalação com R

Copie e cole os comandos uma linha por vez.

  1. Os 2 comandos a seguir irão remover qualquer versão prévia existente dos pacotes H2O para R.

2. Faça download dos pacotes que o H2O tenha dependência

3. Faça o download e instale o pacote H2O para R

4. Opcionalmente inicie o H2O e execute a demo.

Detalhes da API h2o.init() em R

Para iniciar o H2O num ambiente R voce pode utilizar o método h2o.init(). Em muitos casos o h2o.init() é suficiente para as necessidades da maioria dos usuários mas este método aceita uma série de opções que serão exibidas a seguir.

  • nthreads: Inicia o H2O utilizando todas as CPUs disponíveis, e só é aplicável se iniciar o H2O localmente usando R. Se iniciar o H2O localmente sem o R, ou iniciar o H2O no Hadoop, o parâmetro nthreads não será aplicável.
  • ip: Endereço IP do servidor onde o H2O esta rodando
  • port: Número da porta do servidor.
  • startH2O: (Opcional) Valor lógico que tenta iniciar o H2O do R se nenhuma conexão é detectada. Somente é possível utilizar se oip = "localhost" ou ip = "127.0.0.1". Se uma conexão existente é detectada o R não iniciará o H2O.
  • forceDL: (Opcional) Valor lógico que força o download do H2O executável. O valor default é False, e o executável será baixado somente se não existir na lista de bibliotecas do H2O R, no diretório de recursos h2o/java/h2o.jar.
  • enable_assertions: (Opcional) Valor lógico que indica se o H2O deve ser executado com as assertions habilitadas. É utilizado principalmente para checar erros e efetuar debug.
  • license: (Opcional) Caracter formato texto que especifica o endereço full do arquivo de licença.
  • max_mem_size: (Opcional) Caracter texto que especifica o tamanho máximo em bytes do pool de alocação de memória do H2O.Este parâmetro deve ser um múltiplo de 1024 superior a 2MB. Adicione as letras m ouMpara indicar megabytes, ou g ou G para indicar gibabytes.
  • min_mem_size: (Opcional) Caracter texto que especifica o tamanho mínimo em bytes do pool de alocação de memória do H2O.Este parâmetro deve ser um múltiplo de 1024 superior a 2MB. Adicione as letras m ouMpara indicar megabytes, ou g ou G para indicar gibabytes.
  • ice_root: (Opcional) Diretório para administrar vazamento de objetos e que varia de acordo com o S.O.
  • strict_version_check: (Opcional) Não é recomendado configurar para false, e só é recomendado utilizar em conjunto com o suporte técnico.
  • ignore_config: (Opcional) Esta opção permite que você especifique se deseja executar o processamento de um arquivo .h2oconfig. Quando h2o.init () é especificado, uma chamada para um método de leitura de configuração é invocada. Essa chamada pode resultar em problemas de caminho, quando não há “raiz” (por exemplo, com uma unidade de rede do Windows) porque o leitor de arquivo de configuração procura até “raiz”. Quando não houver “raiz”, o caminho para pesquisa continuará a ser expandido, resultando erro. Este valor é padronizado como Falso.
  • proxy: (Opcional)Caracter texto que especifica o caminho de proxy.
  • https: (Opcional)Configure para TRUE para usar https ao invés de http.
  • insecure: (Opcional)Configure TRUE para desabilitar a verificação de certificados.
  • username: (Opcional) Nome do usuário para logar.
  • password: (Opcional) Senha do usuário para logar
  • cookies: (Opcional) Lista de cookies para ser adicionado ao request.
  • context_path: (Opcional) Última parte da URL de conexão. Exemplo http://<ip>:<port>/<context_path>

Por padrão, o comando h2o.init() primeiro verifica se a instância H2O esta apta a receber uma conexão. Se não puder se conectar, e as configurações start = TRUE com ip = “localhost”, tentará iniciar uma instância do H2O em localhost: 54321. Se um ip aberto e uma porta de sua escolha forem passados, este método tentará iniciar uma instância H2O no ip e na porta especificados.

Ao inicializar o H2O localmente, esse método procura o arquivo h2o.jar nos recursos da biblioteca R (system.file (“java”, “h2o.jar”, package = “h2o”)), e se o arquivo não existir, tentará automaticamente baixar a versão correta do Amazon S3. O usuário deve ter acesso à Internet para que esse processo seja bem-sucedido.

Uma vez conectado, o método h2o.init () verifica se a versão do pacote H2O R local corresponde à versão do H2O em execução no servidor. Se houver incompatibilidade, e o usuário indicar que deseja fazer upgrade, ele removerá o pacote H2O R local e baixará / instalará o pacote H2O R do servidor.

Nota: Você pode querer atualizar manualmente seu pacote. Isso requer que os pacotes H2O, e cliente H2O sejam totalmente desinstalados. Será necessário descarregar os pacotesno ambiente antes de atualizar. Também é recomendado que o R Studio ou o R sejam reinciados.

Com Python

Outra maneira de efetuar a instalação com Python

Execute os comandos a seguir no terminal para instalar o H2O para Python.n.

  1. Instale as dependências, e não esqueça de utilizar o 'sudo' se necessário.

Estas são as dependências necessárias para o H2O. Caso deseje visualizar a lista de todas dependências acesse o repositório no GitHub

2. Execute o comando a seguir para remover qualquer modulo existente do H2O para Python

3. Utilize pip para instalar a versão do módulo H2O para Python.

Nota: Quando estiver instalando o H2O com pip no OS X El Capitan, insira--user no comando. Exemplo:

4. Opcionalmente inicie o H2O e execute um demo

Detalhes da API h2o.init() em Python

Utilize a função h2o.init() para iniciar o H2O. Na maioria dos casos o h2o.init() é suficiente mas esta função aceita os parâmetros a seguir:

  • url: URL completa do servidor para conexão (Pode ser utilizado ao invés de ip + port + https.)
  • ip: Endereço Ip ou nome do servidor onde o H2O está rodando
  • port: Número da porta do servidor
  • https: Configure para True para conexões via https://
  • insecure: Configure para True para desabilitar a verificação de certificados.
  • username: Nome do usuário para login com método basic authentication.
  • password: Senha do usuário para login com método basic authentication.
  • cookies: Cookies para serem adicionados no request.
  • proxy: Endereço do servidor de proxy.
  • start_h2o: Se False, não tenta iniciar um servidor H2O se uma conexão existente falhar.
  • nthreads: Número de threads a serem utilizadas pelo servidor
  • ice_root: Diretório para arquivos temporários no servidor H2O.
  • enable_assertions: Habilitação de assertions para verificação de erros e debug.
  • max_mem_size: Máximo de memória para o servidor H2O. Valores inteiros serão considerados gibaytes. Outras unidades podem ser especificadas através de uma string (exemplo "160M"para 160 megabytes)
  • min_mem_size: Mínimo de memória para o servidor H2O. Valores inteiros serão considerados gibaytes. Outras unidades podem ser especificadas através de uma string (exemplo “160M”para 160 megabytes)
  • strict_version_check: Se True, uma mensagem de erro será exibida caso o cliente e o servidor possuam versões diferentes.

Exemplo

Usuários Flow — Web Interface

O H2O flow é uma interface web open-source com estilo de notebook. É um ambiente interativo que permite a execução de códigos, textos, matemática, plotagem de gráficos e conteúdo rich media em um único documento, similar ao iPython Notebooks. Teremos uma seção inteira dedicada ao Flow, demonstrando como iniciar e utilizar suas funcionalidades.

Usuários Experientes

Se você esta acostumado a utilizar versões anteriores do H2O, faça o upgrade para o H2O-3. Teremos um capítulo somente para tratar deste item em breve.

Para acompanhar as novas funcionalidades, alterações e correções de bugs, acesse diretamente o repositório no GitHub.

Caso deseje contribuir com código para o H2O, acesse diretamente o repositório no GitHub. A comunidade agradece sua colaboração.

Veja Também:

Até o próximo post !!

--

--

The AI Academy
H2O.ai Brasil

We provide AI Strategy Consulting and Learning Services to help small and large enterprises become AI-first companies.