Downloads · 30 days
9
15% of all-time downloads
RISEF/qwen3-8b-core-tauken
qwen3-8b-core-tauken is a image-to-text model from RISEF. Use it when you need a caption or text from an image. The card lists the license as apache-2.0.
Downloads · 30 days
9
15% of all-time downloads
All-time downloads
59
Public
Parameters
770K
117 GB on disk
Likes
0
Public
Click a slice to open those files.
.pt99.8 GB · 85%
From the Hugging Face model README
Специализированная Vision-Language модель для геологического описания буровых кернов
</div>Это файн-тюненная версия Qwen/Qwen3-VL-8B-Instruct, специализированная для генерации детальных литологических описаний керна буровых скважин месторождения Жосабай (Казахстан) на русском языке.
Модель анализирует фотографии керна и генерирует профессиональные геологические описания, включающие:
⚠️ ВАЖНО: Эта модель использует архитектуру Qwen3-VL, которая отличается от Qwen2-VL!
# ✅ ПРАВИЛЬНО:
from transformers import Qwen3VLForConditionalGeneration
model = Qwen3VLForConditionalGeneration.from_pretrained(...)
# ❌ НЕПРАВИЛЬНО (будет ошибка загрузки):
from transformers import Qwen2VLForConditionalGeneration # НЕТ!
Модель обучалась с Flash Attention 2 на 4x RTX 5090.
Для инференса рекомендуется:
model = Qwen3VLForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2", # Рекомендуется для скорости
device_map="auto"
)
Альтернатива (если Flash Attention недоступен):
attn_implementation="eager" # Fallback на PyTorch SDPA
Требования для Flash Attention 2:
pip install flash-attn (требует компиляции из исходников)Qwen3-VL-8B использует GQA:
При использовании SDPA fallback автоматически применяется repeat_interleave для key/value heads.
Модель обучена на PyTorch 2.11.0.dev20260117 с CUDA 13.0 для поддержки RTX 5090 (compute capability sm_120).
Из-за ограничений памяти использовался ZeRO-3 с полной выгрузкой на CPU:
Это означает: модель весит ~17GB и требует достаточно RAM при загрузке.
Vision Encoder (27 блоков) → ❌ ЗАМОРОЖЕН
Vision-Language Merger → ✅ ОБУЧЕН
LLM (36 слоев Qwen3-8B) → ✅ ОБУЧЕН
Т.е. не обучали распознавание изображений, а только генерацию текста на основе визуальных признаков.
Модель обучена в bfloat16 (не fp16!), что критично для стабильности обучения больших моделей.
# Обязательно загружать в том же dtype:
torch_dtype=torch.bfloat16
| Метрика | Значение |
|---|---|
| Loss (начальный) | 1.4244 |
| Loss (финальный) | 0.0272 |
| Снижение loss | 98.1% |
| Эпохи | 3 |
| Всего шагов | 156 |
| Время обучения | 37 минут 45 секунд |
| Train samples/sec | 2.203 |
| Effective batch size | 32 (batch_size=1 × grad_accum=8 × 4 GPUs) |
Эпоха 1 (шаги 0-52): Loss: 1.4244 → 0.1067 (↓ 92.5%)
Эпоха 2 (шаги 52-104): Loss: 0.1067 → 0.0437 (↓ 59.0%)
Эпоха 3 (шаги 104-156): Loss: 0.0437 → 0.0272 (↓ 37.8%)
1.5 ┤●
│
1.2 ┤
│ ●
0.9 ┤
│ ●●
0.6 ┤ ●●
│ ●●●
0.3 ┤ ●●●●
│ ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0.0 ┤________________________________________________________________
0 50 100 150
Training Steps
pip install transformers torch pillow accelerate
Требуемая версия transformers:
pip install transformers>=4.57.0 # Для поддержки Qwen3-VL
import torch
from PIL import Image
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
# Загрузка модели
model_id = "RISEF/qwen3-8b-core-tauken"
model = Qwen3VLForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
attn_implementation="eager", # ОБЯЗАТЕЛЬНО!
device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_id)
# Загрузка изображения
image = Image.open("path/to/core_sample.jpg")
# Формирование промпта (формат OpenAI Messages API)
messages = [{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "Опиши литологию керна на данном снимке. Скважина: ZHS_025, интервал: 100.0-105.5м."}
]
}]
# Генерация описания
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(**inputs, max_new_tokens=512, do_sample=False)
result = processor.batch_decode(output, skip_special_tokens=True)[0]
# Извлечение ответа модели (удаление промпта)
if "assistant" in result:
result = result.split("assistant")[-1].strip()
print(result)
Вход:
Выход:
Андезитовые порфириты зеленовато-серого цвета с порфировой структурой.
Основная масса: мелкозернистая, серовато-зеленая, с признаками флюидальности.
Порфировые выделения:
- Плагиоклаз: 25-30%, размером 2-5 мм, таблитчатой формы
- Роговая обманка: 10-15%, размером 1-3 мм, призматической формы
Вторичные изменения:
- Пропилитизация умеренная, проявлена хлоритизацией и эпидотизацией
- Серицитизация слабая по плагиоклазу
Трещиноватость:
- Плотность: 3-4 трещины на 1 погонный метр
- Углы к оси керна: 30-45°
Прожилки:
- Кварц-карбонатного состава
- Мощность: 1-3 мм
- Углы к оси керна: 60-70°
Рудная минерализация:
- Пирит: рассеянная вкрапленность, 1-2%
- Халькопирит: единичные зерна, <1%
Hardware:
Software Stack:
{
# Модель
"model_name_or_path": "Qwen/Qwen3-VL-8B-Instruct",
"attn_implementation": "eager", # SDPA fallback
# Training
"num_train_epochs": 3,
"learning_rate": 1e-5,
"per_device_train_batch_size": 1,
"gradient_accumulation_steps": 8,
"max_grad_norm": 1.0,
# Optimizer
"optim": "adamw_torch",
"weight_decay": 0.01,
"warmup_ratio": 0.03,
"lr_scheduler_type": "cosine",
# Precision
"bf16": true,
"gradient_checkpointing": true,
# Модель компоненты
"tune_mm_vision": false, # Vision encoder заморожен
"tune_mm_mlp": true, # Merger обучаем
"tune_mm_llm": true, # LLM обучаем
# DeepSpeed
"deepspeed": "zero3_offload.json", # ZeRO-3 + CPU offloading
# Data
"max_pixels": 50176,
"min_pixels": 784,
"model_max_length": 4096,
# Checkpointing
"save_strategy": "steps",
"save_steps": 200,
"save_total_limit": 2
}
{
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"offload_param": {
"device": "cpu",
"pin_memory": true
},
"overlap_comm": true,
"contiguous_gradients": true,
"gather_16bit_weights_on_model_save": true
}
}
{
"image": "/absolute/path/to/image.JPG",
"conversations": [
{
"from": "human",
"value": "<image>\\nОпиши литологию керна на данном снимке. Скважина: ZHS_001, интервал: 58.5-66.3м."
},
{
"from": "gpt",
"value": "Андезитовые порфириты зеленовато-серого цвета..."
}
]
}
| Параметр | Значение |
|---|---|
| Всего записей | 1664 |
| Уникальных скважин | 28 |
| Типы фото | wet (585), dry (583), cut (496) |
| Средняя длина описания | ~1154 символа |
| Язык | Русский |
| Источник описаний | Экспертные геологи месторождения Жосабай |
Все промпты следуют единому формату:
Опиши литологию керна на данном снимке. Скважина: {well}, интервал: {from}-{to}м.
ВАЖНО: Модель обучена на экспертных геологических описаниях, а не на описаниях от других AI моделей (например, Claude).
Модель может:
Рекомендация: Всегда проверяйте описания у геолога перед использованием в отчетах.
Модель ожидает фотографии, похожие на обучающий датасет:
Эта модель - инструмент помощи геологу, не замена эксперта. Не следует использовать для:
Если вы используете эту модель в исследованиях или проектах, пожалуйста, укажите:
@misc{qwen3-8b-core-tauken-2026,
title={Qwen3-VL-8B для литологического описания керна месторождения Жосабай},
author={RISEF},
year={2026},
month={January},
publisher={HuggingFace},
url={https://huggingface.co/RISEF/qwen3-8b-core-tauken},
note={Fine-tuned from Qwen/Qwen3-VL-8B-Instruct on 1664 geological core samples}
}
Apache License 2.0
Базовая модель Qwen3-VL-8B-Instruct также под Apache 2.0.
Сделано с ❤️ для геологов месторождения Жосабай
</div>