许可证:其他
许可证名称:英特尔研究用途许可证
许可证链接:LICENSE
标签:
- 英特尔
- 高迪
- 大语言模型
性能指标:
- 任务:
类型:大语言模型
名称:大语言模型
指标:
- 类型:GQA
名称:GQA
值:60.6138
- 类型:MMVP
名称:MMVP
值:36
- 类型:Pope准确率
名称:Pope准确率
值:87.33
- 类型:Pope F1
名称:Pope F1
值:86.5
- 类型:MMVet
名称:MMVet
值:31.9725
- 类型:科学问答
名称:科学问答
值:72.9797
- 类型:llavaw (1)
名称:llavaw
值:56.9
- 类型:llavaw (2)
名称:llavaw
值:61.9
- 类型:llavaw (3)
名称:llavaw
值:73.6
- 类型:llavaw (4)
名称:llavaw
值:65.7
库名称:transformers
流水线标签:图像文本到文本
模型详情:LLaVA-llama-3-8B
llava-llama-3-8b
是一个基于LLaVA-v1.5框架训练的大型多模态模型(LMM),采用80亿参数的meta-llama/Meta-Llama-3-8B-Instruct
作为语言主干,并配备基于CLIP的视觉编码器。
本模型卡片由Eduardo Alvarez及上述作者共同创建。
预期用途
预期用途 |
描述 |
主要用途 |
该模型针对多模态基准评估进行了微调,但也可用作多模态聊天机器人。 |
主要用户 |
任何使用或评估多模态模型的用户。 |
非适用范围 |
该模型不适用于需要高事实性、高风险场景、心理健康或医疗应用、生成错误或虚假信息、冒充他人、助长或煽动骚扰或暴力行为,以及任何可能导致违反《联合国人权宣言》中人权条款的用途。 |
使用方法
请注意,我们仅提供训练后的权重差异,不提供基础模型meta-llama/Meta-Llama-3-8B-Instruct的副本。使用这些权重需单独下载基础模型。
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForPreTraining
import transformers
def expand2square(pil_img, background_color):
width, height = pil_img.size
if width == height:
return pil_img
elif width > height:
result = Image.new(pil_img.mode, (width, width), background_color)
result.paste(pil_img, (0, (width - height) // 2))
return result
else:
result = Image.new(pil_img.mode, (height, height), background_color)
result.paste(pil_img, ((height - width) // 2, 0))
return result
def add_model_a_to_b(model_a, model_b):
state_dict_a = model_a.state_dict()
state_dict_b = model_b.state_dict()
if set(state_dict_a.keys()) != set(state_dict_b.keys()):
raise ValueError("模型状态字典的键不匹配。")
for key in state_dict_a:
if state_dict_a[key].shape != state_dict_b[key].shape:
raise ValueError(f"键'{key}'的形状不匹配:{state_dict_a[key].shape} 对比 {state_dict_b[key].shape}")
state_dict_b[key] = state_dict_b[key] + state_dict_a[key]
model_b.load_state_dict(state_dict_b)
output_checkpoint = ""
hf_checkpoint = "Intel/llava-llama-3-8b"
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = AutoProcessor.from_pretrained(hf_checkpoint)
model = AutoModelForPreTraining.from_pretrained(hf_checkpoint)
if model.language_model.model.embed_tokens.weight[-1].sum() == 0:
print("添加llama3权重")
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"文本生成",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="cpu",
)
llama3 = pipeline.model
add_model_a_to_b(llama3, model.language_model)
if output_checkpoint:
print("保存权重,避免重复添加")
model.save_pretrained(output_checkpoint)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
prompt = processor.tokenizer.apply_chat_template(
[{'role': '用户', 'content': "<image>\n图片内容是什么?"}],
tokenize=False,
add_generation_prompt=True
)
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
image = Image.open(requests.get(url, stream=True).raw)
image = expand2square(image, tuple(int(x*255) for x in processor.image_processor.image_mean))
inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
generate_ids = model.generate(**inputs, max_length=30)
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
影响因素
因素 |
描述 |
环境 |
在配备32个高迪2加速器的4节点集群上训练 |
硬件提示 |
在不同硬件和软件上训练和部署模型会影响性能 |
训练数据
模型使用LLaVA-v1.5数据混合训练,具体包括:
- 来自LAION/CC/SBU的558K过滤图像-文本对,由BLIP标注。
- 158K GPT生成的多模态指令跟随数据。
- 450K学术任务导向的VQA数据混合。
- 40K ShareGPT数据。
伦理考量
英特尔致力于尊重人权,避免造成或助长对人权的负面影响。参见英特尔全球人权原则。英特尔的产品和软件仅用于不会造成或助长人权负面影响的场景。
伦理考量 |
描述 |
数据 |
模型使用上述LLaVA-v1.5数据混合训练。 |
人类生活 |
该模型不应用于影响人类生活或福祉的核心决策。 |
缓解措施 |
模型开发过程中未考虑额外的风险缓解策略。 |
风险与危害 |
该模型未进行危害或偏见评估,不应用于可能造成危害的敏感场景。 |
使用案例 |
- |
注意事项与建议
用户(包括直接和间接使用者)应了解模型的风险、偏见和局限性。该模型未进行危害或偏见评估,不应用于可能造成危害的敏感场景。