license: llama3.1
language:
- 英文
- 中文
- 西班牙文
- 法文
- 德文
- 日文
- 韩文
- 俄文
base_model:
- meta-llama/Llama-3.1-8B-Instruct
pipeline_tag: 文本生成
library_name: transformers
tags:
- 文本生成推理
- 多语言混合模型
- 安全张量格式
- Llama3.1架构
- 多语言大模型
- 指令微调
- 闪电注意力2.0
- 量化技术
Hiber-Multi-10B-Instruct
架构概览
基于先进Transformer架构构建的尖端多语言大模型:
MODEL_SPECS = {
"架构类型": "纯解码器Transformer",
"参数量": "100亿",
"上下文长度": 4096,
"隐藏层维度": 4096,
"注意力头数": 32,
"键值头数": 8,
"中间层维度": 14336,
"网络层数": 48,
"词表大小": 32000,
"位置编码": "旋转式编码",
"激活函数": "SwiGLU",
"归一化类型": "RMSNorm"
}
核心组件
-
高级注意力机制
- 32头多查询注意力
- 分组查询注意力(8个KV头)
- 闪电注意力2.0优化
- 滑动窗口长序列处理
-
架构创新
- SwiGLU激活函数
- RMSNorm层归一化
- 旋转位置嵌入(RoPE)
- 自适应KV缓存
- 专家混合路由机制
实现示例
from dataclasses import dataclass
from typing import Optional, List, Dict, Union
import torch
import torch.nn.functional as F
from transformers import AutoConfig, AutoModelForCausalLM, AutoTokenizer
@dataclass
class 生成配置:
温度系数: float = 0.7
核心采样率: float = 0.9
候选数: int = 50
重复惩罚: float = 1.1
最大新词数: int = 512
启用采样: bool = True
束搜索数: int = 1
class 多语言推理管道:
def __init__(
self,
模型名称: str = "Hiber-Multi-10B-Instruct",
设备映射: str = "auto",
张量精度: Optional[torch.dtype] = torch.bfloat16,
8位量化: bool = False,
4位量化: bool = False,
):
self.配置 = AutoConfig.from_pretrained(模型名称)
self.分词器 = AutoTokenizer.from_pretrained(
模型名称,
填充侧="left",
截断侧="left",
)
量化配置 = None
if 8位量化 or 4位量化:
from transformers import BitsAndBytesConfig
量化配置 = BitsAndBytesConfig(
load_in_8bit=8位量化,
load_in_4bit=4位量化,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_quant_type="nf4",
)
self.模型 = AutoModelForCausalLM.from_pretrained(
模型名称,
device_map=设备映射,
torch_dtype=张量精度,
quantization_config=量化配置,
trust_remote_code=True,
)
def 生成回复(
self,
消息记录: List[Dict[str, str]],
生成配置: Optional[生成配置] = None,
) -> str:
if 生成配置 is None:
生成配置 = 生成配置()
提示词 = self.分词器.apply_chat_template(
消息记录,
tokenize=False,
add_generation_prompt=True
)
输入张量 = self.分词器(
提示词,
return_tensors="pt",
padding=True,
truncation=True,
max_length=self.配置.max_position_embeddings,
).to(self.模型.device)
with torch.inference_mode():
输出张量 = self.模型.generate(
**输入张量,
pad_token_id=self.分词器.pad_token_id,
bos_token_id=self.分词器.bos_token_id,
eos_token_id=self.分词器.eos_token_id,
**asdict(生成配置),
)
生成结果 = self.分词器.decode(
输出张量[0][输入张量["input_ids"].shape[1]:],
skip_special_tokens=True,
)
return 生成结果.strip()
@torch.inference_mode()
def 批量生成(
self,
批量消息: List[List[Dict[str, str]]],
生成配置: Optional[生成配置] = None,
批量大小: int = 8,
) -> List[str]:
结果列表 = []
for i in range(0, len(批量消息), 批量大小):
当前批次 = 批量消息[i:i + 批量大小]
结果列表.extend([
self.生成回复(消息组, 生成配置)
for 消息组 in 当前批次
])
return 结果列表
性能特征
显存占用
- FP16精度: 20GB显存
- INT8量化: 12GB显存
- INT4量化: 8GB显存
吞吐量(A100 GPU)
- 批大小1: 32词元/秒
- 批大小8: 180词元/秒
- 批大小32: 420词元/秒
延迟(毫秒)
延迟分析 = {
"首词延迟": 42,
"词元吞吐延迟": {
"批处理1": 31.25,
"批处理8": 5.56,
"批处理32": 2.38
},
"上下文扩展系数": {
"1024词元": 1.0,
"2048词元": 1.2,
"4096词元": 1.8
}
}
系统需求
最低配置
- CUDA 11.8+
- PyTorch 2.0+
- 16GB显存(INT8)
- 64GB内存
- 支持AVX2指令集
推荐配置
- CUDA 12.0+
- PyTorch 2.1+
- 24GB+显存
- 128GB内存
- NVIDIA安培架构GPU
- NVMe固态硬盘
引用格式
@software{冬眠多语言_2024,
title = {Hiber-Multi-10B-Instruct: 先进多语言大模型},
author = {{冬眠科技+加州大学研究团队}},
year = {2024},
publisher = {HuggingFace},
version = {1.0.0},
architecture = {Transformer架构},
parameters = {100亿参数},
license = {LLaMA 3.1协议}
}