728x90

가끔씩 필요해서 찾게 되는 것이라 정리해 봅니다.

 

1. sftp-config.sh (설정 파일)
용량 비교 및 상세 체크를 위해 SSH 접속 정보를 그대로 사용합니다.

더보기
# sftp-config.sh
# SFTP 서버 접속 정보 및 경로 설정

# [필수] SFTP 서버 정보
SFTP_HOST="sftp.example.com"
SFTP_PORT="22"
SFTP_USER="root"

# [선택] RSA 개인키 경로 (기본: /root/.ssh/id_rsa)
IDENTITY_FILE="/root/.ssh/id_rsa"

# 재시도 설정
MAX_RETRIES=2
BACKOFF_BASE=2

# 로그 및 경로 설정
LOG_BASE_DIR="/root/sftp_logs"       # 상세 실행 로그
RESULT_LOG_DIR="/root/sftp_results" # 운영용 요약 로그
DB_READY_LOG_DIR="/root/sftp_db_logs" # DB 적재용 정제 로그 (JSONL)
TARGET_LIST_DIR="/root/sftp_targets"

# 동일 용량 파일 스킵 여부 (YES: 스킵 및 로그 남김, NO: 덮어쓰기)
SKIP_SAME_SIZE="YES"

2. sftp_download.sh (고도화된 전체 소스)
이 스크립트는 각 파일의 상태를 4가지 상태(SUCCESS, NOT_FOUND, SKIPPED_SAME, FAILED)로 구분하여 로그를 남깁니다.

더보기
#!/usr/bin/env bash
# sftp_download.sh - DB 연동 최적화 및 상세 로깅 버전

set -uo pipefail

BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIG_FILE="${BASE_DIR}/sftp-config.sh"
MODE=""          
REMOTE_BASE=""   
PATTERN=""       
TARGET_LIST=""   
LOCAL_DIR=""     

usage() {
  cat <<EOF
Usage: $(basename "$0") -M <mode> -r <remote_base> -d <local_abs_path> [options]
Modes: tree | list
EOF
}

# 1. 텍스트 로그 (운영자 확인용)
log() {
  local level="$1"; shift
  local msg="$*"
  echo "$(date '+%Y-%m-%d %H:%M:%S') [${level}] ${msg}" | tee -a "${LOG_FILE}"
}

# 2. 정제 로그 (DB 적재 프로그램용 - JSONL)
record_db_log() {
  local status="$1"
  local file_path="$2"
  local size="${3:-0}"
  local msg="${4:-""}"
  local ts
  ts=$(date -u +"%Y-%m-%dT%H:%M:%SZ") # ISO 8601 표준

  # DB 프로그램에서 파싱하기 좋게 한 줄의 JSON으로 기록
  printf '{"ts":"%s", "status":"%s", "file":"%s", "size":%d, "msg":"%s"}\n' \
    "$ts" "$status" "$file_path" "$size" "$msg" >> "${DB_LOG}"
}

while getopts "M:r:p:f:d:c:h" opt; do
  case "${opt}" in
    M) MODE="${OPTARG}" ;;
    r) REMOTE_BASE="${OPTARG}" ;;
    p) PATTERN="${OPTARG}" ;;
    f) TARGET_LIST="${OPTARG}" ;;
    d) LOCAL_DIR="${OPTARG}" ;;
    c) CONFIG_FILE="${OPTARG}" ;;
    h) usage; exit 0 ;;
    *) usage; exit 1 ;;
  esac
done

if [[ ! -f "${CONFIG_FILE}" ]]; then
  echo "설정 파일을 찾을 수 없습니다: ${CONFIG_FILE}" >&2
  exit 1
fi

source "${CONFIG_FILE}"

# 디렉토리 및 로그 파일 준비
mkdir -p "${LOG_BASE_DIR}" "${RESULT_LOG_DIR}" "${DB_READY_LOG_DIR}" "${LOCAL_DIR}"
LOG_FILE="${LOG_BASE_DIR}/sftp_detail_$(date +%Y%m%d).log"
DB_LOG="${DB_READY_LOG_DIR}/transfer_data_$(date +%Y%m%d).jsonl"
SSH_OPTS="-i ${IDENTITY_FILE} -p ${SFTP_PORT} -o BatchMode=yes -o StrictHostKeyChecking=yes -o ServerAliveInterval=60"

download_file() {
  local rel_path="$1"
  local remote_p="${REMOTE_BASE}/${rel_path}"
  local local_p="${LOCAL_DIR}/${rel_path}"
  
  # 1. 원격 파일 정보 획득
  local r_size
  r_size=$(ssh ${SSH_OPTS} "${SFTP_USER}@${SFTP_HOST}" "stat -c%s '${remote_p}'" 2>/dev/null || echo "NOT_FOUND")

  if [[ "${r_size}" == "NOT_FOUND" ]]; then
    log WARN "파일 없음: ${rel_path}"
    record_db_log "NOT_FOUND" "${rel_path}" 0 "Remote file not found"
    return 1
  fi

  # 2. 로컬 파일과 용량 비교 (중복 체크)
  if [[ -f "${local_p}" ]]; then
    local l_size
    l_size=$(stat -c%s "${local_p}")
    if [[ "${r_size}" == "${l_size}" && "${SKIP_SAME_SIZE}" == "YES" ]]; then
      log INFO "스킵(동일 용량): ${rel_path}"
      record_db_log "SKIPPED" "${rel_path}" "${r_size}" "Same size skip"
      return 0
    fi
  fi

  # 3. 실제 SFTP 전송
  mkdir -p "$(dirname "${local_p}")"
  if sftp -b - -P "${SFTP_PORT}" -i "${IDENTITY_FILE}" -C -o BatchMode=yes "${SFTP_USER}@${SFTP_HOST}" <<EOF >> "${LOG_FILE}" 2>&1
get "${remote_p}" "${local_p}"
quit
EOF
  then
    log INFO "성공: ${rel_path}"
    record_db_log "SUCCESS" "${rel_path}" "${r_size}" "Transfer complete"
  else
    log ERROR "실패: ${rel_path}"
    record_db_log "FAILED" "${rel_path}" "${r_size}" "SFTP error during transfer"
    return 1
  fi
}

log INFO "=== 작업 시작 (Mode: ${MODE}) ==="

if [[ "${MODE}" == "list" ]]; then
  # 리스트 파일이 지정되지 않았다면 TARGET_LIST_DIR의 첫 번째 파일 사용
  [[ -z "${TARGET_LIST}" ]] && TARGET_LIST=$(find "${TARGET_LIST_DIR}" -type f | head -n 1)
  
  if [[ -f "${TARGET_LIST}" ]]; then
    while IFS= read -r line || [[ -n "$line" ]]; do
      [[ -z "$line" || "$line" =~ ^# ]] && continue
      download_file "${line}"
    done < "${TARGET_LIST}"
  else
    log ERROR "리스트 파일을 찾을 수 없습니다."
  fi

elif [[ "${MODE}" == "tree" ]]; then
  # 원격지 패턴 검색 후 목록 기반 다운로드
  log INFO "원격지 목록 조회 중..."
  file_list=$(ssh ${SSH_OPTS} "${SFTP_USER}@${SFTP_HOST}" "find '${REMOTE_BASE}' -type f -name '${PATTERN}'" | sed "s|${REMOTE_BASE}/||")
  
  for f in ${file_list}; do
    download_file "$f"
  done
fi

log INFO "=== 작업 종료 (결과: ${DB_LOG}) ==="

3. 스크립트의 특징 (운영 강점)
상세한 상태 분류:
SUCCESS: 파일이 성공적으로 전송됨.
NOT_FOUND: 원격 서버에 대상 파일이 아예 없음 (경로 오타 등).
SKIPPED: 이미 로컬에 같은 용량의 파일이 있어 전송을 생략함 (네트워크 자원 절약).
FAILED: 파일은 있으나 권한 문제, 네트워크 끊김 등으로 가져오지 못함.
용량 기반 검증: 단순히 파일명만 보는 게 아니라 stat 명령으로 용량을 비교하여 '정상적으로 가져온 상태'를 확신할 수 있습니다.
가독성 높은 요약 로그: RESULT_LOG 파일만 열어보면 어떤 파일이 어떤 이유로 처리되었는지 한눈에 알 수 있어 운영이 편리합니다.

더보기

 

  • DB 적재용 로그 샘플 (transfer_data_YYYYMMDD.jsonl):
  • JSON
     
    {"ts":"2026-03-18T00:50:01Z", "status":"SUCCESS", "file":"daily/data.csv", "size":1048, "msg":"Transfer complete"}
    {"ts":"2026-03-18T00:50:03Z", "status":"SKIPPED", "file":"backup/db.sql", "size":50020, "msg":"Same size skip"}
    
  • 후속 프로그램과의 연계:
    • 후속 프로그램(Java/Python 등)이 실행될 때 DB_READY_LOG_DIR 내의 파일을 한 줄씩 읽습니다.
    • status가 SUCCESS면 DB의 전송 완료 테이블에 INSERT 합니다.
    • status가 FAILED면 관리자 알림 테이블에 넣거나 재시도 큐에 넣습니다.
  • 성능 최적화:
    • -C 옵션을 통해 다량의 파일 전송 시 데이터를 압축하여 대역폭을 절약합니다.
    • ServerAliveInterval을 설정하여 대용량 파일 전송 중 연결 끊김을 방지합니다.

 

 

4. 사용 예제
Tree 모드 (패턴)

./sftp_download.sh -M tree -r /data/logs -p "*.csv" -d /root/downloads

동작: /data/logs에서 .csv를 찾아 리스트를 만든 후, 하나씩 용량 체크하며 가져옵니다.

List 모드 (파일명 나열)

./sftp_download.sh -M list -r /data/origin -f targets.txt -d /root/downloads

 

급하게 정리해봅니다.

728x90
728x90

많이 늦은 감이 있지만 결국 커서와 클로드 코드, 오픈 코드를 모두 사용중에 있습니다.

그중에 클로드 코드 스킬을 커서에서 사용하면서 혼용이 가능하다는 것을 알게 되어 커서를 셋팅해보고 있습니다.


AI 에이전트 준비 프로젝트 계획

1. 지원 개발 언어

지원 대상 (요청 반영 + 사용 활발 언어)
요청 언어: C#, Java, React(JavaScript/TypeScript), Python, Flutter(Dart).

추가 권장 (사용 활발): TypeScript/JavaScript, Go(백엔드/클라우드), Kotlin(Android), Rust(성능/인프라), SQL(데이터).
정리
백엔드/엔터프라이즈: C#, Java, Python, Go.
프론트/웹: React(JS/TS), (선택) Vue, Angular.
모바일/크로스플랫폼: Flutter(Dart), Kotlin(Android).
시스템/인프라: Rust, Go.
데이터/스크립트: Python, SQL.

프로젝트 룰·스킬에서는 위 언어별 코딩 규칙, 확장자 패턴(**/*.cs, **/*.java, **/*.tsx, **/*.py, **/*.dart 등)을 구분해 적용할 수 있도록 구성합니다.

 

2. 프로젝트 디렉터리 구조

더보기
project1/
├── .cursor/
│   ├── rules/           # 룰셋 (.mdc)
│   ├── skills/          # 프로젝트 스킬 (문서/이미지/분석 등)
│   └── agents/          # 서브에이전트 정의
├── src/                 # 소스 (언어별 하위: csharp/, java/, react/, python/, flutter/ 등)
├── docs/                # 문서 (md, docx, xlsx, pptx)
│   ├── md/
│   ├── word/            # .docx
│   ├── excel/           # .xlsx
│   └── ppt/             # .pptx
├── analysis/            # 프로그램 분석 산출물
│   ├── ast/             # AST·의존성 등 분석 결과
│   ├── reports/         # 정적 분석·메트릭 리포트
│   └── diagrams/        # 아키텍처·흐름도
├── assets/
│   └── images/
├── scripts/             # 문서·이미지·분석·테스트 자동화
├── tests/               # 단위/통합/브라우저·API 테스트
│   ├── unit/
│   ├── e2e/             # 브라우저 E2E
│   └── api/             # REST API 테스트
├── setup/               # 포터블 셋팅 (새 PC용)
│   ├── README.md        # 셋팅 절차
│   └── env.example      # 환경 변수 예시 (상대 경로·비시크릿)
└── README.md
  • docs/: Markdown + Word(docs), Excel, PPT 포맷 별 폴더. 룰/스킬에서 각 포맷 규칙 정의.
  • analysis/: 프로그램 분석에 필요한 산출물(의존성, 메트릭, 다이어그램) 저장.
  • assets/images/: 이미지 에셋·생성 결과. 용도별 하위 폴더는 룰/스킬에서 정의.
  • tests/: 단위 외에 e2e/(브라우저), api/(REST API) 구조로 테스트 에이전트가 활용.
  • setup/: 새 컴퓨터에서 프로젝트만 복사 후 동일 셋팅을 위한 절차·예시. 모든 Cursor 설정은 프로젝트 내 .cursor/에만 두어 포터블하게 유지.

일단 오늘은 폴더 구조만 만들었습니다. 

클로드 코드에서 일단 구현할 수 있는 것들을 셋팅해서 가져와야 겠네요.

728x90

'프로그램 > 개인플젝' 카테고리의 다른 글

Obsidian 나스(Synology) 연결 해보기 사전조사  (0) 2025.11.12
728x90

글을 쓰게된 이유... 개인 사유지만 답답해서 좀 적어 봅니다.

더보기

 회사 프로젝트를 진행하면서 GPT가 글을 생성할때 오래걸리는 조건중 상반되는 문단 모양이나 형식을 요청시 

답변이 느려진다는 것을 예전에 조사해 두었던 내용을 알고 있었습니다.
 오늘 대표님이 오셔서 관련해 물어보시길래 제가 알고 있던 내용을 설명드렸습니다. 그런데 돌아온 말씀이 *“그런 이야기를 어떤 근거로 하느냐”*라는 질문이었습니다. LLM 사업을 하는 회사라면 GPT의 특성 정도는 알고 계시지 않을까 생각하며, 대중적인 GPT에서 본 내용이라고 말씀드렸습니다. 그러자 “ 내 얼굴이 다 부끄럽다”라는 표현을 들었고, GPT를 출처로 언급했다는 이유만으로 비아냥거리는 대표를 보았습니다.

 그 순간  회사는 앞으로 쉽지 않을  있겠다는 생각이 들었습니다.
 여러 사람이 어떻게 말하든 저는 나름 존중하며  했었는데,  마음이 스스로도 조금 부끄럽게 느껴졌습니다.

 

 그럼 나는 정말 GPT 답변만 보았을까? 논문도 읽고 전문가 의견도 평소에 최대한 보고 있던 나인데...

뭐 중요한 것은 그 내용이 있다고 생각하고 출처를 이야기 대충 넘긴 나의 잘못인가? 아 모르겠고 출처를 

정리해 봅시다.

 

 이 글을 읽는 사람은 출처도 중요하지만 내용을 먼저 파악하길 바라며 적어 봅니다.

 

OverThink 공격 ( 미국 코넬 대학교에서 운영하는 논문 사이트 출처 )

더보기

폐쇄형(OpenAI o1, o1-mini, o3-mini) 개방형(DeepSeek R1) 가중치 추론 모델에 걸쳐 공격을 평가

https://arxiv.org/html/2502.02542v2

 

OverThink: Slowdown Attacks on Reasoning LLMs

Reasoning models are already deployed in general-use applications, e.g., ChatGPT and DeepSeek chat, and recently Copilot (Warren, 2025). These applications often integrate reasoning models into their services by making API calls to service providers like

arxiv.org

방식 :

Decoy reasoning problems (미끼 추론 문제)를 콘텐츠에 주입

LLM이 실제 답변을 내기 전에 과도하게 긴 추론을 하도록 유도

 

효과 : 

최종 답변의 정확성은 유지하면서 응답 속도만 늦춤

SQuAD 데이터셋에서 최대 18 응답 시간 증가

상반되는 지시사항 ( Conflicting Instructions )

경쟁적 목표 "Competing objectives" 개념: 모델의 능력("항상 지시를 따라야 ") 안전 목표가 충돌하는 상황

블로그 ...

더보기

https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/

 

Adversarial Attacks on LLMs

The use of large language models in the real world has strongly accelerated by the launch of ChatGPT. We (including my team at OpenAI, shoutout to them) have invested a lot of effort to build default safe behavior into the model during the alignment proces

lilianweng.github.io

 

1. 지시 수용성 감소

 안전 목표(거부/필터링) 때문에 모델이 일부 단순 지시조차도 창의적·정확하게 처리하지 못함
이는 본연의 지시 순응 능력 약화 (성능 저하 느낌) 이어짐.

2. 복수 패스/후처리 요구

여러 후보 응답 생성 후 안전성 비교, 외부 필터 툴과의 상호검증 등으로 평균적인 처리 시간이 증가할 수 있다.

모호하거나 서로 모순되는 지시가 포함된 프롬프트에서 모델 성능 저하-GPT 프롬프트 가이드

더보기

https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide

 

GPT-5 prompting guide | OpenAI Cookbook

GPT-5, our newest flagship model, represents a substantial leap forward in agentic task performance, coding, raw intelligence, and steera...

cookbook.openai.com

전제 충돌 (동의 필요 vs 동의 없이 일정 배정)

모델이 어떤 지시를 우선해야 할지 내부적으로 갈등 겪음

모델이 지시 모순을 조정(reconcile) 하려는 과정에서 성능(생산 속도, 정확성 ) 부정적 영향 받을 있습니다

 

원문

Like GPT-4.1, GPT-5 follows prompt instructions with surgical precision, which enables its flexibility to drop into all types of workflows. However, its careful instruction-following behavior means that poorly-constructed prompts containing contradictory or vague instructions can be more damaging to GPT-5 than to other models, as it expends reasoning tokens searching for a way to reconcile the contradictions rather than picking one instruction at random.

 

명령어 충돌 ( Instruction Conflict) 및 복잡한 제약 조건이 LLM 성능과 추론 효율성

 

 

여기서  나아가서 텍스트 구조(포맷)만 바꿔도 LLM 성능이 달라질 수 있음

더보기

https://arxiv.org/pdf/2411.10541v1

 

텍스트 구조만 바뀌어도 결과가 달라질 있다 것은 LLM 설계/평가에서 입력 포맷의 민감도 라는 중요한 요소를 고려해야 함을 보여줍니다

 


🟢 포맷 구조만 바꿔도 성능이 변화한다

“Prompt format choices may lead to substantial performance variations, raising concerns about current evaluation standards that ignore this factor.”
프롬프트 구조/형식(template) 변화는 모델의 추론 성능(performance) 유의미한 영향을 준다.


🟢 모델 크기/구조에 따라 민감도 차이가 존재함

GPT-4 GPT-3.5보다 포맷 변화에 민감하지만, 완전히 무시될 수준은 아님. 

 

상반된 지시 관련 벤치 마크 ㅡ.ㅡ 이제 출처 적는 것도 귀찮네요. 관련글은 대충 가져와 봅니다. 

결국 출처 GPT라고 답변하고 싶은 나의 마음이 바뀌지 않네요.

더보기

https://arxiv.org/pdf/2311.07911


https://arxiv.org/pdf/2311.07911.pdf

복수의 제약 조건 동시 처리

논리적 모순/구조적 충돌

 

"Instruction Following Assessment" (IFEval 및 관련 벤치마크 연구)

Google DeepMind 등에서 발표한 이 논문은 모델이 여러 제약 조건(Constraints)을 동시에 처리할 때의 성능을 측정합니다.

상반된 지시의 영향: 예를 들어 "A라고 말하되, A 언급하지 마라" 같은 논리적 모순이나, "매우 상세하게 작성하되 50단어 이내로 요약하라" 식의 구조적 충돌은 모델의 **Attentional Focus(주의 집중)** 분산시켜 답변 생성 전의 '사전 연산 시간' 늘리는 원인이 됩니다.

 

제약 조건의 복잡성: 사용자가 복잡하거나 여러 가지 제약 조건을 동시에 부여할수록 모델의 성능(정확도)이 급격히 떨어집니다. 

Strict vs. Loose: 단순히 질문에 답하는 것보다, 상반되거나 엄격한 구조적 형식을 지키라고 요구할 때 GPT-4와 같은 고성능 모델조차 실패율이 높아집니다. 


https://arxiv.org/pdf/2406.13542

**IFEval(Instruction Following Evaluation)**의 후속 연구들과 관련 벤치마크(FollowBench 등) 논문들에서 말씀하신 **"복잡한 제약 조건(Complex Constraints)이 모델의 추론 오버헤드(Reasoning Overhead)를 증가시킨다"**는 분석을 공통적으로 찾아볼 수 있습니다.

질문하신 내용에 대한 학술적 근거를 정리하고, 요청하신 대로 영어 번역과 표현 설명을 덧붙여 드립니다.


1. 학술적 분석 내용 (Analysis)

여러 연구(예: FollowBench, CRUX-Eval)에 따르면, 단순 질의응답과 달리 **'상반된 문단 모양'**이나 '글자 수 제한' 같은 제약 조건이 추가될 때 발생하는 현상은 다음과 같습니다.

  • 추론 오버헤드(Reasoning Overhead)의 실체: 모델은 단순히 다음 단어를 예측하는 것이 아니라, 생성 중인 문장이 설정된 '제약 조건'에 부합하는지 계속해서 내부적으로 검증(Checking)해야 합니다. 이 과정에서 Attention 메커니즘이 분산되며 연산 자원을 더 많이 소모하게 됩니다.
  • 답변 지연(Latency)과의 상관관계: 제약 조건이 복잡할수록 모델이 '최적의 토큰'을 결정하기 위한 확률 계산이 복잡해지며, 이는 **첫 번째 토큰 생성 시간(TTFT)**과 전체 생성 속도를 늦추는 직접적인 원인이 됩니다.

2. 영어 번역 및 표현 설명 (English Translation & Commentary)

[English Translation]

"Yes, that is correct. Follow-up studies on IFEval analyze that complex constraints significantly increase the reasoning overhead of the model. This occurs because the model must perform additional computational steps to verify adherence to constraints, which inevitably leads to higher latency and potential performance degradation."

[Grammar & Expression Tips]

  1. Reasoning Overhead: '추론 오버헤드'입니다. 오버헤드(Overhead)는 어떤 처리를 하기 위해 추가적으로 들어가는 시간이나 메모리 등의 자원을 뜻합니다.
  2. Adherence to Constraints: '제약 조건 준수'라는 뜻입니다. 모델이 사용자의 규칙을 얼마나 잘 따르는지 표현할 때 쓰는 격식 있는 표현입니다.
  3. Inevitably: '필연적으로'라는 부사입니다. 복잡한 명령이 들어가면 속도가 느려질 수밖에 없다는 인과관계를 강조할 때 유용합니다.

3. 신뢰할 수 있는 구체적 근거

  • FollowBench (2024): 이 논문은 지시 사항의 난이도를 5단계로 분류했는데, 제약 조건이 겹칠수록(Multi-constraint) 모델이 '생성'보다 '제약 만족'에 에너지를 쏟느라 추론 효율성이 급격히 떨어진다고 명시하고 있습니다.
  • Constraint-Satisfaction Studies: 많은 연구에서 "지시 준수(Instruction Following)" 자체가 단순 생성보다 더 높은 수준의 **Logical Reasoning(논리적 추론)**을 요구하며, 이것이 모델의 연산 비용을 높인다고 설명합니다.

결론적으로, 질문하신 "complex constraints가 reasoning overhead를 증가시킨다"는 분석은 최신 LLM 연구 분야에서 매우 정설로 받아들여지는 내용입니다.

728x90
728x90

 

agentic rag 모델 선정 qwen과 kakao 쪽에서 선정한다면 개인 플젝은 이렇게 해보는 것이 좋아 보이네요.

개인 플젝 하게 되면 ... 예산 확보가 필요해 보이네요.

 

결론만 보면...

현재 피씨를 새로 맞추거나 24GB의 그래픽카드를 구매하는 것보다 맥으로 구성하는 것이 현실적으로 보이네요.

nvidia spark나 다른 장비를 고려해도 결국 고민만되고 최소필요사항으로 경험해보기에는 맥미니가 합리적인 선택지일것 같습니다.

 

맥미니 기준으로 한다면... 일단 집에 있는 메모리 32GB M2 맥미니에... 서빙 프로그램을 선정하고 OpenCrew 설치해서 도전해봐야 겠네요. 맥에 주로 사용하는 서빙 프로그램... 과 claude code 설치해서 ... nvidia 기준이 아니라 애플 실리콘 기준으로 정리글을 한번 작성해 보겠습니다. 

 

아래 글은 현재 기준에서 테스트 구성을 검토 내역입니다.

 

... windows 기반 rag 모델 선정 ( kakao kanan 검토, Qwen 검토 )

24GB 기준 현재 신규 구성시 접근

728x90

+ Recent posts