К основному содержанию
скилл CX Codex

llava — скилл для Claude Code: разговор о картинках

Скилл для работы с LLaVA: модель отвечает на вопросы по изображениям и ведёт многоходовой диалог о картинке. Пригодится, когда нужен чат по фото или документам.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Orchestra-Research/AI-Research-SKILLs --skill llava -a claude-code
Открыть на GitHub

Что делает llava

Скилл описывает, как запускать LLaVA — открытую vision-language модель, которая соединяет визуальный энкодер CLIP с языковыми моделями Vicuna и LLaMA. Внутри — рецепты загрузки модели через load_pretrained_model, подготовка картинки через process_images, сборка промпта из шаблона conv_templates["llava_v1"] и генерация ответа. Есть примеры CLI, Gradio-интерфейса и многоходовых бесед, где предыдущий ответ подставляется в историю.

Модели идут в размерах 7B, 13B и 34B. Для 7B в FP16 нужно около 14 GB видеопамяти, для 34B — около 70 GB, так что на слабой карте считайте заранее. Квантизация в 4 бита снижает расход примерно вчетверо, в 8 бит — вдвое. Инференс на CPU идёт крайне медленно, поэтому GPU здесь не роскошь. Зависимости — transformers, torch и pillow.

Скилл честно перечисляет слабые места: модель может описывать то, чего на картинке нет, путается в точных пространственных связях, плохо читает мелкий текст и неточно считает объекты, когда их много. Для классификации без диалога проще взять CLIP, для чистого описания картинок — BLIP-2. Если нужен максимальный результат через API, смотрите в сторону GPT-4V.

Какие задачи решает

  • задать вопрос по фотографии и получить текстовый ответ
  • собрать чат-бота, который обсуждает картинку в несколько ходов
  • описать содержимое изображения словами
  • разобрать скан документа и вытащить тему
  • перечислить объекты, попавшие в кадр

Примеры запросов агенту

  • Загрузи LLaVA-v1.5-7B и скажи, что на этой картинке
  • Собери многоходовой диалог по image.jpg: сначала описание, потом уточняющие вопросы
  • Запусти python -m llava.serve.cli --model-path liuhaotian/llava-v1.5-7b --image-file image.jpg и спроси про сцену

Как установить llava

1Через Skills CLI (Vercel)

npx skills add Orchestra-Research/AI-Research-SKILLs --skill llava -a claude-code

2Вручную: положить файлы

~/.claude/skills/llava/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/llava/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о llava

Как установить llava в Claude?

Выполните npx skills add Orchestra-Research/AI-Research-SKILLs --skill llava -a claude-code. После этого файл скилла появится по пути ~/.claude/skills/llava/SKILL.md.

Что делает llava?

Показывает, как запускать vision-language модель LLaVA для ответов на вопросы по изображениям, описания картинок и многоходовых бесед о них.

Что нужно для работы llava?

Нужны transformers, torch и pillow, а также GPU: на CPU инференс идёт очень медленно. Для модели 7B в FP16 потребуется около 14 GB видеопамяти.

Исходный текст

SKILL.md · MIT
---
name: llava
description: Large Language and Vision Assistant. Enables visual instruction tuning and image-based conversations. Combines CLIP vision encoder with Vicuna/LLaMA language models. Supports multi-turn image chat, visual question answering, and instruction following. Use for vision-language chatbots or image understanding tasks. Best for conversational image analysis.
version: 1.0.0
author: Orchestra Research
license: MIT
tags: [LLaVA, Vision-Language, Multimodal, Visual Question Answering, Image Chat, CLIP, Vicuna, Conversational AI, Instruction Tuning, VQA]
dependencies: [transformers, torch, pillow]
---

# LLaVA - Large Language and Vision Assistant

Open-source vision-language model for conversational image understanding.

## When to use LLaVA

**Use when:**
- Building vision-language chatbots
- Visual question answering (VQA)
- Image description and captioning
- Multi-turn image conversations
- Visual instruction following
- Document understanding with images

**Metrics**:
- **23,000+ GitHub stars**
- GPT-4V level capabilities (targeted)
- Apache 2.0 License
- Multiple model sizes (7B-34B params)

**Use alternatives instead**:
- **GPT-4V**: Highest quality, API-based
- **CLIP**: Simple zero-shot classification
- **BLIP-2**: Better for captioning only
- **Flamingo**: Research, not open-source

## Quick start

### Installation

```bash
# Clone repository
git clone https://github.com/haotian-liu/LLaVA
cd LLaVA

# Install
pip install -e .
```

### Basic usage

```python
from llava.model.builder import load_pretrained_model
from llava.mm_utils import get_model_name_from_path, process_images, tokenizer_image_token
from llava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN
from llava.conversation import conv_templates
from PIL import Image
import torch

# Load model
model_path = "liuhaotian/llava-v1.5-7b"
tokenizer, model, image_processor, context_len = load_pretrained_model(
    model_path=model_path,
    model_base=None,
    model_name=get_model_name_from_path(model_path)
)

# Load image
image = Image.open("image.jpg")
image_tensor = process_images([image], image_processor, model.config)
image_tensor = image_tensor.to(model.device, dtype=torch.float16)

# Create conversation
conv = conv_templates["llava_v1"].copy()
conv.append_message(conv.roles[0], DEFAULT_IMAGE_TOKEN + "\nWhat is in this image?")
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()

# Generate response
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).to(model.device)

with torch.inference_mode():
    output_ids = model.generate(
        input_ids,
        images=image_tensor,
        do_sample=True,
        temperature=0.2,
        max_new_tokens=512
    )

response = tokenizer.decode(output_ids[0], skip_special_tokens=True).strip()
print(response)
```

## Available models

| Model | Parameters | VRAM | Quality |
|-------|------------|------|---------|
| LLaVA-v1.5-7B | 7B | ~14 GB | Good |
| LLaVA-v1.5-13B | 13B | ~28 GB | Better |
| LLaVA-v1.6-34B | 34B | ~70 GB | Best |

```python
# Load different models
model_7b = "liuhaotian/llava-v1.5-7b"
model_13b = "liuhaotian/llava-v1.5-13b"
model_34b = "liuhaotian/llava-v1.6-34b"

# 4-bit quantization for lower VRAM
load_4bit = True  # Reduces VRAM by ~4×
```

## CLI usage

```bash
# Single image query
python -m llava.serve.cli \
    --model-path liuhaotian/llava-v1.5-7b \
    --image-file image.jpg \
    --query "What is in this image?"

# Multi-turn conversation
python -m llava.serve.cli \
    --model-path liuhaotian/llava-v1.5-7b \
    --image-file image.jpg
# Then type questions interactively
```

## Web UI (Gradio)

```bash
# Launch Gradio interface
python -m llava.serve.gradio_web_server \
    --model-path liuhaotian/llava-v1.5-7b \
    --load-4bit  # Optional: reduce VRAM

# Access at http://localhost:7860
```

## Multi-turn conversations

```python
# Initialize conversation
conv = conv_templates["llava_v1"].copy()

# Turn 1
conv.append_message(conv.roles[0], DEFAULT_IMAGE_TOKEN + "\nWhat is in this image?")
conv.append_message(conv.roles[1], None)
response1 = generate(conv, model, image)  # "A dog playing in a park"

# Turn 2
conv.messages[-1][1] = response1  # Add previous response
conv.append_message(conv.roles[0], "What breed is the dog?")
conv.append_message(conv.roles[1], None)
response2 = generate(conv, model, image)  # "Golden Retriever"

# Turn 3
conv.messages[-1][1] = response2
conv.append_message(conv.roles[0], "What time of day is it?")
conv.append_message(conv.roles[1], None)
response3 = generate(conv, model, image)
```

## Common tasks

### Image captioning

```python
question = "Describe this image in detail."
response = ask(model, image, question)
```

### Visual question answering

```python
question = "How many people are in the image?"
response = ask(model, image, question)
```

### Object detection (textual)

```python
question = "List all the objects you can see in this image."
response = ask(model, image, question)
```

### Scene understanding

```python
question = "What is happening in this scene?"
response = ask(model, image, question)
```

### Document understanding

```python
question = "What is the main topic of this document?"
response = ask(model, document_image, question)
```

## Training custom model

```bash
# Stage 1: Feature alignment (558K image-caption pairs)
bash scripts/v1_5/pretrain.sh

# Stage 2: Visual instruction tuning (150K instruction data)
bash scripts/v1_5/finetune.sh
```

## Quantization (reduce VRAM)

```python
# 4-bit quantization
tokenizer, model, image_processor, context_len = load_pretrained_model(
    model_path="liuhaotian/llava-v1.5-13b",
    model_base=None,
    model_name=get_model_name_from_path("liuhaotian/llava-v1.5-13b"),
    load_4bit=True  # Reduces VRAM ~4×
)

# 8-bit quantization
load_8bit=True  # Reduces VRAM ~2×
```

## Best practices

1. **Start with 7B model** - Good quality, manageable VRAM
2. **Use 4-bit quantization** - Reduces VRAM significantly
3. **GPU required** - CPU inference extremely slow
4. **Clear prompts** - Specific questions get better answers
5. **Multi-turn conversations** - Maintain conversation context
6. **Temperature 0.2-0.7** - Balance creativity/consistency
7. **max_new_tokens 512-1024** - For detailed responses
8. **Batch processing** - Process multiple images sequentially

## Performance

| Model | VRAM (FP16) | VRAM (4-bit) | Speed (tokens/s) |
|-------|-------------|--------------|------------------|
| 7B | ~14 GB | ~4 GB | ~20 |
| 13B | ~28 GB | ~8 GB | ~12 |
| 34B | ~70 GB | ~18 GB | ~5 |

*On A100 GPU*

## Benchmarks

LLaVA achieves competitive scores on:
- **VQAv2**: 78.5%
- **GQA**: 62.0%
- **MM-Vet**: 35.4%
- **MMBench**: 64.3%

## Limitations

1. **Hallucinations** - May describe things not in image
2. **Spatial reasoning** - Struggles with precise locations
3. **Small text** - Difficulty reading fine print
4. **Object counting** - Imprecise for many objects
5. **VRAM requirements** - Need powerful GPU
6. **Inference speed** - Slower than CLIP

## Integration with frameworks

### LangChain

```python
from langchain.llms.base import LLM

class LLaVALLM(LLM):
    def _call(self, prompt, stop=None):
        # Custom LLaVA inference
        return response

llm = LLaVALLM()
```

### Gradio App

```python
import gradio as gr

def chat(image, text, history):
    response = ask_llava(model, image, text)
    return response

demo = gr.ChatInterface(
    chat,
    additional_inputs=[gr.Image(type="pil")],
    title="LLaVA Chat"
)
demo.launch()
```

## Resources

- **GitHub**: https://github.com/haotian-liu/LLaVA ⭐ 23,000+
- **Paper**: https://arxiv.org/abs/2304.08485
- **Demo**: https://llava.hliu.cc
- **Models**: https://huggingface.co/liuhaotian
- **License**: Apache 2.0


© Orchestra Research · MIT · Orchestra-Research/AI-Research-SKILLs

Похожие скиллы

Всё по теме «ИИ и ML» →
tao-finetune-clip NVIDIA Corporation Скилл для обучения CLIP, zero-shot классификации, извлечения эмбеддингов и экспорта в ONNX и TensorRT через NVIDIA TAO. CX Codex +1 1 600установок tao-finetune-cosmos-embed NVIDIA Corporation Скилл настраивает запуск Cosmos-Embed1 через контейнер NVIDIA TAO для поиска по видео и тексту, дедупликации и дообучения модели. CX Codex +1 1 600установок vision-sft Seth Hobson Скилл помогает настроить supervised fine-tuning vision-language моделей на данных с изображениями и текстом. Пригодится для адаптации VLM под новый визуальный домен. CX Codex 2 600установок vision kotot Передаёт изображения внешней совместимой с OpenAI визуальной модели, когда у текущего агента нет встроенного зрения. Помогает разбирать скриншоты ошибок, графики и текст со сканов. CX Codex +1 13 400установок bailian-gen modelstudioai Создаёт и редактирует изображения, видео и аудио через Bailian, а также разбирает медиафайлы. Нужен для задач генерации, распознавания и мультимодального анализа. CX Codex +1 9 200установок qianwen-vision QianWen-AI Разбирает изображения и видео с помощью визуальных моделей Qwen. Скилл распознаёт текст через OCR, читает графики, сравнивает картинки и отвечает на вопросы по видео. CX Codex +1 5 700установок

Из того же набора66

nemo-evaluator-sdk Скилл запускает оценку языковых моделей на 100+ бенчмарках из 18+ харнессов: MMLU, HumanEval, GSM8K, safety и VLM. Пригодится, когда нужно сравнить модели воспроизводимо. CX Codex +1 943установок pinecone Скилл для работы с управляемой векторной базой Pinecone: индексы, upsert, поиск с фильтрами и гибридный поиск. Пригодится для RAG и семантического поиска в проде. CX Codex +1 942установок constitutional-ai Скилл для обучения моделей безвредному поведению через самокритику и обратную связь от ИИ, без разметки от людей. CX Codex +1 942установок phoenix-observability Скилл подключает Phoenix — открытую платформу наблюдаемости, чтобы разбирать трейсы LLM-приложений, гонять оценки на датасетах и следить за продом. CX Codex +1 941установок lambda-labs-gpu-cloud Скилл помогает запускать GPU-инстансы Lambda Labs для обучения и инференса ML-моделей. Он пригодится для SSH-доступа, постоянного хранилища и кластеров. CX Codex +1 939установок presenting-conference-talks Скилл преобразует готовую научную статью в слайды презентации Beamer LaTeX и PPTX с заметками докладчика. Подходит для подготовки докладов на конференциях по ML и Computer Systems. CX Codex +1 913установок ml-training-recipes Скилл содержит практические шаблоны обучения моделей на PyTorch: от настройки циклов и оптимизаторов Muon и AdamW до смешанной точности и устранения OOM. CX Codex +1 912установок systems-paper-writing Скилл задаёт структуру академических статей на 10–12 страниц для OSDI, SOSP, ASPLOS, NSDI и EuroSys. Помогает спланировать бюджет страниц и текст каждого абзаца. CX Codex +1 908установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой