模型概述
模型特點
模型能力
使用案例
🚀 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生成。



