ChatGPT 만들어서 떼돈 벌어보겠습니다
최근 Mata에서 공개한 Llama와 같이, 최근에는 오픈소스형 인공지능 모델을 쉽게 찾아볼 수 있습니다.

llama-node라고 인공지능 학습 모델을 쉽게 연결 시켜주는 package가 존재합니다. 해당 패키지를 이용해서 ChatGPT 모작을 만들어보겠습니다. llama-node의 소개페이지(https://llama-node.vercel.app)에 들어가보면 샘플코드를 확인 할 수 있습니다.

해당 코드를 응용하여 아래와 같이 코드를 작성하였습니다.
import readline from "readline";
import { LLM } from "llama-node";
import { LLamaCpp } from "llama-node/dist/llm/llama-cpp.js";
import path from "path";
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const model = path.resolve(process.cwd(), "모델명");
const llama = new LLM(LLamaCpp);
async function loadLlama() {
await llama.load({
modelPath: model,
enableLogging: true,
nCtx: 1024,
seed: 0,
f16Kv: false,
logitsAll: false,
vocabOnly: false,
useMlock: false,
embedding: false,
useMmap: true,
nGpuLayers: 0,
});
}
async function processInput() {
rl.question("텍스트를 입력하세요: ", async (prompt) => {
await run(prompt);
});
}
async function run(prompt) {
await llama.createCompletion({
nThreads: 4,
nTokPredict: 2048,
topK: 40,
topP: 0.1,
temp: 0.2,
repeatPenalty: 1,
prompt,
}, (response) => {
process.stdout.write(response.token);
if(response.completed) processInput();
});
}
(async () => {
await loadLlama();
processInput();
})();
사용한 패키지는 "llama-node"와 "@llama-node/llama-cpp"이며, 모델로는 위에서 언급한 mata의 Open AI Model인 "llama-2-7b-chat.ggmlv3.q5_1.bin"와 샘플코드에 기재되어 있고, 좋은 성능으로 평가 받고 있는 "vicuna-7b-v1.3.ggmlv3.q5_1.bin"를 사용하였습니다. 여기서 우리는 파일명으로부터 해당 모델이 어떠한 특징을 가지고 있는지 알아둘 필요가 있을 것 같습니다.
| llama-2, vicuna | 모델명을 의미합니다. |
| 7b | 모델의 크기와 학습에 사용된 파라미터의 양을 나타냅니다. "b"는 billion(10억)을 의미하며, 여기서는 파라미터의 수를 나타냅니다. 따라서 "7b"는 700억 개의 파라미터를 갖는 모델을 나타냅니다. 많은 파라미터는 모델이 데이터의 다양한 특성과 패턴을 더 세밀하게 학습할 수 있게 해주어 보다 정밀한 예측을 가능하게 합니다. |
| ggmlv3 | GGML은 GPU 없이 CPU를 활용해서 개인 컴퓨터에서도 LLM(Large Language Model)을 돌리기 위한 경량화 라이브러리입니다. v3는 아마도 버전으로 추측됩니다. |
| q5_1 | quantization(양자화)를 의미합니다. AI에서 양자화는 주로 모델의 가중치(weight)와 활성화 함수의 출력을 특정한 범위 내의 값으로 제한하는 과정을 가리킵니다. 이것은 모델의 파라미터를 효율적으로 저장하고 연산량을 줄이는 등의 목적으로 사용됩니다. |
자 이제 동작시켜 볼까요? 먼저 llama-2입니다.

혹시 꽤나 준수하다고 생각하셨나요? 아쉽게도 위의 캡쳐본은 5배속으로 돌린겁니다... GPU가 없는 노트북에서 동작시킨거라지만 상당히 느리군요. 해당 부분은 GGML과도 연관이 있는 부분이라고 생각이 들어 섣불리 성능을 판별하기는 어려울 것 같습니다. 그래도 꽤나 AI스럽게 동작하는 Llama!
이번엔 vicuna를 테스트 해보겠습니다.

??? 저의 질문을 제대로 인식하지 못하는 것 같습니다. 다른 질문을 해볼까요?

"favorite movie"가 뭐냐고 묻는 vicuna... 성능 좋다며...
오늘의 한마디 : OPEN SOURCE AI Model로 돈버는건 무리! 코딩공부 더 열심히 하자!