模型简介
模型特点
模型能力
使用案例
🚀 AKALLAMA
AkaLlama是一系列韩语语言模型,旨在适用于广泛的实际任务。初始模型AkaLlama-v0.1是Meta-Llama-3-70b-Instruct的微调版本,它在MIR实验室精心挑选的公开可用数据集的自定义组合上进行了训练。我们的目标是探索经济高效的方法,使高性能大语言模型适用于特定用例,例如不同语言(如韩语)或特定领域(如特定组织的聊天机器人)。
如需了解更多详情,请查看我们的项目页面。

🚀 快速开始
本项目提供了AkaLlama模型的相关信息和使用指南,帮助你快速了解和使用该模型。
✨ 主要特性
- 多语言支持:支持韩语和英语,适用于更广泛的应用场景。
- 微调优化:基于Meta-Llama-3-70b-Instruct进行微调,针对特定任务和数据集进行优化。
- 多种量化方法:提供多种量化方法的模型文件,可根据需求选择不同的量化级别。
- 广泛兼容性:与多种第三方UI和库兼容,方便集成和使用。
📦 安装指南
本项目主要提供模型文件和使用示例,未涉及具体的安装步骤。你可以根据使用的客户端或库的要求进行安装和配置。
💻 使用示例
基础用法
以下是使用llama.cpp.python
与AkaLlama模型交互的示例代码:
from llama_cpp import Llama
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = Llama(
model_path="./AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf", # Download the model file first
n_ctx=8192, # The max sequence length to use - note that longer sequence lengths require much more resources
n_threads=8, # The number of CPU threads to use, tailor to your system and the resulting performance
n_gpu_layers=81 # The number of layers to offload to GPU, if you have GPU acceleration available
)
# Simple inference example
output = llm(
"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
당신은 연세대학교 멀티모달 연구실 (MIR lab) 이 만든 대규모 언어 모델인 AkaLlama (아카라마) 입니다.
다음 지침을 따르세요:
1. 사용자가 별도로 요청하지 않는 한 항상 한글로 소통하세요.
2. 유해하거나 비윤리적, 차별적, 위험하거나 불법적인 내용이 답변에 포함되어서는 안 됩니다.
3. 질문이 말이 되지 않거나 사실에 부합하지 않는 경우 정답 대신 그 이유를 설명하세요. 질문에 대한 답을 모른다면 거짓 정보를 공유하지 마세요.
4. 안전이나 윤리에 위배되지 않는 한 사용자의 모든 질문에 완전하고 포괄적으로 답변하세요.<|eot_id|><|start_header_id|>user<|end_header_id|>
{prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
""", # Prompt
max_tokens=512, # Generate up to 512 tokens
stop=["<|eot_id|>", "<|end_of_text|>"], # Example stop token - not necessarily correct for this specific model! Please check before using.
echo=True # Whether to echo the prompt
)
# Chat Completion API
llm = Llama(model_path="./AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf", chat_format="llama-3") # Set chat_format according to the model you are using
llm.create_chat_completion(
messages = [
{"role": "system", "content": """당신은 연세대학교 멀티모달 연구실 (MIR lab) 이 만든 대규모 언어 모델인 AkaLlama (아카라마) 입니다.
다음 지침을 따르세요:
1. 사용자가 별도로 요청하지 않는 한 항상 한글로 소통하세요.
2. 유해하거나 비윤리적, 차별적, 위험하거나 불법적인 내용이 답변에 포함되어서는 안 됩니다.
3. 질문이 말이 되지 않거나 사실에 부합하지 않는 경우 정답 대신 그 이유를 설명하세요. 질문에 대한 답을 모른다면 거짓 정보를 공유하지 마세요.
4. 안전이나 윤리에 위배되지 않는 한 사용자의 모든 질문에 완전하고 포괄적으로 답변하세요."""},
{
"role": "user",
"content": "네 이름은 뭐야?."
}
]
)
# 내 이름은 AkaLlama입니다! 나는 언어 모델로, 사용자와 대화하는 데 도움을 주기 위해 만들어졌습니다. 나는 다양한 주제에 대한 질문에 답하고, 새로운 아이디어를 제공하며, 문제를 해결하는 데 도움이 될 수 있습니다. 사용자가 원하는 정보나 도움을 받도록 최선을 다할 것입니다!
📚 详细文档
模型描述
这是一个已发布在Hugging Face Hub上的GGUF模型的卡片信息:
属性 | 详情 |
---|---|
开发团队 | 延世大学MIR实验室 |
支持语言 | 韩语、英语 |
许可证 | llama3 |
微调基础模型 | meta-llama/Meta-Llama-3-70B-Instruct |
量化基础模型 | mirlab/AkaLlama-llama3-70b-v0.1 |
关于GGUF
GGUF是由llama.cpp
团队在2023年8月21日引入的一种新格式,它是GGML的替代方案,目前GGML已不再被llama.cpp
支持。
以下是已知支持GGUF的客户端和库的不完全列表:
- llama.cpp:GGUF的源项目,提供命令行界面(CLI)和服务器选项。
- text-generation-webui:最广泛使用的Web UI,具有许多功能和强大的扩展,支持GPU加速。
- KoboldCpp:功能齐全的Web UI,支持跨所有平台和GPU架构的GPU加速,特别适合讲故事。
- GPT4All:一个免费开源的本地运行GUI,支持Windows、Linux和macOS,具备完整的GPU加速功能。
- LM Studio:一个易于使用且功能强大的本地GUI,适用于Windows和macOS(Silicon),支持GPU加速,截至2023年11月27日,Linux版本处于测试阶段。
- LoLLMS Web UI:一个很棒的Web UI,具有许多有趣和独特的功能,包括一个完整的模型库,方便选择模型。
- Faraday.dev:一个有吸引力且易于使用的基于角色的聊天GUI,适用于Windows和macOS(Silicon和Intel),支持GPU加速。
- llama-cpp-python:一个支持GPU加速的Python库,支持LangChain,提供与OpenAI兼容的API服务器。
- candle:一个专注于性能的Rust机器学习框架,包括GPU支持,易于使用。
- ctransformers:一个支持GPU加速的Python库,支持LangChain,提供与OpenAI兼容的AI服务器。请注意,截至2023年11月27日,
ctransformers
已经很长时间没有更新,不支持许多最新的模型。
兼容性
这些量化后的GGUFv2文件与2023年8月27日之后的llama.cpp
版本兼容,具体为提交版本d0cee0d。
它们也与许多第三方UI和库兼容,具体请参考本README开头的列表。
量化方法说明
点击查看详细信息
可用的新量化方法如下:
- GGML_TYPE_Q2_K:“type-1” 2位量化,超级块包含16个块,每个块有16个权重。块的缩放因子和最小值使用4位量化,最终每个权重有效使用2.5625位(bpw)。
- GGML_TYPE_Q3_K:“type-0” 3位量化,超级块包含16个块,每个块有16个权重。缩放因子使用6位量化,最终每个权重使用3.4375位。
- GGML_TYPE_Q4_K:“type-1” 4位量化,超级块包含8个块,每个块有32个权重。缩放因子和最小值使用6位量化,最终每个权重使用4.5位。
- GGML_TYPE_Q5_K:“type-1” 5位量化,与GGML_TYPE_Q4_K具有相同的超级块结构,最终每个权重使用5.5位。
- GGML_TYPE_Q6_K:“type-0” 6位量化,超级块包含16个块,每个块有16个权重。缩放因子使用8位量化,最终每个权重使用6.5625位。
请参考下面的“提供的文件”表格,了解哪些文件使用了哪些方法以及如何使用。
提供的文件
文件名 | 量化方法 | 位数 | 大小 | 所需最大RAM | 使用场景 |
---|---|---|---|---|---|
AkaLlama-llama3-70b-v0.1.Q2_K.gguf | Q2_K | 2 | 26.4 GB | 28.9 GB | 最小,但质量损失显著,不建议用于大多数场景 |
AkaLlama-llama3-70b-v0.1.Q3_K_S.gguf | Q3_K_S | 3 | 30.9 GB | 33.4 GB | 非常小,但质量损失高 |
AkaLlama-llama3-70b-v0.1.Q3_K_M.gguf | Q3_K_M | 3 | 34.3 GB | 36.8 GB | 非常小,但质量损失高 |
AkaLlama-llama3-70b-v0.1.Q3_K_L.gguf | Q3_K_L | 3 | 37.1 GB | 39.6 GB | 小,但质量损失较大 |
AkaLlama-llama3-70b-v0.1.Q4_K_S.gguf | Q4_K_S | 4 | 40.3 GB | 42.8 GB | 小,但质量损失较大 |
AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf | Q4_K_M | 4 | 42.5 GB | 45.0 GB | 中等大小,质量平衡,推荐使用 |
AkaLlama-llama3-70b-v0.1.Q5_K_S.gguf | Q5_K_S | 5 | 48.7 GB | 50.2 GB | 大,质量损失低,推荐使用 |
AkaLlama-llama3-70b-v0.1.Q5_K_M.gguf | Q5_K_M | 5 | 50.0 GB | 52.5 GB | 大,质量损失非常低,推荐使用 |
AkaLlama-llama3-70b-v0.1.Q6_K.gguf | Q6_K | 6 | 54.4 GB | 59.9 GB | 非常大,质量损失极低 |
AkaLlama-llama3-70b-v0.1.Q8_0.gguf | Q8_0 | 8 | 70.0 GB | 72.5 GB | 非常大,质量损失极低,但不推荐使用 |
注意:上述RAM数字假设没有进行GPU卸载。如果将层卸载到GPU,将减少RAM使用并使用VRAM。
Q6_K和Q8_0文件是拆分的,需要合并
注意:Hugging Face不支持上传大于50GB的文件,因此我将Q6_K和Q8_0文件作为拆分文件上传。
Q6_K文件
请下载以下文件:
AkaLlama-llama3-70b-v0.1.Q6_K.00001-of-00002.gguf
AkaLlama-llama3-70b-v0.1.Q6_K.00002-of-00002.gguf
Q8_0文件
请下载以下文件:
AkaLlama-llama3-70b-v0.1.Q8_0.00001-of-00002.gguf
AkaLlama-llama3-70b-v0.1.Q8_0.00002-of-00002.gguf
要合并这些文件,请执行以下操作:
Linux和macOS系统:
cat AkaLlama-llama3-70b-v0.1.Q6_K.*-of-00002.gguf > AkaLlama-llama3-70b-v0.1.Q6_K.gguf && rm AkaLlama-llama3-70b-v0.1.Q6_K.*-of-00002.gguf
cat AkaLlama-llama3-70b-v0.1.Q8_0.*-of-00002.gguf > AkaLlama-llama3-70b-v0.1.Q8_0.gguf && rm AkaLlama-llama3-70b-v0.1.Q8_0.*-of-00002.gguf
Windows命令行:
COPY /B AkaLlama-llama3-70b-v0.1.Q6_K.00001-of-00002.gguf + AkaLlama-llama3-70b-v0.1.Q6_K.00002-of-00002.gguf AkaLlama-llama3-70b-v0.1.Q6_K.gguf
del AkaLlama-llama3-70b-v0.1.Q6_K.00001-of-00002.gguf AkaLlama-llama3-70b-v0.1.Q6_K.00002-of-00002.gguf
COPY /B AkaLlama-llama3-70b-v0.1.Q8_0.00001-of-00002.gguf + AkaLlama-llama3-70b-v0.1.Q8_0.00002-of-00002.gguf AkaLlama-llama3-70b-v0.1.Q8_0.gguf
del AkaLlama-llama3-70b-v0.1.Q8_0.00001-of-00002.gguf AkaLlama-llama3-70b-v0.1.Q8_0.00002-of-00002.gguf
评估结果
模型 | 参数数量 | 是否量化 | LogicKor* |
---|---|---|---|
AkaLlama-llama3-70b-v0.1-GGUF.Q4 | 70B | 4位 | 6.56 |
AkaLlama-llama3-70b-v0.1-GGUF.Q8 | 70B | 8位 | 6.34 |
*基于3个随机种子的平均值
训练细节
训练过程
我们使用一种名为Odds Ratio Preference Optimization (ORPO)的偏好学习对齐算法来训练AkaLlama。
我们的训练流程与HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1几乎相同,仅在超参数上有细微调整。
有关更多详细信息,包括聊天模板,请查看Hugging Face的对齐手册。
训练数据
关于训练数据的详细描述将在后续公布。
示例
你可以在我们的项目页面找到更多示例。
以下是一些模型交互的示例:
数学问题求解[点击展开]
User: 아래 문제를 깊게 생각하면서 풀어봐 연필 5 타와 지우개 45 개가 있습니다. 이것을 될 수 있는 대로 많은 학생들에게 남김없이 똑같이 나누어 주려고 합니다. 몇 명까지 나누어 줄 수 있습니까? Model: 아래 문제를 깊게 생각하면서 풀어봅시다: 연필 5 타와 지우개 45 개가 있습니다. 이것을 될 수 있는 대로 많은 학생들에게 남김없이 똑같이 나누어 주려고 합니다. 몇 명까지 나누어 줄 수 있습니까? 풀이: 1. 연필 5 타를 1 개씩 나눠서 몇 명에게 나누어 줄 수 있는지 먼저 구합니다. - 각 연필에는 12개의 연필이 포함되어 있습니다. 따라서 총 12 * 5 = 60개입니다. - 60개를 1명당 1개씩 나누면 60명의 학생들에게 나눠줄 수 있습니다. 2. 지우개 45 개를 1 개씩 나누어 몇 명에게 나누어 줄 수 있는지 구합니다. - 45 개를 1 명당 1 개씩 나누면 45 명의 학생들에게 나눠줄 수 있습니다. 3. 연필과 지우개의 두 가지 물품을 함께 고려하여 가장 많은 학생들에게 똑같이 나누어 줄 수 있는 방법을 찾습니다. - 연필로만 60명, 지우개로만 45명의 학생에게 나눠줄 수 있으므로, 두 종류의 문구를 함께 고려할 때는 이보다 적은 수의 학생에게 나눠주어야 합니다. - 이 중에서 공통인수(common divisor)를 찾아서 이를 최소 단위로 설정하면 됩니다. - 60과 45의 최대공약수(GCD)는 15입니다. 4. 연필과 지우개 각각을 GCD(15)로 나누어 몇 개씩 나눠줄 수 있는지 구합니다. - 연필은 60 / 15 = 4개씩, 총 4 * 12 = 48개의 연필이 필요합니다. - 지우개는 45 / 15 = 3개씩, 총 3 * 1 = 3개의 지우개가 필요합니다. 5. 최종적으로, 가장 많은 학생들에게 똑같이 나누어 줄 수 있는 방법은 연필과 지우개를 GCD(15)로 나누어 각 학생에게 4개의 연필과 3개의 지우개를 제공하는 것입니다. - 이 경우 총 48 + 3 = 51개의 물품을 사용하여 15명의 학생들에게 똑같이 나눠줄 수 있습니다. 결론: 연필과 지우개 각각을 GCD(15)로 나누어 각 학생에게 4개의 연필과 3개의 지우개를 제공하는 방법으로 최대 15명의 학생들에게 똑같이 나누어 줄 수 있습니다.
语法纠错[点击展开]
User: 아래 문장을 보고 문법적으로 틀린부분을 지적해줘 그는 서슴치 않고 비평한다. Model: 서슴치"라는 단어는 "서슴"이라는 동사와 "치"라는 접미사를 사용하여 만든 단어입니다. 이 단어는 "서슴"의 의미를 반복적으로 표현하는 데 사용되는 조동사적 용법으로, "서슴"이란 동사의 반복적인 행동을 강조합니다. 따라서 문장에서 "서슴치"라는 단어는 중복적으로 사용되어 문법적으로 틀린 부분입니다.정답은 다음과 같습니다: 그는 서슴없이 비평한다.
诗歌解读与改写[点击展开]
User: 윤동주 시인의 "별 헤는 밤"을 보고 당시 시대상을 고려해서 해석해봐. 그리고 이를 작가의 독백형식으로 다시 작성해봐. Model: 윤동주는 1941년 일본 제국주의 치하에서 이 작품을 쓰면서, 강압적인 상황 속에서도 자신의 정체성과 문화에 대한 애착을 표현하고자 했습니다. 그는 하늘에 가득 찬 별들을 보며 그 속에 하나 둘 새겨지는 별들이 있다고 표현했습니다. 이러한 별들은 각각 추억, 사랑, 쓸쓸함, 동경, 시 등 다양한 감정을 담고 있습니다. 윤동주는 이 별들 중 하나에 어머니를 부르며 멀리 떨어져 있는 것을 그리워하며, 자신의 이름자를 언덕 위에 쓰고 흙으로 덮어 버린다고 말합니다. 이러한 행동은 자신의 정체성을 확인하고, 잃어버린 것을 되찾으려는 노력으로 볼 수 있습니다. 윤동주는 또한 자신이 죽고 나면 무덤 위에 파란 잔디가 피어나듯이 자신의 이름자 묻힌 언덕 위에도 풀이 무성할 것이라고 말합니다. 이는 당시의 사회상과 작가의 내면을 반영하고 있으며, 한국인의 정체성을 확인하고 잃어버린 것을 되찾으려는 노력, 그리고 죽음 이후에 자신의 존재를 남겨두고 싶다는 바람을 담고 있습니다. 이 시를 작가의 독백형식으로 다시 작성하면 다음과 같습니다: "저는 이 별들이 너무나 많은 것 같아요. 하나 둘 새겨지는 별들 중에는 추억도 있고, 사랑도 있고, 쓸쓸함과 동경도 있어요. 그리고 어머니, 당신은 멀리 북간도에 계신 건가요? 저는 당신을 부르고 싶어요. 저의 이름자는 언덕 위에 쓰고 흙으로 덮어 버렸어요. 딴은 밤을 새워 우는 벌레처럼 부끄러운 이름을 슬퍼하는 이유가 있어요. 하지만 겨울이 지나고 나의 별에도 봄이 오면, 무덤 위에 파란 잔디가 피어나듯이 저의 이름자 묻힌 언덕 위에서도 풀이 무성할 거예요. 저는 이 별들을 보고, 자신의 정체성을 확인하고 싶어요. 잃어버린 것을 되찾으려는 노력을 하고 싶어요. 죽음 이후에도 자신의 존재를 남겨두고 싶어요."
逻辑推理[点击展开]
User: 세종대왕의 맥북프로 던짐 사건에 대해 설명해줘 Model: 세종대왕이 맥북프로를 던진 사건은 사실무근한 이야기입니다. 세종대왕은 조선 제4대 국왕으로 1418년부터 1450년까지 재위했습니다. 그는 과학, 문학, 예술 등 다양한 분야에 관심을 갖고 연구하였으며, 특히 한글 창제와 천문학에 큰 공헌을 했습니다. 한편 맥북프로는 애플이 생산하는 노트북 컴퓨터로, 세종대왕 시대의 기술로는 존재할 수 없는 제품입니다. 따라서 세종대왕이 맥북프로를 던진 사건은 사실과 맞지 않는 이야기가 될 것입니다.
代码实现[点击展开]
User:
PyTorch를 사용해서 간단한 CNN을 구현해봐.
Model:
네, 물론이에요! PyTorch를 사용하여 간단한 CNN을 구현하는 예제 코드를 보여드릴게요.
우선, 필요한 라이브러리를 가져와야 해요. PyTorch의 `torch`와 `nn` 모듈이 필요해요.
```python
import torch
import torch.nn as nn
```
그 다음, 간단한 CNN 모델을 정의할 거예요. 이 경우에는 2개의 컨볼루션 레이어와 3개의 풀링 레이어로 구성된 모델이에요.
```python
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
def forward(self, x):
x = self.pool(torch.relu(self.conv1(x)))
x = self.pool(torch.relu(self.conv2(x)))
return x
이제 모델을 초기화하고, 입력 데이터를 준비해야 해요. 여기서는 임의의 28x28 크기의 이미지 데이터를 생성했어요.
```python
model = SimpleCNN()
input_data = torch.randn(1, 1, 28, 28)
마지막으로, 모델에 입력 데이터를 넣어 출력을 확인할 수 있어요.
output = model(input_data)
print(output.shape)
이렇게 하면 간단한 CNN 모델을 PyTorch를 사용해 구현하고, 입력 데이터를 통해 출력을 확인할 수 있어요. 물론 실제로는 더 많은 레이어나 파라미터 튜닝 등이 필요하지만, 이 코드는 기본적인 CNN 구조를 보여주는 예제일 뿐이에요. 더 궁금한 점이 있으면 언제든지 물어봐 주세요!
🔧 技术细节
训练过程
我们使用Odds Ratio Preference Optimization (ORPO)算法对AkaLlama进行训练,训练流程与HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1相似,仅对部分超参数进行了微调。
量化方法
模型提供了多种量化方法,不同的量化方法在模型大小、所需内存和性能上有所不同。具体量化方法的说明请参考“详细文档”部分的“量化方法说明”。
📄 许可证
本项目使用llama3许可证,具体许可证信息请参考LICENSE文件。
⚠️ 重要提示
尽管AKALlama-70B具有很大的潜力,但其回复有时可能不准确、有偏差或不一致。如果在没有额外测试和优化的情况下使用,可能会带来风险。此外,模型输出的质量很大程度上受到系统提示和译码策略的影响,这些方面的变化可能导致输出不够精确。因此,我们强烈建议谨慎使用我们的模型。
💡 使用建议
在使用模型之前,建议对模型进行充分的测试和评估,根据具体需求选择合适的量化方法和配置参数。同时,注意调整系统提示和译码策略,以获得更好的输出效果。
引用方式
如果您在工作中使用了我们的模型,请按照以下方式引用:
@misc{akallama,
author = {Chung, Jiwan and Jeon, Jaehyun and Kim, Saejin and Lim, Seungwon and Oh, Giyeong and Son, Yejin and Yu, Youngjae},
title = {AkaLlama: Yonsei University Large Language Model Project},
year = {2024},
publisher = {Hugging Face},
journal = {Hugging Face repository},
howpublished = {\url{https://huggingface.co/mirlab/AkaLlama-llama3-70b-v0.1}},
}
联系我们
我们期待您的反馈,并欢迎在这个令人兴奋的项目上进行合作!
贡献者
特别感谢
感谢延世大学人工智能系数据中心提供的计算资源。
鸣谢
标题图片由DALL·E 3生成。



