Google의 DeepMind와 Meta 출신의 동문이 설립한 파리 소재 스타트업 미스트랄 AI 2023년 이래로 AI 커뮤니티에서 꾸준히 화제를 모았습니다.
Mistral AI는 2023년 출시된 데뷔 모델 Mistral 7B로 세계의 주목을 받았습니다. 이 70억 개의 매개변수 모델은 다양한 벤치마크에서 Llama 2 13B와 같은 대형 모델을 능가하고 심지어 경쟁할 수 있는 인상적인 성능으로 빠르게 주목을 받았습니다. 야마 1 34B는 많은 지표에서 어떤 세트인가 미스트랄 7B 그 성능뿐만 아니라 접근성도 중요한 요소였습니다. 즉, 모델을 쉽게 사용할 수 있었습니다. GitHub에서 다운로드 또는 13.4기가바이트 토런트를 통해서도 제공되므로 전 세계의 연구자와 개발자가 손쉽게 이용할 수 있습니다.
이 회사의 보도자료에 대한 비전통적인 접근 방식은 종종 전통적인 논문, 블로그 또는 보도자료를 앞지르는 방식으로 AI 커뮤니티의 관심을 사로잡는 데 놀라울 정도로 효과적임이 입증되었습니다. 이 전략은 오픈소스 원칙에 대한 헌신과 결합하여 Mistral AI를 AI 분야에서 강력한 플레이어로 자리매김했습니다.
Mistral AI가 업계에서 빠르게 성장한 것은 최근 자금 조달 성공으로 더욱 입증되었습니다. 이 회사는 Andreessen Horowitz가 주도한 자금 조달 라운드를 거쳐 무려 20억 달러의 가치를 달성했습니다. 이는 유럽 역사상 가장 큰 규모인 1억 1,800만 달러의 역사적인 시드 라운드에 이어 이루어졌으며, 투자자들이 Mistral AI의 비전과 역량에 대해 엄청난 신뢰를 가지고 있음을 보여줍니다.
미스트랄 AI는 기술적 진보 외에도 AI 정책 형성에도 적극적으로 참여해 왔습니다. 특히 EU AI법에 따른 논의에 적극적으로 참여해 오픈소스 AI에 대한 규제 완화를 옹호했습니다.
이제 2024년에 Mistral AI는 두 가지 획기적인 모델로 다시 한 번 기준을 높였습니다. 미스트랄 라지 2 (Mistral-Large-Instruct-2407로도 알려짐) 미스트랄 네모. 이 포괄적인 가이드에서는 이러한 인상적인 AI 모델의 기능, 성능 및 잠재적인 응용 프로그램을 자세히 살펴보겠습니다.
Mistral Large 2의 주요 사양은 다음과 같습니다.
- 1230억 매개변수
- 128k 컨텍스트 창
- 수십 개의 언어 지원
- 능숙함 80+ 코딩 언어들
- 고급 함수 호출 기능
이 모델은 비용 효율성, 속도, 성능의 경계를 넓히도록 설계되어 최첨단 AI를 활용하려는 연구자와 기업 모두에게 매력적인 옵션이 될 것입니다.
Mistral NeMo: 새로운 소형 모델
Mistral Large 2가 Mistral AI의 대규모 모델 중 최고를 나타내는 반면, 2024년 7월에 출시된 Mistral NeMo는 다른 접근 방식을 취합니다. NVIDIA와 협력하여 개발된 Mistral NeMo는 여전히 인상적인 기능을 제공하는 보다 컴팩트한 120억 개의 매개변수 모델입니다.
- 120억 매개변수
- 128k 컨텍스트 창문
- 해당 사이즈 카테고리에서 최첨단 성능
- 아파치 2.0 라이센스 개방형 사용을 위해
- 양자화 인식 효율적인 추론을 위한 훈련
Mistral NeMo는 현재 Mistral 7B를 사용하는 시스템을 대체할 수 있는 제품으로, 사용 편의성과 호환성을 유지하면서도 향상된 성능을 제공합니다.
주요 특징 및 역량
Mistral Large 2와 Mistral NeMo는 모두 AI 분야에서 두 가지를 차별화하는 몇 가지 주요 기능을 공유합니다.
- 큰 컨텍스트 창: 128k 토큰 컨텍스트 길이를 통해 두 모델 모두 훨씬 더 긴 텍스트를 처리하고 이해할 수 있어 더욱 일관되고 상황에 맞는 출력을 생성할 수 있습니다.
- 다국어 지원: 이 모델은 영어, 프랑스어, 독일어, 스페인어, 이탈리아어, 중국어, 일본어, 한국어, 아랍어, 힌디어 등 다양한 언어에 능통합니다.
- 고급 코딩 기능: 두 모델 모두 다양한 프로그래밍 언어에서 코드 생성에 뛰어난 능력을 보여줍니다.
- 지시사항에 따라: 모델이 정확한 지시를 따르고 여러 차례 대화를 처리하는 능력이 크게 향상되었습니다.
- 함수 호출: 함수 호출에 대한 기본 지원을 통해 이러한 모델은 외부 도구 및 서비스와 동적으로 상호 작용할 수 있습니다.
- 추론 및 문제 해결: 수학적 추론과 복잡한 문제 해결 작업에 대한 능력이 향상됩니다.
이러한 기능 중 일부를 자세히 살펴보고 실제로 어떤 성능을 보이는지 살펴보겠습니다.
성능 벤치마크
Mistral Large 2와 Mistral NeMo의 진정한 역량을 이해하려면 다양한 벤치마크에서 성능을 살펴보는 것이 필수적입니다. 몇 가지 주요 지표를 살펴보겠습니다.
미스트랄 라지 2 벤치마크
이 표는 다양한 프로그래밍 언어에 대한 다양한 LLM의 능숙도를 보여줍니다. Mistral Large 2(24.07), Llama 3.1(405B), GPT-4o와 같은 모델은 Python, C++, Bash, Java, TypeScript, PHP, C#과 같은 언어로 코드를 이해하고 생성하는 능력에 따라 평가됩니다.
Llama 3.1 405B는 여러 언어에서 강력한 성과를 보이며, 특히 Python과 Java에서 높은 점수를 받았습니다. 이러한 능숙함은 코드 생성, 디버깅 및 소프트웨어 개발과 관련된 애플리케이션에 필수적이어서 이러한 모델은 개발자에게 귀중한 도구가 됩니다.
미스트랄 네모 벤치마크
Mistral NeMo에 대한 구체적인 벤치마크 점수는 제공된 정보에 제공되지 않았지만, 해당 크기 범주에서 최첨단 성능을 제공하는 것으로 설명되어 있습니다. 이 모델은 다양한 작업에서 Gemma 2 9B 및 Llama 3 8B와 같은 다른 최근 오픈소스 사전 학습 모델보다 성능이 뛰어납니다.
다국어 및 코딩 능력
Mistral Large 2와 Mistral NeMo의 두드러진 특징 중 하나는 뛰어난 다국어 기능입니다. 이는 AI 모델이 여러 언어로 된 콘텐츠를 이해하고 생성해야 하는 점점 더 세계화된 세상에서 특히 중요합니다.
예를 들어 Mistral Large 2는 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 아랍어, 힌디어, 러시아어, 중국어, 일본어, 한국어를 포함한 수십 개의 언어를 지원합니다. 이러한 다국어 능력은 단순한 번역을 넘어 이러한 언어의 미묘한 이해와 생성을 포함합니다.
이를 설명하기 위해 Mistral Large 2가 여러 언어로 텍스트를 생성하는 예를 살펴보겠습니다.
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
요청하신 언어로 된 짧은 인사말은 다음과 같습니다.
한국어: 안녕하세요! 오늘은 어떻게 지내세요?
영어: 안녕하세요! 오늘 하루 어땠어요 ?
독일인: 안녕하세요! 오늘 기분이 어떠세요?
영어: 안녕하세요! 오늘 기분이 어떠세요?
Korean: 안녕하세요! 오늘은 잘 지내십니까?
[INST]
이제 Python, Java, JavaScript로 간단한 “Hello, World!” 프로그램을 작성해 보세요. [/INST]
이러한 예는 모델의 다국어 텍스트 생성 및 코딩 기능을 모두 보여줍니다.
두 모델 모두 Hugging Face, Mistral AI 플랫폼, Google Cloud Platform, Azure AI Studio, Amazon Bedrock, IBM watsonx.ai와 같은 주요 클라우드 서비스 제공업체 등 다양한 플랫폼에서 사용할 수 있습니다. (Mistral AI | 당신의 손 안에 있는 Frontier AI).
에이전트 패러다임과 함수 호출
Mistral Large 2와 Mistral NeMo는 모두 에이전트 중심 디자인을 채택하는데, 이는 AI 모델과 상호작용하는 방식에 패러다임 전환을 나타냅니다. 이 접근 방식은 환경과 상호작용하고, 결정을 내리고, 특정 목표를 달성하기 위한 조치를 취할 수 있는 모델을 구축하는 데 중점을 둡니다.
이 패러다임을 가능하게 하는 핵심 기능은 함수 호출에 대한 기본 지원입니다. 이를 통해 모델은 외부 도구 및 서비스와 동적으로 상호 작용하여 간단한 텍스트 생성을 넘어 기능을 효과적으로 확장할 수 있습니다.
Mistral Large 2에서 함수 호출이 어떻게 작동하는지 보여주는 예를 살펴보겠습니다.
from mistral_common.protocol.instruct.tool_calls import Function, Toolfrom mistral_inference.transformer import Transformerfrom mistral_inference.generate import generatefrom mistral_common.tokens.tokenizers.mistral import MistralTokenizerfrom mistral_common.protocol.instruct.messages import UserMessagefrom mistral_common.protocol.instruct.request import ChatCompletionRequest# Initialize tokenizer and modelmistral_models_path = "path/to/mistral/models" # Ensure this path is correcttokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")model = Transformer.from_folder(mistral_models_path)# Define a function for getting weather informationweather_function = Function( name="get_current_weather", description="Get the current weather", parameters={ "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA", }, "format": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "The temperature unit to use. Infer this from the user's location.", }, }, "required": ["location", "format"], },)# Create a chat completion request with the functioncompletion_request = ChatCompletionRequest( tools=[Tool(function=weather_function)], messages=[ UserMessage(content="What's the weather like today in Paris?"), ],)# Encode the requesttokens = tokenizer.encode_chat_completion(completion_request).tokens# Generate a responseout_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.7, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)result = tokenizer.decode(out_tokens[0])print(result)
이 예에서 우리는 날씨 정보를 얻기 위한 함수를 정의하고 채팅 완료 요청에 포함합니다. 그런 다음 모델은 이 함수를 사용하여 실시간 날씨 데이터를 검색하여 외부 시스템과 상호 작용하여 보다 정확하고 최신 정보를 제공하는 방법을 보여줍니다.
Tekken: 더 효율적인 토큰화기
Mistral NeMo는 새로운 토크나이저를 소개합니다. 테켄Tiktoken을 기반으로 하고 100개 이상의 언어로 훈련되었습니다. 이 새로운 토크나이저는 SentencePiece와 같은 이전 토크나이저에 비해 텍스트 압축 효율성이 크게 향상되었습니다.
Tekken의 주요 특징은 다음과 같습니다.
- 소스 코드, 중국어, 이탈리아어, 프랑스어, 독일어, 스페인어 및 러시아어에 대한 압축 효율성이 30% 더 높아졌습니다.
- 한국어 압축 효율 2배 향상
- 아랍어의 경우 압축 효율성이 3배 더 높아졌습니다.
- 모든 언어의 약 85%에 대한 텍스트 압축에서 Llama 3 토크나이저보다 성능이 우수합니다.
이 향상된 토큰화 효율성은 특히 다국어 텍스트와 소스 코드를 처리할 때 더 나은 모델 성능으로 이어집니다. 이를 통해 모델은 동일한 컨텍스트 창 내에서 더 많은 정보를 처리할 수 있어 보다 일관되고 컨텍스트적으로 관련성 있는 출력이 생성됩니다.
라이센싱 및 가용성
Mistral Large 2와 Mistral NeMo는 의도된 사용 사례를 반영하여 서로 다른 라이선싱 모델을 가지고 있습니다.
미스트랄 라지 2
- Mistral Research License에 따라 출시됨
- 연구 및 비상업적 목적으로 사용 및 수정이 가능합니다.
- 상업적 이용에는 Mistral Commercial License가 필요합니다.
미스트랄 네모
- Apache 2.0 라이센스에 따라 출시됨
- 상업적 애플리케이션을 포함한 개방형 사용 허용
두 모델 모두 다양한 플랫폼을 통해 제공됩니다.
- 껴안는 얼굴: 기본 모델과 지시 모델 모두에 대한 가중치는 여기에 호스팅됩니다.
- 미스트랄 AI: 다음과 같이 사용 가능
mistral-large-2407
(미스트랄 라지2) 그리고open-mistral-nemo-2407
(미스트랄 네모) - 클라우드 서비스 제공자: Google Cloud Platform의 Vertex AI, Azure AI Studio, Amazon Bedrock 및 IBM watsonx.ai에서 사용 가능
이러한 모델을 사용하려는 개발자를 위해 Mistral Large 2를 Hugging Face 변압기와 함께 로드하고 사용하는 방법에 대한 간단한 예를 소개합니다.
from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "mistralai/Mistral-Large-Instruct-2407"device = "cuda" # Use GPU if available# Load the model and tokenizermodel = AutoModelForCausalLM.from_pretrained(model_name)tokenizer = AutoTokenizer.from_pretrained(model_name)# Move the model to the appropriate devicemodel.to(device)# Prepare inputmessages = [ {"role": "system", "content": "You are a helpful AI assistant."}, {"role": "user", "content": "Explain the concept of neural networks in simple terms."}]# Encode inputinput_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)# Generate responseoutput_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)# Decode and print the responseresponse = tokenizer.decode(output_ids[0], skip_special_tokens=True)print(response)
이 코드는 모델을 로드하고, 채팅 형식으로 입력을 준비하고, 응답을 생성하고, 출력을 디코딩하는 방법을 보여줍니다.