Introdução geral
O InternVL é um grande projeto de modelo multimodal de código aberto desenvolvido pelo Shanghai Artificial Intelligence Lab (OpenGVLab) e hospedado no GitHub. O objetivo do InternVL é criar uma alternativa de código aberto comparável aos modelos comerciais (por exemplo, GPT-4o) para uma ampla gama de tarefas, como percepção visual, recuperação multimodal e diálogos multimodais. O projeto é conhecido por seus potentes codificadores visuais, suporte dinâmico de alta resolução e estratégias de treinamento eficientes, com tamanhos de modelos que variam de 1B a 78B parâmetros, adequados para uma ampla gama de cenários de aplicativos, desde dispositivos de ponta até servidores de alto desempenho. O código, os modelos e os conjuntos de dados estão abertos sob a licença MIT, e os pesquisadores e desenvolvedores são incentivados a usá-los e aprimorá-los livremente.
Lista de funções
- diálogo multimodalSuporte a entradas de imagem, vídeo e texto para gerar respostas em linguagem natural para bate-papo, perguntas e respostas e instruções de tarefas.
- processamento de imagensProcessamento dinâmico de imagens com resolução de até 4K e suporte à classificação de imagens, segmentação e detecção de objetos.
- Compreensão de vídeoAnálise de conteúdo de vídeo para classificação de vídeo de amostra zero e recuperação de texto-vídeo.
- resolução de documentosManuseio de documentos complexos e especialização em OCR, reconhecimento de formulários e questionamento de documentos para tarefas como o DocVQA.
- Suporte a vários idiomasCodificador de texto multilíngue integrado com suporte a mais de 110 tarefas de geração de idiomas.
- Raciocínio eficienteLMDeploy: fornece um processo de inferência simplificado por meio do LMDeploy, oferecendo suporte ao processamento de várias imagens e de contextos longos.
- Abertura dos conjuntos de dadosShareGPT-4o: fornece conjuntos de dados multimodais em grande escala, como o ShareGPT-4o, contendo imagens, vídeo e áudio.
Usando a Ajuda
Processo de instalação
Para usar a InternVL localmente, você precisa configurar seu ambiente Python e instalar as dependências relevantes. Veja a seguir as etapas detalhadas de instalação:
- armazém de clones
Execute o seguinte comando no terminal para obter o código-fonte do InternVL:git clone https://github.com/OpenGVLab/InternVL.git cd InternVL
- Criação de um ambiente virtual
Crie um ambiente Python 3.9 com o conda e ative-o:conda create -n internvl python=3.9 -y conda activate internvl
- Instalação de dependências
Instale as dependências necessárias para o projeto, que, por padrão, incluem as bibliotecas necessárias para o diálogo multimodal e o processamento de imagens:pip install -r requirements.txt
Se for necessária uma funcionalidade adicional (como segmentação ou classificação de imagens), as dependências específicas poderão ser instaladas manualmente:
pip install -r requirements/segmentation.txt pip install -r requirements/classification.txt
- Instalar o Flash-Attention (opcional)
Para acelerar a inferência do modelo, recomenda-se a instalação do Flash-Attention:pip install flash-attn==2.3.6 --no-build-isolation
Ou compilar a partir do código-fonte:
git clone https://github.com/Dao-AILab/flash-attention.git cd flash-attention git checkout v2.3.6 python setup.py install
- Instalar o MMDeploy (opcional)
Se você precisar implantar o modelo em um ambiente de produção, instale o MMDeploy:pip install -U openmim mim install mmdeploy
Uso
A InternVL oferece várias formas de uso, incluindo raciocínio de linha de comando, serviços de API e demonstrações interativas. A seguir, um exemplo do modelo InternVL2_5-8B para apresentar o fluxo de operação das principais funções:
1. diálogo multimodal
A InternVL oferece suporte a diálogos com entrada de imagem e texto. A seguir, um exemplo de raciocínio usando o LMDeploy:
- Preparação de modelos e imagensVerifique se o download do modelo foi feito (por exemplo
OpenGVLab/InternVL2_5-8B
) e preparar uma imagem (por exemplotiger.jpeg
). - raciocínio de execuçãoExecute o seguinte código Python que descreve o conteúdo da imagem:
from lmdeploy import pipeline, TurbomindEngineConfig from lmdeploy.vl import load_image model = 'OpenGVLab/InternVL2_5-8B' image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg') pipe = pipeline(model, backend_config=TurbomindEngineConfig(session_len=8192)) response = pipe(('描述这张图片', image)) print(response.text)
- no finalDescrição da imagem: O modelo gera uma descrição detalhada da imagem, por exemplo, "A imagem é de um tigre em pé com grama verde ao fundo".
2. processamento de várias imagens
O InternVL suporta o processamento simultâneo de várias imagens, adequado para comparação ou análise abrangente:
- exemplo de código::
from lmdeploy.vl.constants import IMAGE_TOKEN image_urls = [ 'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/human-pose.jpg', 'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/det.jpg' ] images = [load_image(url) for url in image_urls] prompt = f'Image-1: {IMAGE_TOKEN}\nImage-2: {IMAGE_TOKEN}\n描述这两张图片' response = pipe((prompt, images)) print(response.text)
- no finalO modelo descreverá o conteúdo de cada imagem separadamente e possivelmente resumirá as relações entre elas.
3. análise de documentos
A InternVL tem bom desempenho nas tarefas de questionamento de documentos (DocVQA) e de reconhecimento de formulários. O fluxo de operação é o seguinte:
- Preparação de imagens de documentosCarregar imagens que contenham texto, tabelas ou gráficos.
- fazer perguntasUse prompts como "Extract data from table" (Extrair dados da tabela) ou "Summarise document contents" (Resumir o conteúdo do documento).
- exemplo de código::
image = load_image('document.jpg') response = pipe(('提取图片中表格的内容', image)) print(response.text)
- no finalModelo: O modelo retorna um resumo dos dados estruturados da tabela ou do documento.
4. implantação de serviços de API
A InternVL oferece suporte à implementação de APIs RESTful por meio do LMDeploy para ambientes de produção:
- Início dos serviços::
lmdeploy serve api_server OpenGVLab/InternVL2_5-8B --server-port 23333
- Acessando a APIUse interfaces compatíveis com a OpenAI para enviar solicitações, por exemplo, por meio do
curl
ou modelo de chamada de cliente Python.
5. apresentação on-line
O OpenGVLab oferece uma plataforma de demonstração on-line (https://internvl.opengvlab.com/
), nenhuma instalação é necessária para experimentá-lo:
- Visite o site, carregue uma imagem ou um vídeo e insira uma pergunta.
- O modelo retorna resultados em tempo real, o que o torna adequado para testes rápidos.
Operação da função em destaque
- Alta resolução dinâmicaInternVL: O InternVL divide automaticamente as imagens em partes de 448x448 e suporta resolução de até 4K. Os usuários não precisam redimensionar manualmente as imagens, basta carregá-las.
- Compreensão de vídeoAo carregar um arquivo de vídeo, combinado com um prompt (por exemplo, "resumir o conteúdo do vídeo"), o modelo analisa os quadros principais e gera uma descrição.
- Geração em vários idiomasResposta em francês: Especifique o idioma no prompt (por exemplo, "Responda em francês") e o modelo gerará uma resposta no idioma correspondente.
advertência
- Verifique se você tem memória suficiente na GPU (os modelos 8B exigem cerca de 16 GB de memória da GPU).
- Aumente a janela de contexto ao processar várias imagens ou vídeos longos (
session_len=16384
). - Verifique as versões dependentes para evitar problemas de compatibilidade.
cenário do aplicativo
- pesquisa acadêmica
Os pesquisadores usam o InternVL para analisar diagramas científicos, processar imagens experimentais ou analisar dados tabulares de documentos. Os recursos de OCR de alta precisão e de compreensão de documentos do modelo aumentam consideravelmente a eficiência da extração de dados. - Auxílios educacionais
Professores e alunos usam o InternVL para resolver problemas de lição de casa relacionados a imagens, como interpretação de imagens históricas ou análise de diagramas geográficos. O suporte multilíngue do modelo é adequado para cenários educacionais internacionalizados. - Processamento de documentos corporativos
As organizações usam o InternVL para automatizar o processamento de documentos, contratos ou faturas digitalizados, extraindo informações importantes e gerando relatórios, economizando custos de mão de obra. - criação de conteúdo
Os criadores de conteúdo usam o InternVL para analisar imagens de vídeo e gerar roteiros ou legendas para aumentar a eficiência criativa. - Atendimento inteligente ao cliente
O sistema de atendimento ao cliente integra o InternVL para processar as imagens carregadas pelos usuários (por exemplo, fotos de falhas de produtos), diagnosticar rapidamente os problemas e fornecer soluções.
QA
- Quais tamanhos de modelo são compatíveis com a InternVL?
A InternVL oferece modelos com parâmetros que variam de 1B a 78B, adequados para diferentes dispositivos. Os modelos 1B são adequados para dispositivos de borda, enquanto os modelos 78B têm desempenho comparável ao GPT-4o. - Como você lida com imagens de alta resolução?
O modelo divide automaticamente a imagem em pedaços de 448x448 e oferece suporte à resolução 4K. Faça upload de imagens diretamente sem pré-processamento. - Ele oferece suporte à análise de vídeo?
Sim, a InternVL oferece suporte à classificação de vídeo de amostra zero e à recuperação de texto-vídeo. Basta carregar um vídeo e digitar a palavra de alerta. - O modelo é de código aberto?
O InternVL é totalmente de código aberto, com código e pesos de modelo disponíveis no GitHub sob a licença MIT. - Como otimizar a velocidade de raciocínio?
Instale o Flash-Attention e use a aceleração de GPU. Ajustessession_len
para acomodar contextos longos.