
올해 4월, 페이스북과 인스타그램을 운영하는 Meta는 최신 Llama 3라는 대규모 언어 모델(LLM)을 출시했습니다.
성능이 뛰어날 뿐만 아니라 오픈 소스이므로 상업적 용도로도 자유롭게 사용할 수 있어 많은 관심을 끌었습니다.
이번 글에서는 Llama 3의 특징과 함께, 사용 방법 및 활용 방안을 소개합니다.
Llama 3는 Meta가 개발한 오픈 소스 대규모 언어 모델입니다.
이전 모델인 Llama 2에서 성능을 크게 향상시킨 Llama 3는 다양한 분야에서 뛰어난 성능을 보여줍니다.
Llama 3는 무료로 사용할 수 있으며, 상업적인 목적으로도 이용 가능합니다.
이는 GPT와 같은 유료 모델과 차별화되는 점입니다.
GPT는 API를 통해 사용 시 토큰 수에 따라 요금이 부과되지만, Llama 3는 비용 부담 없이 자유롭게 활용할 수 있습니다.
이로 인해 기업들은 운영 비용 절감 차원에서 Llama 3를 채택하는 사례가 늘고 있습니다.
GPT를 Llama 3로 대체하면 상당한 비용 절감을 기대할 수 있습니다.
성능 면에서도 Llama 3는 최고 수준을 자랑합니다.
70B 모델 기준으로, 여러 LLM 성능 평가 사이트의 리더보드에서 상위권에 랭크되어 있으며, Llama 3는 Llama 2보다 월등히 향상된 성능을 보입니다.
특히 8B와 70B 파라미터를 가진 다른 모델들과 비교했을 때도 가장 진보된 성능을 자랑합니다.
또한, Llama 3는 오픈 소스이기 때문에 미세 조정(fine-tuning)이 가능해 다양한 산업에 맞는 커스터마이징이 쉽습니다.
Llama 3의 학습 데이터는 약 95%가 영어로 되어 있으며, 나머지 5%는 30개 이상의 비영어권 언어로 구성되어 있습니다.
공식적으로 영어에서 가장 뛰어난 성능을 발휘한다고 발표하고 있지만, 다양한 언어에 대한 지원도 가능하나, 영어와 동일한 수준의 성능을 기대하기는 어렵습니다.
"To prepare for upcoming multilingual use cases, over 5% of the Llama 3 pretraining dataset consists of high-quality non-English data that covers over 30 languages. However, we do not expect the same level of performance in these languages as in English."
Llama 3를 사용하는 방법에는 몇 가지 주요 경로가 있습니다.
Meta는 meta.ai라는 공식 서비스를 통해 Llama 3를 제공할 예정이지만, 현재 시점에서는 한국에서의 서비스 제공이 아직 이루어지지 않았습니다.
Groq는 Google 출신 엔지니어들이 설립한 스타트업으로, 그로크라는 이름의 인터랙티브 생성형 AI 서비스를 제공합니다.
Groq를 통해 Llama 3를 무료로 사용할 수 있으며, 특히 속도가 매우 빠릅니다.
Groq의 특징은 LPU라는 독점 처리 엔진을 사용하여 매우 빠른 출력 속도를 자랑합니다.
실제로 테스트를 진행한 결과, GPT보다 훨씬 빠른 성능을 보였습니다.
하지만 이미지 생성 기능은 제공되지 않는 점은 아쉬운 부분입니다.
Spring AI와 Olma를 사용하여 대규모 언어 모델(LLM)을 Spring Boot 애플리케이션에 통합하는 방법을 다루는 블로그 글을 작성하는 데 필요한 내용을 포스팅하였습니다.
Olma의 설치부터 Spring Boot 애플리케이션과의 통합까지의 과정과 예제 코드를 포함해 상세히 설명할 것입니다.
Spring AI는 Spring Boot 애플리케이션에서 대규모 언어 모델(LLM)을 쉽게 사용할 수 있도록 도와주는 프레임워크입니다.
Spring Boot를 사용하면 복잡한 설정 없이 AI 기능을 애플리케이션에 통합할 수 있습니다.
Olma는 LLM을 로컬 환경에서 실행하고, 다양한 모델을 활용할 수 있게 지원하는 도구입니다.
Olma를 사용하면 Llama 3, Mistal, JGMA 2와 같은 여러 모델을 손쉽게 커스터마이징하고 실행할 수 있습니다.
Olma를 Spring Boot 애플리케이션에 통합하기 위해서는 몇 가지 설치 단계가 필요합니다.
이 과정에서는 Llama 3 모델을 예시로 설명할 것입니다.
해당 명령어는 Llama 3 모델을 실행하기 위한 의존성도 포함합니다.
pip install olma
인터넷 속도에 따라 다운로드 시간이 달라질 수 있습니다.
설치가 완료되면 버전을 확인하여 올바르게 설치되었는지 점검할 수 있습니다.
llama --version
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Spring Boot 애플리케이션에서 Olma를 사용하려면 application.properties 파일을 설정해야 합니다.
기본 URL과 사용할 모델을 지정해 API 요청을 처리할 수 있도록 합니다.
ai.model.url=http://localhost:6060/llama
ai.model.type=llama3
사용자 메시지를 처리하고 AI 모델과 연결하는 ChatController를 생성합니다.
이 컨트롤러는 사용자가 입력한 메시지를 받아 Olma를 통해 AI 모델에 요청하고, 생성된 응답을 반환합니다.
@RestController
@RequestMapping("/chat")
public class ChatController {
private final RestTemplate restTemplate;
public ChatController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@PostMapping("/ask")
public ResponseEntity<String> askQuestion(@RequestBody String question) {
String url = "http://localhost:6060/llama";
Map<String, String> params = new HashMap<>();
params.put("prompt", question);
params.put("temperature", "0.7");
ResponseEntity<String> response = restTemplate.postForEntity(url, params, String.class);
return ResponseEntity.ok(response.getBody());
}
}
Spring Boot에서 RestTemplate을 사용해 API 요청을 보낼 수 있습니다.
이 객체는 외부 API와 HTTP 요청을 처리하는 데 사용됩니다.
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Olma는 다양한 모델을 지원합니다.
Spring Boot에서 이 모델을 호출하여 프롬프트를 전달하고 응답을 받을 수 있습니다. RestTemplate을 사용하여 모델에 HTTP 요청을 보내고 응답을 처리합니다.
사용자가 입력한 질문에 대한 답변을 생성하기 위해서는, 프롬프트와 함께 모델을 호출하는 API 요청을 작성합니다.
@PostMapping("/ask")
public ResponseEntity<String> askQuestion(@RequestBody String question) {
String url = "http://localhost:6060/llama";
Map<String, String> params = new HashMap<>();
params.put("prompt", question);
params.put("temperature", "0.7");
// 요청 보내기
ResponseEntity<String> response = restTemplate.postForEntity(url, params, String.class);
// AI 모델로부터 받은 응답 반환
return ResponseEntity.ok(response.getBody());
}
Olma를 통해 받은 응답은 JSON 형식으로 반환됩니다.
예를 들어, 질문 "한국의 수도는 어디인가?"에 대해 AI는 관련 정보를 반환합니다.
{
"response": "한국의 수도는 서울 입니다."
}
Olma는 데이터 검색을 위한 임베딩 모델을 지원합니다.
이를 통해 특정 데이터를 효과적으로 검색할 수 있습니다.
예를 들어, 사용자가 원하는 정보나 데이터를 검색하여 관련 응답을 생성할 수 있습니다.
@PostMapping("/search")
public ResponseEntity<String> search(@RequestBody String query) {
String url = "http://localhost:6060/embedding";
Map<String, String> params = new HashMap<>();
params.put("query", query);
ResponseEntity<String> response = restTemplate.postForEntity(url, params, String.class);
return ResponseEntity.ok(response.getBody());
}
Llama 3는 그 자체로 고성능 언어 모델이기 때문에 다양한 산업에서 활용할 수 있는 가능성을 가지고 있습니다.
특히 기업 내부 FAQ, 보고서 작성, 고객 서비스 챗봇 등 다양한 비즈니스 환경에서 효율적으로 활용될 수 있습니다.
오픈 소스이기 때문에 자체 서버에 배포하고 커스터마이징하여 특화된 용도로 사용할 수도 있습니다.
Llama 3의 등장으로 이제는 고성능 AI 모델을 저비용으로 사용할 수 있는 길이 열렸습니다.
오픈 소스 모델의 강력한 성능을 바탕으로 비용 절감과 효율적인 AI 활용이 가능해졌습니다.
특히 기업에서는 Llama 3를 커스터마이징하여 자신만의 맞춤형 언어 모델을 구축할 수 있는 큰 기회를 얻게 되었습니다.
AI 기술을 도입하고자 하는 기업들에게 Llama 3는 실용적이고 경제적인 선택이 될 것입니다. 향후 다양한 활용 방법과 커스터마이징이 가능해질 것으로 기대됩니다.
이 글에서는 Spring Boot 애플리케이션에 Olma를 사용하여 LLM 모델을 통합하는 방법을 설명했습니다.
설치부터 모델 호출, 데이터 검색에 이르기까지의 과정을 단계별로 다루었으며, 예제 코드도 함께 제공했습니다.
이와 같은 방식으로 대규모 언어 모델을 활용하여 AI 기반 애플리케이션을 개발할 수 있습니다.
Olma와 Spring AI의 통합을 통해 더욱 강력한 자연어 처리 기능을 구현할 수 있습니다.