Nazywam się Yuichi i jestem badaczem w Turing Inc. („X/Twitter @inoichan»)

Z radością ogłaszamy wydanie naszej wielkoskalowej multimodalnej biblioteki edukacyjnej „Heron”, która obsługuje wiele języków, w tym japoński, oraz kolekcję modeli o parametrach do 70B.



Opublikowany przez nas model multimodalny składa się z trzech głównych komponentów; Koder wizyjny, model wielkojęzykowy (LLM) i adapter. Został zaprojektowany w taki sposób, że można przeszkolić sam adapter lub dalej szkolić LLM i koder wizyjny.

Możesz łatwo dostosować warunki uczenia modelu, modyfikując plik config. Więcej szczegółów na temat szkoleń znajdziesz tutaj.

Obecnie nasze adaptery obsługują dwa typy: BLIP i GIT. W przypadku Vision Encoder BLIP jest kompatybilny z WVA-CLIP, a GIT obsługuje kilka wersji CLIP OpenAI. LLM jest przeznaczony do szkolenia z następującymi modelami językowymi.

Poniżej znajduje się przykładowy wynik po przeszkoleniu GIT-Llama2 przy użyciu M3IT, a następnie dostrojeniu go za pomocą zestawu danych dostrajania instrukcji LLaVA.

Możesz wypróbować to poprzez nasze demo:



Możesz także uruchomić wnioskowanie w ten sposób;

import requests
from PIL import Image

import torch
from transformers import AutoProcessor
from heron.models.git_llm.git_llama import GitLlamaForCausalLM

device_id = 0

# prepare a pretrained model
model = GitLlamaForCausalLM.from_pretrained(
    'turing-motors/heron-chat-git-Llama-2-7b-v0', torch_dtype=torch.float16
)
model.eval()
model.to(f"cuda:{device_id}")

# prepare a processor
processor = AutoProcessor.from_pretrained('turing-motors/heron-chat-git-Llama-2-7b-v0')

# prepare inputs
url = "https://www.barnorama.com/wp-content/uploads/2016/12/03-Confusing-Pictures.jpg"
image = Image.open(requests.get(url, stream=True).raw)

text = f"##human: What is this picture?\n##gpt: "

# do preprocessing
inputs = processor(
    text,
    image,
    return_tensors="pt",
    truncation=True,
)
inputs = {k: v.to(f"cuda:{device_id}") for k, v in inputs.items()}

# set eos token
eos_token_id_list = [
    processor.tokenizer.pad_token_id,
    processor.tokenizer.eos_token_id,
]

# do inference
with torch.no_grad():
    out = model.generate(**inputs, max_length=256, do_sample=False, temperature=0., eos_token_id=eos_token_id_list)

# print result
print(processor.tokenizer.batch_decode(out)[0])

Stworzyliśmy także zbiór danych umożliwiający dostrajanie instrukcji w języku japońskim. To japońskie tłumaczenie Instruct-150k firmy LLaVA. Jest to pierwszy zbiór danych w języku japońskim zawierający obrazy z dialogami. Oto przykładowy wynik;

Możesz wypróbować także tę wersję demonstracyjną, klikając poniższy link.



Modele, które upubliczniliśmy, obejmują:

Model parametrów 70B jest wciąż w fazie wstępnej. Będziemy kontynuować szkolenia i w miarę opracowywania nowych modeli będziemy je konsekwentnie przesyłać. Chętnie dzielimy się także naszymi metodykami szkoleniowymi.

Ponadto planujemy w przyszłości zaktualizować Heron, włączając:

  • Dodaj metryki oceny
  • Opracuj wieloetapowe metody uczenia się
  • Uwzględnij inne zbiory danych
  • Opracuj modele, które będą w stanie jednocześnie obsługiwać treści wielojęzyczne
  • Ulepsz modele wideo

Wypróbujmy Czaplę! Jeśli jesteś zainteresowany, śledź nasze posty. Aby uzyskać aktualizacje i najnowsze informacje, śledź X/Twitter.