229 lines
7.9 KiB
Markdown
229 lines
7.9 KiB
Markdown
# 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를 마운트할 수 있습니다:
|
|
|
|
```python
|
|
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에서 클론:
|
|
```bash
|
|
!git clone https://github.com/your-repo/AI_Web_Scraper.git
|
|
%cd AI_Web_Scraper
|
|
```
|
|
|
|
### 1.5 Google Drive 마운트
|
|
시스템 실행 전에 다음 코드를 실행하여 Google Drive를 마운트하세요:
|
|
```python
|
|
from google.colab import drive
|
|
drive.mount('/content/drive')
|
|
```
|
|
|
|
## 2. 환경 설정
|
|
|
|
### 2.1 필요한 패키지 설치
|
|
```bash
|
|
!pip install -r requirements.txt
|
|
```
|
|
|
|
최신 버전으로 업데이트(권장):
|
|
```bash
|
|
!pip install -U transformers accelerate bitsandbytes huggingface-hub
|
|
```
|
|
|
|
### 2.2 설정 파일 수정 (선택사항)
|
|
기본적으로 데이터는 `/content/drive/MyDrive/AI_Data`에 저장됩니다. 다른 경로를 원하시면 `config.json`의 `drive_mount_path`를 수정하세요:
|
|
|
|
```json
|
|
{
|
|
"data_storage": {
|
|
"drive_mount_path": "/content/drive/MyDrive/MyCustomFolder"
|
|
}
|
|
}
|
|
```
|
|
|
|
또는 실행 시 `--save-path` 옵션으로 지정할 수 있습니다.
|
|
|
|
웹 스크래핑은 기본으로 Requests+BeautifulSoup 모드로 동작합니다(`use_selenium=false`).
|
|
Selenium을 사용하려면 `web_scraping.use_selenium`을 `true`로 바꾸고, Colab에 Chrome/ChromeDriver를 설치해야 합니다:
|
|
|
|
```bash
|
|
sudo apt-get update && sudo apt-get install -y google-chrome-stable || true
|
|
pip install selenium webdriver-manager
|
|
```
|
|
설치가 어려우면 기본 Requests 모드를 유지하세요.
|
|
|
|
## 3. 시스템 실행
|
|
|
|
### 3.1 기본 실행 (AI가 스스로 주제 선정)
|
|
```bash
|
|
python main.py
|
|
```
|
|
이 경우 AI가 현재 흥미로운 기술 트렌드 3개를 스스로 선정하여 조사합니다.
|
|
|
|
### 3.2 AI가 스스로 주제 선정하도록 명시적 실행
|
|
```bash
|
|
python main.py --auto-topics
|
|
```
|
|
|
|
### 3.3 특정 주제로 실행
|
|
```bash
|
|
python main.py --topics "인공지능" "머신러닝" "딥러닝"
|
|
```
|
|
|
|
### 3.4 설정 파일 지정
|
|
```bash
|
|
python main.py --config ./custom_config.json
|
|
```
|
|
|
|
### 3.5 저장 경로 지정
|
|
```bash
|
|
python main.py --save-path "/content/drive/MyDrive/MyCustomFolder"
|
|
```
|
|
이렇게 하면 데이터를 지정한 폴더에 저장합니다.
|
|
|
|
### 3.6 Hugging Face 토큰(필요 시)
|
|
일부 모델은 접근 토큰이 필요할 수 있습니다. 필요하다면 다음과 같이 환경 변수로 설정하세요.
|
|
```bash
|
|
export HF_TOKEN=hf_********************************
|
|
```
|
|
Colab 셀에서 설정 예:
|
|
```python
|
|
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 모니터링
|
|
```bash
|
|
!nvidia-smi
|
|
```
|
|
|
|
### 5.3 메모리 사용량 확인
|
|
```bash
|
|
!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`에서 메모리 할당을 조정할 수 있습니다:
|
|
```json
|
|
{
|
|
"model_settings": {
|
|
"max_memory": {
|
|
"gpu": "25GB",
|
|
"cpu": "50GB"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
#### 6.2.2 수동 설정
|
|
`config.json`에서 양자화 설정을 조정할 수 있습니다:
|
|
```json
|
|
{
|
|
"model_settings": {
|
|
"use_quantization": true,
|
|
"quantization_bits": 8
|
|
}
|
|
}
|
|
```
|
|
|
|
#### 6.2.3 더 작은 모델 사용
|
|
메모리가 여전히 부족하다면 `config.json`에서 모델을 더 작은 것으로 변경:
|
|
```json
|
|
{
|
|
"model_name": "microsoft/DialoGPT-medium"
|
|
}
|
|
```
|
|
또는 양자화된/경량화된 공개 모델을 사용하면 메모리 요구량이 크게 줄어듭니다.
|
|
|
|
## 7. 확장 및 커스터마이징
|
|
|
|
### 7.1 새로운 도구 추가
|
|
`ai_agent.py`의 `tools` 리스트에 새로운 도구를 추가할 수 있습니다.
|
|
|
|
### 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 유형)
|
|
- 재현 단계
|