Files
AI_Devlop/AI_Web_Scraper/run_guide.md

8.8 KiB

AI 웹 정보 수집 시스템 실행 가이드

이 가이드는 Google Colab Pro 환경에서 시스템을 실행하는 방법을 설명합니다.

1. 사전 준비

1.1 Google Colab Pro 설정

  • Google Colab Pro 계정으로 로그인
  • 런타임 유형을 "GPU"로 설정 (A100 권장)
  • Python 3.8 이상 사용

1.2 Google Drive 설정 (간단한 방법 - 권장)

Google Colab에서는 다음 코드로 쉽게 Google Drive를 마운트할 수 있습니다:

from google.colab import drive
drive.mount('/content/drive')

이 방법은 별도의 API 설정 없이 데이터를 저장할 수 있어 간단합니다. 데이터를 /content/drive/MyDrive/AI_Data 폴더에 자동으로 저장합니다.

1.3 Google Drive API 설정 (고급 방법)

더 정교한 제어가 필요한 경우 Google Drive API를 사용할 수 있습니다:

  1. Google Cloud Console (https://console.cloud.google.com/) 접속
  2. 새 프로젝트 생성 또는 기존 프로젝트 선택
  3. "Google Drive API" 활성화
  4. "OAuth 2.0 클라이언트 ID" 생성
  5. 클라이언트 ID를 다운로드하여 credentials.json으로 이름 변경
  6. 데이터를 저장할 Google Drive 폴더 생성 및 폴더 ID 확인
    • 폴더 URL에서 ID 추출: https://drive.google.com/drive/folders/[FOLDER_ID]

1.4 프로젝트 파일 업로드

Colab에 프로젝트 파일들을 업로드하거나 GitHub에서 클론:

!git clone https://github.com/your-repo/AI_Web_Scraper.git
%cd AI_Web_Scraper

1.5 Google Drive 마운트

시스템 실행 전에 다음 코드를 실행하여 Google Drive를 마운트하세요:

from google.colab import drive
drive.mount('/content/drive')

2. 환경 설정

2.1 필요한 패키지 설치

!pip install -r requirements.txt

최신 버전으로 업데이트(권장):

!pip install -U transformers accelerate bitsandbytes huggingface-hub

2.2 설정 파일 수정 (선택사항)

기본적으로 데이터는 /content/drive/MyDrive/AI_Data에 저장됩니다. 다른 경로를 원하시면 config.jsondrive_mount_path를 수정하세요:

{
  "data_storage": {
    "drive_mount_path": "/content/drive/MyDrive/MyCustomFolder"
  }
}

또는 실행 시 --save-path 옵션으로 지정할 수 있습니다.

웹 스크래핑은 기본으로 Requests+BeautifulSoup 모드로 동작합니다(use_selenium=false). Selenium을 사용하려면 web_scraping.use_seleniumtrue로 바꾸고, Colab에 Chrome/ChromeDriver를 설치해야 합니다:

sudo apt-get update && sudo apt-get install -y google-chrome-stable || true
pip install selenium webdriver-manager

설치가 어려우면 기본 Requests 모드를 유지하세요.

3. 시스템 실행

3.1 기본 실행 (AI가 스스로 주제 선정)

python main.py

이 경우 AI가 현재 흥미로운 기술 트렌드 3개를 스스로 선정하여 조사합니다.

3.2 AI가 스스로 주제 선정하도록 명시적 실행

python main.py --auto-topics

3.3 특정 주제로 실행

python main.py --topics "인공지능" "머신러닝" "딥러닝"

3.4 설정 파일 지정

python main.py --config ./custom_config.json

3.5 저장 경로 지정

python main.py --save-path "/content/drive/MyDrive/MyCustomFolder"

이렇게 하면 데이터를 지정한 폴더에 저장합니다.

3.6 Hugging Face 토큰(필요 시)

일부 모델은 접근 토큰이 필요할 수 있습니다. 필요하다면 다음과 같이 환경 변수로 설정하세요.

export HF_TOKEN=hf_********************************

Colab 셀에서 설정 예:

import os
os.environ["HF_TOKEN"] = "hf_********************************"

4. 실행 과정 설명

  1. 모델 다운로드: Hugging Face에서 jxm/gpt-oss-20b-base 모델 파일을 동기화(snapshot)
  2. AI 에이전트 초기화: 모델을 로드하고 도구들을 설정
  3. 정보 수집: 각 주제에 대해 AI가 스스로 웹을 탐색하며 정보 수집
  4. 데이터 저장: 수집된 데이터를 마운트된 Google Drive의 지정된 폴더에 자동 저장

5. 모니터링 및 디버깅

5.1 로그 확인

실행 중 출력되는 로그를 통해 진행 상황을 확인할 수 있습니다.

5.2 Colab GPU 모니터링

!nvidia-smi

5.3 메모리 사용량 확인

!free -h

6. 문제 해결

6.1 모델 다운로드 실패

  • Colab의 디스크 공간 확인
  • 모델 크기가 크므로 충분한 공간 확보
  • 모델 접근 권한(토큰) 필요 여부 확인: 필요 시 HF_TOKEN 설정
  • 네트워크 일시 오류일 수 있으므로 런타임 재시작 후 재시도

6.1.1 모델 로딩 시 GPU 사용이 0%로 보이는 경우

  • 기본 설정은 4bit 양자화 + GPU/CPU 오프로딩을 사용합니다. 로딩 초기에는 RAM이 먼저 오르고 GPU 사용이 0%일 수 있습니다.
  • 실행 중에도 GPU가 계속 0%라면 bitsandbytes가 GPU 커널을 잡지 못한 것입니다. 아래를 확인하세요:
    • pip install -U transformers accelerate bitsandbytes
    • import torch, bitsandbytes as bnb; print(torch.cuda.is_available())
    • from bitsandbytes.cuda_setup import main_check; print(main_check())
  • 여전히 문제가 있으면 model_settings.max_memory.gpu를 소폭 올리거나(예: 24GB), cpu_offload를 false로 유지하세요.

6.2 메모리 부족 오류 해결

모델이 클 경우 GPU 메모리가 부족할 수 있습니다. 다음 방법으로 해결하세요:

6.2.1 GPU/CPU 메모리 공동 활용

시스템이 자동으로 GPU(20GB)와 CPU(60GB)를 함께 사용하여 모델을 분산 적재합니다.

6.2.2 메모리 설정 커스터마이징

config.json에서 메모리 할당을 조정할 수 있습니다:

{
  "model_settings": {
    "max_memory": {
      "gpu": "25GB",
      "cpu": "50GB"
    }
  }
}

6.2.2 수동 설정

config.json에서 양자화 설정을 조정할 수 있습니다:

{
  "model_settings": {
    "use_quantization": true,
    "quantization_bits": 8
  }
}

6.2.3 더 작은 모델 사용

메모리가 여전히 부족하다면 config.json에서 모델을 더 작은 것으로 변경:

{
  "model_name": "microsoft/DialoGPT-medium"
}

또는 양자화된/경량화된 공개 모델을 사용하면 메모리 요구량이 크게 줄어듭니다.

6.4 Google Drive API 인증 오류 (credentials.json 없음)

  • 기본 동작은 Google Drive 마운트 기반 저장(SimpleDriveSaver)입니다. 이 방법은 API 자격증명이 필요하지 않습니다.
  • config.jsongoogle_credentials_path가 가리키는 credentials.json 파일이 없거나, google_drive_folder_id가 기본값이라면 Google Drive API 업로드 도구는 자동으로 비활성화되고, 마운트 저장만 사용합니다.
  • Google Drive API 업로드가 필요하다면:
    1. Google Cloud Console에서 OAuth 2.0 클라이언트 ID(데스크톱)를 만들고 JSON을 다운로드
    2. 프로젝트가 접근 가능한 경로에 파일을 두고 config.jsongoogle_credentials_path를 해당 경로로 설정
    3. 업로드 대상 폴더의 ID를 google_drive_folder_id에 설정
    4. 첫 실행 시 브라우저 인증을 완료하면 token.json이 같은 폴더에 생성됩니다.

7. 확장 및 커스터마이징

7.1 새로운 도구 추가

ai_agent.pytools 리스트에 새로운 도구를 추가할 수 있습니다.

7.2 모델 변경

config.json에서 model_name을 다른 모델로 변경 가능합니다.

7.3 크롤링 전략 수정

web_scraper.py에서 크롤링 로직을 커스터마이징할 수 있습니다.

8. 주의사항

  • 모델 다운로드에 시간이 오래 걸릴 수 있습니다.
  • Google Drive API 사용량 제한에 유의하세요.
  • 대량의 데이터를 수집할 경우 Colab 세션 시간 제한을 고려하세요.
  • 개인정보 보호 및 저작권을 준수하세요.
  • 일부 웹사이트는 자동화된 크롤링을 차단할 수 있습니다. 과도한 요청을 피하고 robots.txt를 준수하세요.
  • Selenium 실행에 문제가 있으면 Chrome/ChromeDriver 설치 상태를 확인하세요.

10. 참고 사항 (동작 방식)

  • 모델 다운로드는 메모리에 올리지 않고 Hugging Face의 snapshot_download로 파일만 동기화합니다.
  • 실제 모델 로딩은 실행 시점에 AIAgent가 수행하며, 가능한 경우 GPU/CPU 자동 분산(device_map="auto"), 실패 시 CPU로 폴백합니다.
  • 간단한 웹 검색은 DuckDuckGo HTML 결과를 파싱하여 링크를 추출합니다(외부 유료 API 불필요).

9. 지원

문제가 발생하거나 추가 기능이 필요한 경우 다음 정보를 포함하여 문의하세요:

  • 오류 메시지
  • 실행 환경 (Colab Pro, GPU 유형)
  • 재현 단계