Com o advento da IA generativa, os modelos básicos (FMs) atuais, como os grandes modelos de linguagem (LLMs) Claude 2 e Llama 2, podem executar uma série de tarefas generativas, como resposta a perguntas, resumo e criação de conteúdo em dados de texto. No entanto, os dados do mundo real existem em múltiplas modalidades, como texto, imagens, vídeo e áudio. Veja uma apresentação de slides do PowerPoint, por exemplo. Pode conter informações na forma de texto ou incorporadas em gráficos, tabelas e imagens.
Neste post apresentamos uma solução que utiliza FMs multimodais como o Incorporações multimodais do Amazon Titan modelo e LLaVA 1.5 e serviços AWS, incluindo Rocha Amazônica e Amazon Sage Maker para realizar tarefas generativas semelhantes em dados multimodais.
Visão geral da solução
A solução fornece uma implementação para responder perguntas usando informações contidas no texto e nos elementos visuais de uma apresentação de slides. O design baseia-se no conceito de Geração Aumentada de Recuperação (RAG). Tradicionalmente, o RAG tem sido associado a dados textuais que podem ser processados por LLMs. Neste post, estendemos o RAG para incluir imagens também. Isso fornece um poderoso recurso de pesquisa para extrair conteúdo contextualmente relevante de elementos visuais, como tabelas e gráficos, juntamente com texto.
Existem diferentes maneiras de projetar uma solução RAG que inclua imagens. Apresentamos uma abordagem aqui e seguiremos com uma abordagem alternativa na segunda postagem desta série de três partes.
Esta solução inclui os seguintes componentes:
- Modelo de incorporações multimodais Amazon Titan – Este FM é usado para gerar embeddings para o conteúdo da apresentação de slides usada nesta postagem. Como modelo multimodal, este modelo Titan pode processar texto, imagens ou uma combinação como entrada e gerar incorporações. O modelo Titan Multimodal Embeddings gera vetores (embeddings) de 1,024 dimensões e é acessado via Amazon Bedrock.
- Grande Assistente de Linguagem e Visão (LLaVA) – LLaVA é um modelo multimodal de código aberto para compreensão visual e de linguagem e é usado para interpretar os dados dos slides, incluindo elementos visuais como gráficos e tabelas. Usamos a versão de 7 bilhões de parâmetros LLaVA 1.5-7b nesta solução.
- Amazon Sage Maker – O modelo LLaVA é implantado em um endpoint SageMaker usando serviços de hospedagem SageMaker e usamos o endpoint resultante para executar inferências no modelo LLaVA. Também usamos notebooks SageMaker para orquestrar e demonstrar essa solução de ponta a ponta.
- Amazon OpenSearch sem servidor – OpenSearch Serverless é uma configuração sem servidor sob demanda para Serviço Amazon OpenSearch. Usamos OpenSearch Serverless como banco de dados vetorial para armazenar embeddings gerados pelo modelo Titan Multimodal Embeddings. Um índice criado na coleção OpenSearch Serverless serve como armazenamento de vetores para nossa solução RAG.
- Ingestão do Amazon OpenSearch (OSI) – OSI é um coletor de dados totalmente gerenciado e sem servidor que fornece dados para domínios do OpenSearch Service e coleções do OpenSearch Serverless. Nesta postagem, usamos um pipeline OSI para entregar dados ao armazenamento de vetores OpenSearch Serverless.
Arquitetura da solução
O design da solução consiste em duas partes: ingestão e interação do usuário. Durante a ingestão, processamos a apresentação de slides de entrada convertendo cada slide em uma imagem, geramos embeddings para essas imagens e, em seguida, preenchemos o armazenamento de dados vetoriais. Essas etapas são concluídas antes das etapas de interação do usuário.
Na fase de interação do usuário, uma pergunta do usuário é convertida em embeddings e uma pesquisa de similaridade é executada no banco de dados vetorial para encontrar um slide que possa conter respostas à pergunta do usuário. Em seguida, fornecemos este slide (na forma de um arquivo de imagem) ao modelo LLaVA e à pergunta do usuário como um prompt para gerar uma resposta à consulta. Todo o código deste post está disponível no GitHub descanso.
O diagrama a seguir ilustra a arquitetura de ingestão.
As etapas do fluxo de trabalho são as seguintes:
- Os slides são convertidos em arquivos de imagem (um por slide) no formato JPG e passados para o modelo Titan Multimodal Embeddings para gerar embeddings. Nesta postagem, usamos a apresentação de slides intitulada Treine e implante o Stable Diffusion usando AWS Trainium e AWS Inferentia do AWS Summit em Toronto, junho de 2023, para demonstrar a solução. O conjunto de amostras tem 31 slides, então geramos 31 conjuntos de incorporações de vetores, cada um com 1,024 dimensões. Adicionamos campos de metadados adicionais a esses embeddings de vetores gerados e criamos um arquivo JSON. Esses campos de metadados adicionais podem ser usados para realizar consultas de pesquisa avançadas usando os poderosos recursos de pesquisa do OpenSearch.
- Os embeddings gerados são reunidos em um único arquivo JSON que é carregado no Serviço de armazenamento simples da Amazon (Amazônia S3).
- Através da Notificações de eventos do Amazon S3, um evento é colocado em um Serviço de fila simples da Amazon (Amazon SQS) fila.
- Este evento na fila SQS atua como um gatilho para executar o pipeline OSI, que por sua vez ingere os dados (arquivo JSON) como documentos no índice OpenSearch Serverless. Observe que o índice OpenSearch Serverless está configurado como coletor para esse pipeline e é criado como parte da coleção OpenSearch Serverless.
O diagrama a seguir ilustra a arquitetura de interação do usuário.
As etapas do fluxo de trabalho são as seguintes:
- Um usuário envia uma pergunta relacionada à apresentação de slides que foi processada.
- A entrada do usuário é convertida em embeddings usando o modelo Titan Multimodal Embeddings acessado por meio do Amazon Bedrock. Uma pesquisa vetorial OpenSearch é realizada usando esses embeddings. Realizamos uma pesquisa de k-vizinho mais próximo (k = 1) para recuperar a incorporação mais relevante que corresponde à consulta do usuário. A configuração k=1 recupera o slide mais relevante para a pergunta do usuário.
- Os metadados da resposta do OpenSearch Serverless contêm um caminho para a imagem correspondente ao slide mais relevante.
- Um prompt é criado combinando a pergunta do usuário e o caminho da imagem e fornecido ao LLaVA hospedado no SageMaker. O modelo LLaVA é capaz de entender a pergunta do usuário e respondê-la examinando os dados da imagem.
- O resultado desta inferência é retornado ao usuário.
Essas etapas são discutidas em detalhes nas seções a seguir. Veja o Resultados seção para capturas de tela e detalhes sobre a saída.
Pré-requisitos
Para implementar a solução fornecida neste post, você deve ter um Conta da AWS e familiaridade com FMs, Amazon Bedrock, SageMaker e OpenSearch Service.
Esta solução usa o modelo Titan Multimodal Embeddings. Certifique-se de que esse modelo esteja habilitado para uso no Amazon Bedrock. No console do Amazon Bedrock, escolha Acesso ao modelo no painel de navegação. Se o Titan Multimodal Embeddings estiver ativado, o status de acesso indicará Acesso concedido.
Se o modelo não estiver disponível, habilite o acesso ao modelo escolhendo Gerenciar acesso ao modelo, selecionando Incorporações Multimodais Titan G1e escolhendo Solicitar acesso ao modelo. O modelo é habilitado para uso imediatamente.
Use um modelo do AWS CloudFormation para criar a pilha de soluções
Use um dos seguintes Formação da Nuvem AWS modelos (dependendo da sua região) para lançar os recursos da solução.
Região AWS | Ligação |
---|---|
us-east-1 |
|
us-west-2 |
Depois que a pilha for criada com sucesso, navegue até o arquivo da pilha Saídas no console do AWS CloudFormation e anote o valor de MultimodalCollectionEndpoint
, que usaremos nas etapas subsequentes.
O modelo do CloudFormation cria os seguintes recursos:
- Papéis IAM - A seguir Gerenciamento de acesso e identidade da AWS (IAM) são criadas. Atualize essas funções para aplicar permissões de privilégio mínimo.
SMExecutionRole
com acesso total ao Amazon S3, SageMaker, OpenSearch Service e Bedrock.OSPipelineExecutionRole
com acesso a ações específicas do Amazon SQS e OSI.
- Caderno SageMaker – Todo o código deste post é executado através deste notebook.
- Coleção sem servidor do OpenSearch – Este é o banco de dados vetorial para armazenar e recuperar embeddings.
- Pipeline OSI – Este é o pipeline para ingestão de dados no OpenSearch Serverless.
- Caçamba S3 – Todos os dados desta postagem são armazenados neste bucket.
- Fila SQS – Os eventos para acionar a execução do pipeline OSI são colocados nesta fila.
O modelo CloudFormation configura o pipeline OSI com processamento do Amazon S3 e Amazon SQS como origem e um índice OpenSearch Serverless como coletor. Quaisquer objetos criados no bucket S3 especificado e no prefixo (multimodal/osi-embeddings-json
) acionará notificações SQS, que são usadas pelo pipeline OSI para ingerir dados no OpenSearch Serverless.
O modelo CloudFormation também cria rede, criptografia e acesso a dados políticas necessárias para a coleção OpenSearch Serverless. Atualize essas políticas para aplicar permissões de privilégio mínimo.
Observe que o nome do modelo CloudFormation é referenciado nos notebooks SageMaker. Se o nome do modelo padrão for alterado, certifique-se de atualizá-lo em globals.py
Teste a solução
Depois que as etapas de pré-requisito forem concluídas e a pilha do CloudFormation tiver sido criada com êxito, você estará pronto para testar a solução:
- No console SageMaker, escolha Notebooks no painel de navegação.
- Selecione os
MultimodalNotebookInstance
instância de notebook e escolha Abra o JupyterLab. - In Navegador de Arquivos, vá até a pasta de notebooks para ver os notebooks e os arquivos de suporte.
Os notebooks são numerados na sequência em que são executados. As instruções e comentários em cada bloco de notas descrevem as ações executadas por esse bloco de notas. Executamos esses notebooks um por um.
- Escolha 0_deploy_llava.ipynb para abri-lo no JupyterLab.
- No Execute menu, escolha Executar todas as células para executar o código neste notebook.
Este notebook implanta o modelo LLaVA-v1.5-7B em um endpoint SageMaker. Neste notebook, baixamos o modelo LLaVA-v1.5-7B do HuggingFace Hub, substituímos o script inference.py por llava_inference.pye crie um arquivo model.tar.gz para este modelo. O arquivo model.tar.gz é carregado no Amazon S3 e usado para implantar o modelo no endpoint SageMaker. O llava_inference.py O script possui código adicional para permitir a leitura de um arquivo de imagem do Amazon S3 e a execução de inferências nele.
- Escolha 1_data_prep.ipynb para abri-lo no JupyterLab.
- No Execute menu, escolha Executar todas as células para executar o código neste notebook.
Este notebook baixa o conjunto de slides, converte cada slide em formato de arquivo JPG e os carrega no bucket S3 usado para esta postagem.
- Escolha 2_data_ingestion.ipynb para abri-lo no JupyterLab.
- No Execute menu, escolha Executar todas as células para executar o código neste notebook.
Fazemos o seguinte neste caderno:
- Criamos um índice na coleção OpenSearch Serverless. Este índice armazena os dados de incorporação da apresentação de slides. Veja o seguinte código:
- Usamos o modelo Titan Multimodal Embeddings para converter as imagens JPG criadas no notebook anterior em embeddings vetoriais. Esses embeddings e metadados adicionais (como o caminho S3 do arquivo de imagem) são armazenados em um arquivo JSON e carregados no Amazon S3. Observe que é criado um único arquivo JSON, que contém documentos de todos os slides (imagens) convertidos em embeddings. O trecho de código a seguir mostra como uma imagem (na forma de uma string codificada em Base64) é convertida em embeddings:
- Essa ação aciona o pipeline de ingestão do OpenSearch, que processa o arquivo e o ingere no índice do OpenSearch Serverless. A seguir está um exemplo do arquivo JSON criado. (Um vetor com quatro dimensões é mostrado no código de exemplo. O modelo Titan Multimodal Embeddings gera 1,024 dimensões.)
- Escolha 3_rag_inference.ipynb para abri-lo no JupyterLab.
- No Execute menu, escolha Executar todas as células para executar o código neste notebook.
Este notebook implementa a solução RAG: convertemos a pergunta do usuário em embeddings, encontramos uma imagem semelhante (slide) no banco de dados vetorial e fornecemos a imagem recuperada ao LLaVA para gerar uma resposta à pergunta do usuário. Usamos o seguinte modelo de prompt:
O trecho de código a seguir fornece o fluxo de trabalho RAG:
Resultados
A seguir está uma compilação de algumas perguntas e respostas de usuários geradas por nossa implementação. O Questão coluna captura a pergunta do usuário e a Resposta coluna é a resposta textual gerada pelo LLaVA. Imagem é a correspondência de slide k-mais próxima (k = 1) retornada pela pesquisa vetorial OpenSearch Serverless. Este slide é interpretado pelo LLaVA para fornecer a resposta.
Resultados RAG multimodais
Questão | Resposta | Imagem |
---|---|---|
Como o Inf2 se compara em desempenho a instâncias EC2 comparáveis? Eu preciso de números. | De acordo com a apresentação de slides, as instâncias Inf2 do AWS Inferentia2 oferecem taxa de transferência até 4x maior e latência 10x menor em comparação com instâncias EC2 comparáveis. | |
De acordo com o volante AI/ML, o que os serviços AWS AI/ML oferecem? | Os serviços de IA/ML da AWS oferecem melhores recursos de $/perfer, novos recursos e investimento em inovação. | |
Comparado ao GPT-2, quantos parâmetros a mais o GPT-3 possui? Qual é a diferença numérica entre o tamanho do parâmetro GPT-2 e GPT-3? | De acordo com o slide, o GPT-3 possui 175 bilhões de parâmetros, enquanto o GPT-2 possui 1.5 bilhão de parâmetros. A diferença numérica entre o tamanho dos parâmetros do GPT-2 e do GPT-3 é de 173.5 bilhões. | |
O que são quarks na física de partículas? | Não encontrei a resposta para esta pergunta na apresentação de slides. |
Sinta-se à vontade para estender esta solução às suas apresentações de slides. Basta atualizar a variável SLIDE_DECK em globals.py com um URL para sua apresentação de slides e executar as etapas de ingestão detalhadas na seção anterior.
Dica
Você pode usar o OpenSearch Dashboards para interagir com a API OpenSearch para executar testes rápidos em seu índice e dados ingeridos. A captura de tela a seguir mostra um exemplo GET do painel OpenSearch.
limpar
Para evitar cobranças futuras, exclua os recursos que você criou. Você pode fazer isso excluindo a pilha por meio do console do CloudFormation.
Além disso, exclua o endpoint de inferência do SageMaker criado para inferência LLaVA. Você pode fazer isso descomentando a etapa de limpeza em 3_rag_inference.ipynb e executando a célula ou excluindo o endpoint por meio do console do SageMaker: escolha Inferência e Pontos finais no painel de navegação, selecione o endpoint e exclua-o.
Conclusão
As empresas geram novos conteúdos o tempo todo, e as apresentações de slides são um mecanismo comum usado para compartilhar e disseminar informações internamente com a organização e externamente com clientes ou em conferências. Com o tempo, informações valiosas podem permanecer ocultas em modalidades não textuais, como gráficos e tabelas nessas apresentações de slides. Você pode usar esta solução e o poder dos FMs multimodais, como o modelo Titan Multimodal Embeddings e LLaVA, para descobrir novas informações ou descobrir novas perspectivas sobre o conteúdo em apresentações de slides.
Incentivamos você a aprender mais explorando JumpStart do Amazon SageMaker, Modelos Amazon Titan, Amazon Bedrock e OpenSearch Service e criar uma solução usando o exemplo de implementação fornecido nesta postagem.
Fique atento a duas postagens adicionais como parte desta série. A Parte 2 aborda outra abordagem que você pode adotar para falar com sua apresentação de slides. Essa abordagem gera e armazena inferências LLaVA e usa essas inferências armazenadas para responder às consultas do usuário. A Parte 3 compara as duas abordagens.
Sobre os autores
Amit Arora é um arquiteto especialista em IA e ML na Amazon Web Services, ajudando clientes corporativos a usar serviços de aprendizado de máquina baseados em nuvem para dimensionar rapidamente suas inovações. Ele também é professor adjunto no programa de ciência e análise de dados MS na Georgetown University em Washington DC
Manju Prasad é arquiteto de soluções sênior em contas estratégicas na Amazon Web Services. Ela se concentra em fornecer orientação técnica em uma variedade de domínios, incluindo IA/ML para um cliente importante de M&A. Antes de ingressar na AWS, ela projetou e construiu soluções para empresas do setor de serviços financeiros e também para uma startup.
Archana Inapudi é arquiteto de soluções sênior na AWS, oferecendo suporte a clientes estratégicos. Ela tem mais de uma década de experiência ajudando clientes a projetar e construir análises de dados e soluções de banco de dados. Ela é apaixonada por usar a tecnologia para agregar valor aos clientes e alcançar resultados de negócios.
Antara Raisa é arquiteto de soluções de IA e ML na Amazon Web Services, oferecendo suporte a clientes estratégicos baseados em Dallas, Texas. Ela também tem experiência anterior trabalhando com grandes parceiros empresariais na AWS, onde trabalhou como Partner Success Solutions Architect para clientes nativos digitais.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/talk-to-your-slide-deck-using-multimodal-foundation-models-hosted-on-amazon-bedrock-and-amazon-sagemaker-part-1/
- :tem
- :é
- :não
- :onde
- $UP
- 1
- 10
- 100
- 13
- 15%
- 16
- 173
- 20
- 2023
- 26%
- 29
- 31
- 7
- 8
- 9
- a
- Capaz
- Sobre
- Acesso
- acessadas
- Contas
- Alcançar
- Açao Social
- ações
- atos
- adicionar
- Adicional
- adjunto
- advento
- contra
- AI
- AI / ML
- Todos os Produtos
- permitir
- juntamente
- tb
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- an
- analítica
- e
- Outro
- responder
- responder
- respostas
- qualquer
- api
- Aplicar
- abordagem
- se aproxima
- arquitetura
- SOMOS
- AS
- perguntar
- Assistente
- associado
- At
- auditivo
- aumentado
- Auth
- disponível
- evitar
- AWS
- Formação da Nuvem AWS
- baseado
- BE
- sido
- Melhor
- entre
- bilhão
- corpo
- construir
- Prédio
- construído
- negócio
- by
- CAN
- capacidades
- capacidade
- capturas
- célula
- mudado
- acusações
- Escolha
- escolha
- cliente
- código
- coleção
- coleções
- coletor
- Coluna
- combinação
- combinando
- comentários
- comum
- Empresas
- comparável
- comparar
- comparado
- completar
- Efetuado
- componentes
- conceito
- conferências
- Configuração
- configurado
- consiste
- cônsul
- não contenho
- contida
- contém
- conteúdo
- Criação de conteúdo
- converter
- convertido
- conversão
- Correspondente
- poderia
- Covers
- crio
- criado
- cria
- Criar
- criação
- Credenciais
- cliente
- Clientes
- Dallas
- painel de instrumentos
- painéis
- dados,
- Análise de Dados
- ciência de dados
- banco de dados
- década
- convés
- Padrão
- entregar
- entrega
- demonstrar
- Dependendo
- implantar
- implantado
- Implantação
- implanta
- descreve
- Design
- projetado
- detalhe
- detalhado
- detalhes
- DICT
- DID
- diferença
- diferente
- Distribuição
- digital
- Dimensão
- dimensões
- descobrir
- discutido
- Ecrã
- do
- INSTITUCIONAIS
- parece
- domínios
- download
- de downloads
- durante
- e
- cada
- elementos
- incorporado
- embutindo
- permitir
- habilitado
- codificado
- encorajar
- final
- Ponto final
- Motor
- garantir
- Empreendimento
- erro
- Evento
- eventos
- Examinando
- exemplo
- Exceto
- exceção
- existe
- vasta experiência
- Explorando
- estender
- externamente
- extrato
- Familiaridade
- Campos
- Envie o
- Arquivos
- financeiro
- serviços financeiros
- Encontre
- concentra-se
- seguir
- seguinte
- segue
- Escolha
- formulário
- formato
- Foundation
- quatro
- Gratuito
- da
- cheio
- totalmente
- futuro
- gerar
- gerado
- gera
- geração
- generativo
- IA generativa
- georgetown
- ter
- GitHub
- vai
- gráficos
- orientações
- Ter
- he
- útil
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- oculto
- superior
- acessos
- hospedeiro
- hospedado
- hospedagem
- serviços de hospedagem
- anfitriões
- Como funciona o dobrador de carta de canal
- Contudo
- HTML
- http
- HTTPS
- Hub
- Abraçando o Rosto
- i
- Identidade
- if
- ilustra
- imagem
- imagens
- imediatamente
- executar
- implementação
- implementa
- in
- incluir
- inclui
- Incluindo
- índice
- Índices
- INFORMAÇÕES
- Inovação
- e inovações
- entrada
- instância
- instruções
- interagir
- interação
- internamente
- para dentro
- investimento
- IT
- juntando
- jpg
- json
- Junho
- língua
- grande
- Latência
- lançamento
- APRENDER
- aprendizagem
- como
- LINK
- lhama
- local
- diminuir
- máquina
- aprendizado de máquina
- fazer
- gerencia
- gerenciados
- muitos
- Match
- correspondente
- mecanismo
- Menu
- metadados
- método
- ML
- modelo
- modelos
- mais
- a maioria
- MS
- múltiplo
- nome
- nativo
- Navegar
- Navegação
- você merece...
- Novo
- nenhum
- nota
- caderno
- notificações
- agora
- numerada
- números
- objetos
- of
- oferecer
- on
- Sob demanda
- ONE
- só
- aberto
- open source
- or
- organização
- OS
- A Nossa
- Fora
- resultados
- saída
- Acima de
- pão
- parâmetro
- parâmetros
- parte
- parceiro
- Parceiros
- peças
- passou
- apaixonado
- caminho
- para
- Realizar
- atuação
- realizada
- permissões
- perspectivas
- fase
- Física
- FOTOS
- oleoduto
- platão
- Inteligência de Dados Platão
- PlatãoData
- políticas
- Publique
- POSTAGENS
- potencialmente
- poder
- poderoso
- Predictor
- presente
- apresentado
- anterior
- Prévio
- processo
- Processado
- processos
- em processamento
- Agenda
- Propriedades
- fornecer
- fornecido
- fornece
- fornecendo
- colocar
- quarks
- consultas
- questão
- Frequentes
- Links
- trapo
- alcance
- rapidamente
- Leitura
- pronto
- mundo real
- recebido
- referenciada
- região
- relacionado
- relevante
- permanecem
- substituir
- solicitar
- requeridos
- Recursos
- Responder
- resposta
- respostas
- resultar
- resultando
- Resultados
- recuperação
- retorno
- Rico
- papéis
- Execute
- corrida
- sábio
- Inferência do SageMaker
- mesmo
- dizer
- Escala
- Ciência
- screenshots
- escrita
- Pesquisar
- Segundo
- Seção
- seções
- setor
- Vejo
- selecionar
- selecionando
- senior
- Seqüência
- Série
- Serverless
- serve
- serviço
- Serviços
- Sessão
- Conjuntos
- contexto
- Configurações
- Partilhar
- ela
- rede de apoio social
- mostrando
- Shows
- semelhante
- simples
- simplesmente
- solteiro
- Tamanho
- slide
- Slides
- fragmento
- So
- solução
- Soluções
- alguns
- fonte
- especialista
- específico
- especificada
- estável
- pilha
- inicialização
- Estado
- Status
- Passo
- Passos
- armazenamento
- loja
- armazenadas
- lojas
- armazenar
- Estratégico
- Tanga
- subseqüente
- sucesso
- entraram com sucesso
- tal
- Summit
- Apoiar
- certo
- mesa
- Tire
- Converse
- tarefas
- Dados Técnicos:
- Tecnologia
- modelo
- modelos
- teste
- testes
- texas
- texto
- textual
- que
- A
- as informações
- deles
- então
- Este
- isto
- aqueles
- Taxa de transferência
- tempo
- titã
- intitulado
- para
- hoje
- juntos
- Toronto
- tradicionalmente
- atravessar
- desencadear
- desencadeando
- verdadeiro
- tentar
- VIRAR
- dois
- tipo
- descobrir
- compreender
- compreensão
- universidade
- Atualizar
- carregado
- URL
- usar
- usava
- Utilizador
- usos
- utilização
- valor
- variável
- variedade
- versão
- via
- Vídeo
- Ver
- visão
- visual
- Washington
- maneiras
- we
- web
- serviços web
- BEM
- O Quê
- O que é a
- qual
- enquanto
- precisarão
- de
- dentro
- trabalhou
- de gestão de documentos
- trabalhar
- Vocês
- investimentos
- zefirnet