1 pontos por GN⁺ 2024-08-21 | 1 comentários | Compartilhar no WhatsApp
  • Transformers.rb é uma biblioteca que permite usar os Transformers da Hugging Face em Ruby, com foco em executar modelos transformer modernos em código Ruby
  • A instalação é feita primeiro instalando o Torch.rb e depois adicionando gem "transformers-rb" ao Gemfile
  • Os exemplos de suporte incluem modelos de embedding, sparse embedding e reranking, mostrando como usar modelos das famílias sentence-transformers, mixedbread-ai, BAAI, Snowflake e OpenSearch
  • Os pipelines são divididos em texto e visão, e tarefas como NER, análise de sentimento, perguntas e respostas, classificação de imagens e extração de características de imagens são chamadas no formato Transformers.pipeline
  • A API segue a Transformers Python API e atualmente oferece suporte às arquiteturas BERT, DeBERTa-v2, DistilBERT, MPNet, ViT e XLM-RoBERTa

Usando Transformers em Ruby

  • Transformers.rb é uma biblioteca moderna de transformers para Ruby
  • Para inferência rápida, a documentação recomenda conferir o Informers

Forma de instalação

  • Primeiro é necessário instalar o Torch.rb
  • Em seguida, adicione a linha abaixo ao Gemfile da aplicação
gem "transformers-rb"

Exemplos de modelos suportados

Pipelines

  • Os pipelines de Text oferecem suporte às seguintes tarefas
    • embedding: geração de embeddings de texto
    • reranking: reordenação do ranking de uma consulta e um array de documentos
    • ner: named-entity recognition
    • sentiment-analysis: análise de sentimento
    • question-answering: geração de resposta a partir de uma pergunta e um contexto
    • feature-extraction: extração de características de texto
  • Os pipelines de Vision oferecem suporte às seguintes tarefas
    • image-classification: classificação de imagens
    • image-feature-extraction: extração de características de imagens

API e arquiteturas suportadas

  • Esta biblioteca segue a Transformers Python API
  • As arquiteturas de modelo atualmente suportadas são as seguintes
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

Desenvolvimento e contribuição

  • O histórico de mudanças pode ser consultado no changelog
  • As formas de contribuição incluem relatar bugs, corrigir bugs e enviar pull requests, escrever, esclarecer ou corrigir documentação, e sugerir ou adicionar novos recursos
  • Os comandos para iniciar o desenvolvimento são apresentados na ordem: clonar o repositório, bundle install, bundle exec rake download:files e bundle exec rake test

1 comentários

 
GN⁺ 2024-08-21
Comentários no Hacker News
  • O runtime ONNX para Ruby do Ankane é tão fácil de usar que chega a fazer a gente se perguntar por que o repositório oficial em JavaScript é tão difícil de entender
    Só dei uma olhada por cima no que essa pessoa fez até agora, mas já parece um herói

  • Sério mesmo, essa pessoa é humana? Se fosse um indivíduo tão talentoso assim, eu teria vontade de investir 1 bilhão de dólares

    • Eu tenho mais ou menos 1/100 desse talento, e aceitaria um investimento de 10 milhões de dólares
  • Talvez não seja por isso que ele faz isso, mas se alguém quiser demonstrar agradecimento, já indiquei o Ankane para o Rails 2024 Luminary award
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • Concordo. A quantidade de trabalho útil que o Ankane entrega para a comunidade é realmente irreal
  • Esse tipo de contribuição é algo de que a comunidade Ruby realmente precisa, e este projeto também parece interessante

    • Com certeza. No geral, isso me faz pensar que a comunidade Ruby está desacelerando, porque contribuições assim estão em falta ou surgem cada vez mais devagar
      Neste caso, Ruby de repente ganhou uma biblioteca excelente, e isso por si só já é algo muito digno de agradecimento. Mas a “comunidade” só acabou “produzindo” isso meses ou anos depois de bibliotecas equivalentes já existirem em Python, JavaScript, TypeScript, Rust, Go etc.
      Isso não acontece só com machine learning/IA, mas também com gems Ruby para lidar com tecnologias novas. Antigamente, SaaS e startups ofereciam Rubygems oficiais desde o início, e muitas vezes até antes de outras plataformas ou linguagens. Hoje em dia, se você quer integrar com coisas como Notion, Slack ou Cloudflare, muitas vezes não existe opção para Ruby, ou pelo menos não existe uma opção oficial
      Isso é triste. Ruby é uma linguagem muito maior do que Rails, e dá para entender a resistência ou antipatia em relação ao Rails. Ainda assim, Ruby é uma linguagem bem mais prazerosa de usar do que Python e, com certeza, muito mais do que JavaScript. Tenho convicção de que Ruby poderia ter ocupado o lugar que Python ocupa hoje, e se isso tivesse acontecido, dezenas de milhares de desenvolvedores estariam um pouco mais felizes agora
  • O Ankane, mesmo sozinho, devolve para a indústria uma contribuição enorme de muitas formas. Impressionante

  • Fico me perguntando como uma pessoa consegue ser tão produtiva. Deve ter uma vida bastante corrida, com trabalho, família e tudo mais

  • É difícil expressar o quanto sou grato pelas gems do Ankane. O que ele criou foi essencial em alguns dos meus apps, e eu vejo isso como preenchendo lacunas no ecossistema

  • As ferramentas que essa pessoa criou são realmente impressionantes. Seria ótimo ver ainda mais delas

  • Pelo que sei, Andrew Kane também é o autor de pgvector, pgvector-ruby e neighbor, e todos são muito bons
    Além disso, ele fez muitas outras coisas
    Vai ver ele já resolveu IA/machine learning sozinho há muito tempo, e usa isso para ser tão produtivo assim
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • Ele fez muita coisa também fora da área de IA
      https://github.com/ankane/pretender facilita muito se passar por outro usuário em apps Rails
      https://github.com/ankane/ahoy é uma ferramenta de analytics própria para Rails
      https://github.com/ankane/blazer é uma ferramenta de business intelligence que roda dentro do Rails
      https://github.com/ankane/field_test é para testes A/B
      Essas coisas aumentam a produtividade no Rails em apps web comuns. Pode até existir um produto de fornecedor melhor ou uma solução mais especializada para cada uma delas, mas poder adicionar uma gem, configurar um pouco e obter uma solução de 80% permite lançar muito rápido
    • Tem também Chartkick, Ahoy e Searchkick
      Chartkick é uma biblioteca de gráficos para Ruby, Ahoy é uma biblioteca de analytics para Rails, e Searchkick é uma biblioteca de busca para Rails
      O perfil dele no GitHub tem mais de 370 repositórios
    • A gente usa muitas ferramentas do Andrew Kane também nos nossos repositórios de produção. Graças aos pacotes dele, dá para criar aplicações de IA com Rails
    • Se você usa Ruby e ainda não conhece o ankane, há muitas ferramentas muito úteis no GitHub dele
      Por exemplo, /disco é uma implementação bem simples de filtragem colaborativa que serve quando você quer adicionar recomendações rapidamente em qualquer lugar
      Se você está procurando algo relacionado a machine learning em Ruby, normalmente o ankane já deu uma olhada antes
    • É uma das pessoas mais prolíficas que eu conheço
  • Na comunidade Ruby, eu pessoalmente considero Andrew Kane e Chris Oliver os melhores entre os melhores. Mesmo que eu não use todas as contribuições deles, esse tipo de contribuição é sempre muito bem-vindo