월요일, 10월 20, 2025

macOS M2에 MLX + Llama 3.2 3B 설치 및 실행 가이드

 

1️⃣ 환경 준비

  1. Homebrew로 Python 설치 (권장)
    macOS 기본 Python은 제한적이므로 Python 3.12 설치 권장
    brew install python@3.12
  2. 가상환경 생성 및 활성화
    python3.12 -m venv ~/llama32_3b_env
    source ~/llama32_3b_env/bin/activate

2️⃣ MLX 설치

pip install --upgrade pip
pip install mlx
pip install mlx-lm
MLX는 Llama 모델을 쉽게 불러올 수 있는 Python 패키지입니다.

3️⃣ Hugging Face 로그인 및 토큰 설정

  1. Hugging Face 사이트에서 Access Token 생성 (Fine-grained, 모델 읽기 권한)
    - 이름: 예시 llama_local_use
    - 권한: Read access to all public gated repos you can access 정도면 충분
  2. MLX에서 토큰 저장
    huggingface-cli login
    - 토큰 입력
    - "Add token as git credential?" → n (No)

로그인 성공 시 토큰이 ~/.cache/huggingface/token에 저장됩니다.

4️⃣ Llama 3.2 모델 실행(자동 다운로드)

4-1. 텍스트 생성

ppython -m mlx_lm generate \
  --model meta-llama/Llama-3.2-3B-Instruct \
  --prompt "Hello, how are you?" \
  --max-tokens 300 \
  --temp 0.7

4-2. 대화형 모드

python -m mlx_lm.chat --model meta-llama/Llama-3.2-3B-Instruct

모델이 로컬에 없으면 자동 다운로드되며, 이미 다운로드되어 있으면 바로 실행됩니다.

5️⃣ 실행 최적화 팁 (3B 모델 기준)

  • --max_new_tokens 300 → 생성 길이 늘리기
  • --temperature 0.7 → 답변 다양성 조절

6️⃣ 자동 실행용 Bash 스크립트 예시

#!/bin/bash

# 3B 모델용 가상환경 경로
VENV_PATH="$HOME/llama32_3b_env"

# 가상환경 활성화
source "$VENV_PATH/bin/activate"

# 사용자 프롬프트 인자 확인
PROMPT=${1:-"Hello, how are you?"}

# 모델 실행
python -m mlx_lm generate \
  --model meta-llama/Llama-3.2-3B-Instruct \
  --prompt "$PROMPT" \
  --max-tokens 800 \
  --temp 0.7

사용 방법:

chmod +x run_llama32_3B.sh
./run_llama32_3B.sh "자바스크립트 기본 문법 설명해줘"


macOS에 MLX + Llama 3.2 1B 설치 및 실행 가이드

1️⃣ 환경 준비

  1. Homebrew로 Python 설치 (권장)
    macOS 기본 Python은 제한적이므로 Python 3.12 설치 권장
    brew install python@3.12
  2. 가상환경 생성 및 활성화
    python3.12 -m venv ~/llama32_mlx_env
    source ~/llama32_mlx_env/bin/activate

2️⃣ MLX 설치

pip install --upgrade pip
pip install mlx

MLX는 Llama 모델을 쉽게 불러올 수 있는 Python 패키지입니다.

3️⃣ Hugging Face 로그인 및 토큰 설정

  1. Hugging Face 사이트에서 Access Token 생성 (Fine-grained, 모델 읽기 권한)
    - 이름: 예시 llama_local_use
    - 권한: Read access to all public gated repos you can access 정도면 충분
  2. MLX에서 토큰 저장
    huggingface-cli login
    - 토큰 입력
    - "Add token as git credential?" → n (No)

로그인 성공 시 토큰이 ~/.cache/huggingface/token에 저장됩니다.

4️⃣ Llama 3.2 모델 실행

4-1. 텍스트 생성

python -m mlx_lm.generate --model meta-llama/Llama-3.2-1B-Instruct --prompt "Hello, how are you?"

4-2. 대화형 모드

python -m mlx_lm.chat --model meta-llama/Llama-3.2-1B-Instruct

모델이 로컬에 없으면 자동 다운로드되며, 이미 다운로드되어 있으면 바로 실행됩니다.

5️⃣ 실행 최적화 팁 (1B 모델 기준)

  • --max_new_tokens 300 → 생성 길이 늘리기
  • --temperature 0.7 → 답변 다양성 조절
  • 1B 모델은 복잡한 코드 생성, 번역, 긴 설명에는 한계가 있으므로 필요 시 7B 이상 모델 사용 권장

6️⃣ 자동 실행용 Bash 스크립트 예시

#!/bin/bash
VENV_PATH="$HOME/llama32_mlx_env"
source "$VENV_PATH/bin/activate"
PROMPT=${1:-"Hello, how are you?"}
python -m mlx_lm.generate --model meta-llama/Llama-3.2-1B-Instruct --prompt "$PROMPT"

사용 방법:

chmod +x run_llama32.sh
./run_llama32.sh "자바스크립트 기본 문법 설명해줘"

이미 다운로드된 모델이면 바로 실행됩니다.

일요일, 7월 08, 2012

[비추천] 용인지역 드라이브 코스 - 98번 국지도

보통은 괜찮은 드라이브 코스가 올라온다. 하지만 잘못된 정보가 올라오는 경우도 많다.
그중에 용인IC를 빠져나와 곤지암으로 가는 98번 국지도 드라이브 코스가 있다. 블로그에 소개되기로는 한적하다고 되어 있는데 주말에는 생각 보다 차가 많고 그나마 경치 좋은 곳에는 식당이 너무 많아서 실망이 컸다.



화요일, 2월 07, 2012

네트워크 디바이스 이름 변경(소스 코드)

SIOCSIFNAME



#include
#include
#include
#include
#include
#include
#include
#include
#include

int main(int argc,char **argv) {

        int fd; struct ifreq ifr;

        if (argc<3) {

                fprintf(stderr,"Usage: ifmv oldname newname\n"); return 1;

        }

        if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {

                perror("socket(PF_INET, SOCK_DGRAM, 0)"); return -1;

        }

        strncpy(ifr.ifr_name,argv[1],sizeof(ifr.ifr_name)); strncpy(ifr.ifr_newname,argv[2],sizeof(ifr.ifr_newname));

        if (ioctl(fd, SIOCSIFNAME, &ifr)==-1) {

                perror("ioctl(SIOCSIFNAME)"); return 1;

        }

        return 0;

}


금요일, 1월 13, 2012

윈도우에서 opensearchserver(OSS) 실행하기

http://sourceforge.net/projects/opensearchserve/

1. 윈 링크에서 파일 다운로드
2. 암축 푼 후 터미널(cmd)에서 암축 푼 폴더로 이동
3. 자바가 설치되어 있지 않다면 java 설치
4. start.bat 실행
5. 웹브라우저로 http://localhost:8080/ 접속


[참조]
http://www.open-search-server.com/wiki/en/index.php/Installation_-_Windows

금요일, 4월 15, 2011

strsep의 잘못된 사용법

아래와 같이 코딩하면 strsep함수 내에서 에러가 발생한다.
main()
{
char stemp[256];
char **bf;
char *tok;

strcpy(stemp, "a,b,d,q,r,c");
bf = &stemp;

tok = strsep(bf, ',');
}


다음과 같이 수정해야 한다.

main()
{
char stemp[256];
char **bf;
char *tp;
char *tok;

strcpy(stemp, "a,b,d,q,r,c");
tf = stemp;
bf = &tf;
tok = strsep(bf, ',');
}