xming521/WeClone
요약
WeClone은 디지털 아바타 생성을 위한 완전한 엔드투엔드 솔루션으로, 채팅 데이터를 내보내고 전처리하며 모델 학습 및 배포까지 지원합니다. 이 시스템은 이미지 모달리티를 포함한 채팅 기록을 활용하여 LLM을 미세 조정함으로써, 사용자의 개성이 담긴 고품질의 디지털 아바타를 생성할 수 있게 합니다. Telegram 등 다양한 플랫폼과 통합되어 작동하며, 지역화된 미세 조정 및 데이터 필터링 기능을 통해 높은 수준의 보안성과 개인 정보 보호를 제공합니다.
핵심 포인트
- 디지털 아바타 생성을 위한 완전한 엔드투엔드 파이프라인을 제공합니다 (데이터 추출 → 전처리 → 모델 학습 → 배포).
- 이미지 모달리티가 포함된 채팅 기록(채팅 히스토리)을 활용하여 LLM을 미세 조정할 수 있습니다.
- Telegram, WhatsApp 등 주요 메신저 플랫폼과 통합되어 사용자의 디지털 아바타를 생성합니다.
- LoRA/QLoRA 등의 효율적인 파인튜닝 기법을 지원하며, 다양한 모델 크기(7B~70B)에 대한 VRAM 요구 사항 가이드라인을 제공합니다.
- Microsoft Presidio 등을 활용하여 개인 식별 정보(PII)를 필터링하고 데이터 프라이버시를 보호할 수 있습니다.
简体中文| English| Project Homepage | Documentation
- 💫 디지털 아바타 생성을 위한 완전한 엔드 투 엔드 솔루션, 채팅 데이터 내보내기, 전처리, 모델 학습 및 배포 포함
- 💬 이미지 모달 데이터를 지원하며, 그 진정한 "맛" 을 부여하는 채팅 히스토리 로 LLM 미세 조정
- 🔗 Telegram, WhatsApp (곧 출시 예정) 와 통합하여 자신의 디지털 아바타 생성
- 🛡️ 지역화된 미세 조정 및 배포를 통한 보안 및 제어 가능한 데이터 프라이버시 정보 필터링
| 플랫폼 | 텍스트 | 이미지 | 음성 | 비디오 | 애니메이션 이모지/스티커 | 링크 (공유) | 인용 | 전보 | 위치 | 파일 |
|---|---|---|---|---|---|---|---|---|---|---|
| Telegram | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | |
| ... | ||||||||||
| 플랫폼 | 배포 지원 | |||||||||
| --- | --- | |||||||||
| Telegram | ✅ | |||||||||
| ... |
중요
- WeClone 는 빠른 반복 단계에 있으며, 현재 성능은 최종 결과를 대표하지 않습니다.
- LLM 미세 조정 효과는 모델 크기, 채팅 데이터의 양과 품질에 크게 의존합니다. 이론적으로 더 큰 모델과 더 많은 데이터가 더 좋은 결과를 제공합니다.
- 7B 모델의 성능은 평균이며, 14B 또는 그 이상의 파라미터를 가진 모델은 더 나은 결과를 제공하는 경향이 있습니다.
- Windows 환경은 엄격하게 테스트되지 않았습니다. WSL 을 런타임 환경으로 사용할 수 있습니다.
[25/07/10] 데이터 소스 추가 Telegram
[25/06/05] 이미지 모달 데이터 미세 조정 지원
- Big Model Lab (Lab4AI) (50 CNY 쿠폰 포함): https://www.lab4ai.cn/project/detail?utm_source=weclone1&id=ab83d14684fa45d197f67eddb3d8316c&type=project
프로젝트는 Qwen2.5-VL-7B-Instruct 모델을 기본으로 사용하며, SFT 단계 미세 조정을 위해 LoRA 방법을 사용합니다. LLaMA Factory 를 지원하는 다른 모델과 방법도 사용할 수 있습니다.
예상 VRAM 요구 사항:
| 방법 | 정밀도 | 7B | 14B | 30B | 70B | x B |
|---|---|---|---|---|---|---|
Full (bf16 또는 fp16) | ||||||
| 32 | 120GB | 240GB | 600GB | 1200GB | 18x GB | |
Full (pure_bf16) | ||||||
| 16 | 60GB | 120GB | 300GB | 600GB | 8x GB | |
| Freeze/LoRA/GaLore/APOLLO/BAdam | 16 | 16GB | 32GB | 64GB | 160GB | 2x GB |
| QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | x GB |
| ... |
- CUDA 설치 (이미 설치된 경우 스킵)
버전 12.6 이상 필요 - uv 를 사용하여 의존성을 설치하는 것이 매우 빠른 Python 환경 관리자이므로 권장됩니다. uv 를 설치한 후, 새로운 Python 환경을 생성하고 의존성을 설치할 수 있는 다음 명령어를 사용할 수 있습니다.
git clone https://github.com/xming521/WeClone.git && cd WeClone
uv venv .venv --python=3.12
source .venv/bin/activate # windows .venv\Scripts\activate
...
- 설정 파일 템플릿을 복사하고
settings.jsonc로 이름을 변경한 후, 이 파일에서 후속 설정 변경을 수행하세요:
cp examples/tg.template.jsonc settings.jsonc
Note
settings.jsonc 파일에 훈련 및 추론 관련 설정이 통합되어 있습니다.
- PyTorch 가 CUDA 환경을 올바르게 구성했는지 인식할 수 있는지 테스트하기 위해 다음 명령어를 사용하세요 (Mac 은 필요 없음):
python -c "import torch; print('CUDA Available:', torch.cuda.is_available());"
- (선택 사항) 훈련 및 추론을 가속화하기 위해 FlashAttention 을 설치하세요:
uv pip install flash-attn --no-build-isolation
Hugging Face 를 사용하여 모델을 다운로드하거나 다음 명령어를 사용하세요:
git lfs install
git clone https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct models/Qwen2.5-VL-7B-Instruct
Telegram Desktop 을 사용하여 채팅 기록을 내보내세요. 채팅 인터페이스의 오른쪽 상단 클릭한 후 "Export chat history" 를 클릭하세요. 메시지 유형으로 Photos, 형식으로 JSON 을 선택하세요. 여러 연락처를 내보낼 수 있습니다 (그룹 채팅 기록은 권장하지 않음), 그리고 내보낸 ChatExport_*
를 ./dataset/telegram
디렉토리에 배치하세요. 즉, 다른 사람의 채팅 기록 폴더를 ./dataset/telegram
에 함께 배치하세요.
- 설정 파일에서 필요에 따라
language,platform, 그리고include_type을 수정하세요. - telegram 을 사용할 경우, 설정 파일의telegram_args.my_id를 자신의 telegram 사용자 ID 로 수정하세요. - 기본적으로 프로젝트는 Microsoft Presidio 를 사용하여 데이터에서phone numbers, email addresses, credit card numbers, IP addresses, geographic location names, international bank account numbers, cryptocurrency wallet addresses, age information, and generic ID numbers
를 제거하지만 100% 식별을 보장할 수 없습니다. - 따라서 차단 목록 blocked_words
가 settings.jsonc
에 제공되어 있으며, 사용자는 필터링하고 싶은 단어 또는 구문을 수동으로 추가할 수 있습니다 (차단된 단어가 포함된 전체 문장은 기본적으로 제거됩니다).
Important
🚨 개인 프라이버시를 보호하고 개인 정보를 누설하지 않도록 주의하세요!
- 다음 명령어를 실행하여 데이터를 처리하세요.
make_dataset_args
를 설정 파일에 따라 자신의 채팅 스타일에 맞게 수정할 수 있습니다.
weclone-cli make-dataset
More Parameter Details: Data Preprocessing
- (Optional)
model_name_or_path
,template
,lora_target
을settings.jsonc에서 수정하여 로컬에 다운로드한 다른 모델을 선택할 수 있습니다. per_device_train_batch_size와gradient_accumulation_steps를 수정하여 VRAM 사용량을 조정합니다.- 데이터셋의 양과 질성에 따라
num_train_epochs,lora_rank,lora_dropout과 같은 파라미터를train_sft_args에서 수정할 수 있습니다.
weclone-cli train-sft
deepspeed 라인을 settings.jsonc 에서 주석 해제하고 다음 명령어로 멀티 GPU 학습을 수행합니다:
uv pip install "deepspeed<=0.16.9"
deepspeed --num_gpus=number_of_gpus weclone/train/train_sft.py
적합한 온도와 top_p 값을 테스트한 후, 다음 추론 사용에 대해 infer_args 를 settings.jsonc 에서 수정합니다.
weclone-cli webchat-demo
weclone-cli server
개인 정보를 요청하는 질문은 포함되지 않으며, 일상 대화만 수행합니다. 테스트 결과는 test_result-my.txt 에 있습니다.
weclone-cli server
weclone-cli test-model
Tip
WeClone 과 영어 원어민이 대화하는 흥미로운 예시를 찾고 있습니다! 트위터에 공유해 주세요.
AstrBot 은 Discord, Telegram, Slack, Feishu 등 다양한 플랫폼을 지원합니다.
사용 단계:
-
AstrBot 에서 배포
-
AstrBot 에서 Discord, Telegram, Slack 등의 메신저 플랫폼 배포
-
weclone-cli server를 실행하여 API 서비스를 시작합니다. - AstrBot 에 새 서비스 제공자를 추가하고, OpenAI 타입을 선택한 후 AstrBot 의 배포 방식에 따라 API Base URL 을 입력합니다 (예: docker 배포의 경우 http://172.17.0.1:8005/v1), 모델을 gpt-3.5-turbo 로 설정하고 임의의 API Key 를 입력합니다. -
Fine-tuning 이후 도구 호출은 지원되지 않으므로, 메신저 플랫폼에서 다음 명령어를 보내기 전에 기본 도구를 먼저 끄세요:
/tool off_all -
AstrBot 에서 Fine-tuning 시 사용된 default_system 에 따라 시스템 프롬프트를 설정합니다.
Important
API 서비스 로그를 확인하여 대형 모델 서비스 요청 파라미터가 Fine-tuning 시 사용된 것과 최대한 일치하도록 하고, 모든 도구 플러그인 기능을 끄세요.
LangBot 은 다양한 시나리오에 적합한 쉬운 사용 오픈소스 LLM 채팅봇 플랫폼입니다. 전 세계 다양한 메신저 플랫폼과 연결됩니다. IM 봇을 5 분 만에 설정할 수 있습니다.
- LangBot 배포
- LangBot 에 봇 추가 (Discord, Telegram, Slack, Lark 등)
- 실행
weclone-cli server
WeClone API 서비스 시작 - 모델 페이지에 새 모델 추가, 이름 gpt-3.5-turbo 로 설정, 제공자 (provider) 를 OpenAI 로 선택, 요청 URL 을 WeClone 의 주소로 입력. 상세 연결 방법은 문서 참조, API Key 는 임의 값 입력.
-
추가한 모델을 파이프라인 구성에서 선택하거나 프롬프트 구성 수정
-
더 많은 데이터 소스 지원
-
풍부한 컨텍스트: 대화 내역, 채팅 참여자 정보, 시간 등 포함
-
메모리 지원
-
다중 모달 지원: 이미 이미지 지원 구현됨
-
데이터 증강
-
GUI 지원
-
COT (Chain of Thought) 추론 지원
문제 해결에는 DeepWiki 사용 권장.
이슈/풀 리퀘스트 환영!
새로운 기능 추가는 먼저 이슈를 통해 논의 후 진행.
개발 환경:
uv pip install --group dev -e .
pre-commit install
프로젝트는 테스트에 pytest, 타입 체크에 pyright, 코드 포맷팅에 ruff 사용.
코드 제출 전 pytest tests 실행하여 모든 테스트 통과 확인.
다음 코드 기여자 및 커뮤니티 구성원 감사드립니다.
이 프로젝트는 PyWxDump, LLaMA-Factory, AstrBot, LangBot 등 우수한 오픈소스 프로젝트에서 큰 혜택을 받음.
주의
본 프로젝트는 학습, 연구, 실험 목적용만이며, 프로덕션 환경 사용 시 상당한 위험 존재. 신중히 평가 후 사용. 불법 목적 사용 금지.
중요
경고 조건 보기 클릭
- 사용자 본 프로젝트 사용 시 모든 관련 위험 인지 및 부담 필요
프로젝트 작성자는 본 프로젝트 사용으로 인한 직접적 또는 간접적 손실에 대해 책임지지 않음- 데이터 손실, 금전적 손실, 법적 분쟁, 개인 명예훼손, 사회적 관계 영향, 심리적 외상, 경력 발전 장애, 사업 명예 훼손 등 포함
상업적 목적 제공 또는 외부 서비스 제공은 모든 위험을 스스로 감수해야 합니다- 생산 환경 사용으로 발생할 수 있는 모든 결과 (서비스 중단, 데이터 보안 문제, 사용자 불만, 법적 책임 등) 는 완전히 사용자가 부담합니다
생산 환경에 사용하기 전에 철저한 테스트, 검증 및 위험 평가를 수행하는 것이 권장됩니다
-
미세 조정 모델은 부정확하거나 해롭거나 오해의 소지가 있는 콘텐츠를 생성할 수 있습니다
-
모델 출력은 실제 사람의 의견이나 의도를 대표하지 않습니다
-
사용자는 모델 출력을 수동 검토 및 검증해야 합니다
-
사용자가 업로드한 채팅 기록 및 기타 데이터가 관련 법률 및 규정을 준수하도록 보장해야 합니다
-
사용자가 데이터 관련人员和者로부터 적절한 권한을 얻어야 합니다 - 이 프로젝트는 데이터 유출 또는 개인정보 침해에 대해 책임지지 않습니다
사용자가 이 프로젝트를 사용하는 것이 현지 법률 및 규정을 준수하도록 보장해야 합니다- 인공지능, 데이터 보호, 지식재산권 등 관련 법률을 포함합니다
불법 사용의 결과는 사용자가 부담합니다
- 이 프로젝트는 명시적 또는 묵시적 보증 없이 "있는 그대로" 제공됩니다
- 저자는 지속적인 기술 지원 또는 유지보수를 제공할 것을 약속하지 않습니다
- 프로젝트의 안정성, 신뢰성 또는 적용 가능성에 대한 보장이 없습니다
이 프로젝트로 생성된 디지털 아바타를 사용할 때 다음 사항에 대해 강력히 권장합니다:
- 각 대화 시작 시 "AI Bot" 또는 "Digital Avatar"로 명확하게 식별해야 합니다
- 사용자 인터페이스에서 "AI-generated content" 를 두드러지게 표시해야 합니다
- 실제 인간 대화와 혼동될 수 있는 위험을 방지하기 위해 사용자를 오해하지 않도록 해야 합니다
생산 환경에 사용이 필수적인 경우 다음 사항에 권장됩니다:
- 포괄적인 보안 테스트를 수행해야 합니다
- 완전한 콘텐츠 검토 메커니즘을 구축해야 합니다
- 응급 대응 계획을 개발해야 합니다
- 적절한 보험 가입을 구매해야 합니다
- 법률 전문가와 상담하여 조언을 구해야 합니다
이 해제는 프로젝트 업데이트로 수정될 수 있으며, 사용자는 최신 버전을 정기적으로 확인해야 합니다. 이 프로젝트를 계속 사용하는 것은 최신 해제 조건에 동의함을 나타냅니다.
이 프로젝트의 코드 또는 모델을 어떤 방식으로든 다운로드, 복제, 수정, 배포 또는 사용할 경우, 이는 당신이 이 해제의 모든 조건을 완전히 읽었으며 이해하고 무조건적으로 수용했음을 나타냅니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기