Torchchat은 LLM (Large Language Model) (LLM)을 완벽하게 실행하는 기능을 보여주는 작은 코드베이스입니다. Torchchat을 사용하면 Python을 사용하여 LLM을 실행하고 (C/C ++) 응용 프로그램 (데스크탑 또는 서버) 및 iOS 및 Android에서 LLM을 실행할 수 있습니다.
중요한
2024 년 9 월 25 일 업데이트 : Torchchat은 llama3.2 11b 에 대한 멀티 모드 지원을 받았습니다 !!
시도해 보려면 아래 설치 섹션을 완료 한 다음 멀티 모달 가이드로 이동하여 자세한 내용을 알아보십시오.
다음 모델은 Torchchat에 의해 지원되며 관련 별명이 있습니다.
| 모델 | 모바일 친화적 | 메모 |
|---|---|---|
| 메타-롤라마/메타-롤라마 -3.2-3B-비율 | ✅ | chat 위해 조정되었습니다. llama3.2-3b 에 별명. |
| 메타-롤람/메타 롤라마 -3.2-3B | ✅ | generate 에 가장 적합합니다. llama3.2-3b-base 에 별명. |
| 메타 롤라/라마 가드 -3-1B | ✅ | 분류를 위해 조정되었습니다. llama3-1b-guard 에 별명. |
| 메타-롤라마/메타-롤라마 -3.2-1B- 비율 | ✅ | chat 위해 조정되었습니다. llama3.2-1b 에 별명. |
| 메타-롤람/메타 롤라마 -3.2-1B | ✅ | generate 에 가장 적합합니다. llama3.2-1b-base 에 별명. |
| 메타-롤라마/라마 -3.2-11B vision-instruct | 멀티 모달 (이미지 + 텍스트). chat 위해 조정되었습니다. llama3.2-11B 에 별명. | |
| 메타 롤라/라마 -3.2-11B- 비전 | 멀티 모달 (이미지 + 텍스트). generate 위해 조정되었습니다. llama3.2-11B-base 에 별명. | |
| 메타-롤라마/메타-롤라마 -3.1-8B-비율 | ✅ | chat 위해 조정되었습니다. llama3.1 에 대한 별칭. |
| 메타-롤람/메타 롤라마 -3.1-8b | ✅ | generate 에 가장 적합합니다. llama3.1-base 에 별명. |
| 메타-롤라마/메타 롤라마 -3-8B 비율 | ✅ | chat 위해 조정되었습니다. llama3 에 별명. |
| 메타 롤라마/메타 롤라마 -3-8B | ✅ | generate 에 가장 적합합니다. llama3-base 에 대한 별칭. |
| 메타 롤라/라마 -2-7B-Chat-HF | ✅ | chat 위해 조정되었습니다. llama2 에 대한 별칭. |
| 메타 롤라/llama-2-13B-chat-HF | chat 위해 조정되었습니다. llama2-13b-chat 에 별명. | |
| 메타 롤라/라마 -2-70B-Chat-HF | chat 위해 조정되었습니다. llama2-70b-chat 에 별명. | |
| 메타 롤라/라마 -2-7B-HF | ✅ | generate 에 가장 적합합니다. llama2-base 에 대한 별칭. |
| 메타 롤라/코 델라마 -7B- 파이 톤 -HF | ✅ | 파이썬으로 조정하고 generate . codellama 에 별명. |
| 메타-롤라/코 델라마 -34B- 파이썬 -HF | ✅ | 파이썬으로 조정하고 generate . codellama-34b 에 대한 별칭. |
| Mistralai/Mistral-7B-V0.1 | ✅ | generate 에 가장 적합합니다. mistral-7b-v01-base 에 대한 별칭. |
| mistralai/mistral-7b-instruct-v0.1 | ✅ | chat 위해 조정되었습니다. mistral-7b-v01-instruct 에 대한 별칭. |
| mistralai/mistral-7b-instruct-v0.2 | ✅ | chat 위해 조정되었습니다. mistral 에 별명. |
| Tinyllamas/Stories15m | ✅ | generate 위한 장난감 모델. stories15M . |
| Tinyllamas/Storys42m | ✅ | generate 위한 장난감 모델. stories42M . |
| Tinyllamas/Stories110m | ✅ | generate 위한 장난감 모델. stories110M . |
| OpenLM-Research/Open_Llama_7B | ✅ | generate 에 가장 적합합니다. open-llama 에 별명. |
다음 단계에서는 Python 3.10이 설치되어 있어야합니다.
팁
Torchchat은 다양한 Pytorch 프로젝트의 최신 변경 사항을 사용하므로 (아래 명령을 사용하여) venv 또는 Conda를 사용하는 것이 좋습니다.
git clone https://github.com/pytorch/torchchat.git
cd torchchat
python3 -m venv .venv
source .venv/bin/activate
./install/install_requirements.shTorchchat의 인터페이스는 Python 명령 및 기본 주자를 통해 활용됩니다. 파이썬 명령은 -HELP 메뉴에서 열거 할 수 있지만 후자는 해당 섹션에서 탐색됩니다.
python3 torchchat.py --help # Output
usage: torchchat [-h] {chat,browser,generate,export,eval,download,list,remove,where,server} ...
positional arguments:
{chat,browser,generate,export,eval,download,list,remove,where,server}
The specific command to run
chat Chat interactively with a model via the CLI
generate Generate responses from a model given a prompt
browser Chat interactively with a model in a locally hosted browser
export Export a model artifact to AOT Inductor or ExecuTorch
download Download model artifacts
list List all supported models
remove Remove downloaded model artifacts
where Return directory containing downloaded model artifacts
server [WIP] Starts a locally hosted REST server for model interaction
eval Evaluate a model via lm-eval
options:
-h, --help show this help message and exit파이썬 추론 (채팅, 생성, 브라우저, 서버)
수출 (수출)
인벤토리 관리 (다운로드, 목록, 제거, 위치)
평가 (평가)
대부분의 모델은 포옹 페이스를 분배 채널로 사용하므로 포옹 얼굴 계정을 만들어야합니다. write 역할과 함께 여기에 문서화 된대로 포옹 페이스 사용자 액세스 토큰을 만듭니다.
포옹 얼굴에 로그인 :
huggingface-cli login
사용 가능한 모델을 살펴보십시오.
python3 torchchat.py list그런 다음 테스트를 위해 하나를 다운로드하십시오 (이 readme는 llama3.1을 사용합니다).
python3 torchchat.py download llama3.1
메모
이 명령은 아직 접근 할 수없는 경우 포옹 얼굴을 통해 라마 3에 대한 액세스를 요청하라는 메시지가 표시 될 수 있습니다. 액세스가 부여 될 때 프롬프트를 따르고 명령을 다시 실행하십시오.*
이 하위 명령은 특정 모델의 위치를 보여줍니다.
python3 torchchat.py where llama3.1하드 코드 경로를 원하지 않을 때 스크립트에 유용합니다.
이 하위 명령은 지정된 모델을 제거합니다
python3 torchchat.py remove llama3.1 이 명령에 대한 자세한 내용은 --help 옵션을 추가하여 찾을 수 있습니다.
Pytorch에서 모델을 실행하는 가장 간단한 방법은 열망하는 실행을 통한 것입니다. 이것은 Pytorch와 Torchchat의 기본 실행 모드입니다. 아티팩트를 내보내거나 별도의 러너를 사용하지 않고 추론을 수행합니다.
추론에 사용되는 모델은 또한 특정 요구 (컴파일, 양자화 등)에 맞게 구성되고 맞춤화 될 수 있습니다. Torchchat에서 지원하는 옵션은 사용자 정의 안내서를 참조하십시오.
팁
이 명령에 대한 자세한 내용은 --help 메뉴를 참조하십시오.
이 모드를 사용하면 대화식 방식으로 LLM과 채팅 할 수 있습니다.
python3 torchchat.py chat llama3.1이 모드는 입력 프롬프트를 기반으로 텍스트를 생성합니다.
python3 torchchat.py generate llama3.1 --prompt " write me a story about a boy and his bear "이 모드는 모델과 상호 작용하기 위해 REST API를 노출시킵니다. 서버는 채팅 완료를 위해 OpenAI API 사양을 따릅니다.
REST API를 테스트하려면 2 개의 터미널이 필요합니다 . 하나는 서버를 호스팅하고 하나는 요청을 보내야합니다. 하나의 터미널에서 서버를 시작하십시오
python3 torchchat.py server llama3.1쉘 기본값 : python3 torchchat.py server llama3.1 & server_pid = $! ; Sleep 90 # 서버가 요청을받을 준비가 될 때까지 기다립니다.
다른 터미널에서는 curl 사용하여 서버를 쿼리하십시오. 모델 구성에 따라이 쿼리에 응답하는 데 몇 분이 걸릴 수 있습니다.
메모
이 기능은 활성 개발 중이므로 모든 매개 변수가 소비되는 것은 아닙니다. 구현되는 요청 매개 변수에 대한 자세한 내용은 API/API.py를 참조하십시오. 문제가 발생하면 추적 GitHub 문제에 대해 의견을 제시하십시오.
요청에서 stream "true"로 설정하면 청크에서 응답이 방출됩니다. stream 이 설정이 없거나 "True"가 아닌 경우 클라이언트는 서버의 전체 응답을 기다립니다.
예제 입력 + 출력
curl http://127.0.0.1:5000/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "llama3.1",
"stream": "true",
"max_tokens": 200,
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
{"response":" I'm a software developer with a passion for building innovative and user-friendly applications. I have experience in developing web and mobile applications using various technologies such as Java, Python, and JavaScript. I'm always looking for new challenges and opportunities to learn and grow as a developer.nnIn my free time, I enjoy reading books on computer science and programming, as well as experimenting with new technologies and techniques. I'm also interested in machine learning and artificial intelligence, and I'm always looking for ways to apply these concepts to real-world problems.nnI'm excited to be a part of the developer community and to have the opportunity to share my knowledge and experience with others. I'm always happy to help with any questions or problems you may have, and I'm looking forward to learning from you as well.nnThank you for visiting my profile! I hope you find my information helpful and interesting. If you have any questions or would like to discuss any topics, please feel free to reach out to me. I"}
쉘 기본값 : 킬 $ {server_pid}
이 명령은 로컬 서버를 쿼리하여 로컬 채팅을위한 기본 브라우저 인터페이스를 엽니 다.
먼저 위의 서버 섹션의 단계를 따라 로컬 서버를 시작하십시오. 그런 다음 다른 터미널에서 인터페이스를 시작하십시오. 다음을 실행하면 브라우저에서 탭이 열립니다.
streamlit run torchchat/usages/browser.py
"Max Response Tokens"슬라이더를 사용하여 각 응답에 대한 모델에서 생성 된 최대 토큰 수를 제한하십시오. "채팅 재설정"버튼을 클릭하여 메시지 기록을 제거하고 새로운 채팅을 시작하십시오.
AOTI는 더 빠른 추론을 위해 실행하기 전에 모델을 컴파일합니다. 이 프로세스는 aotenductor에 의해 생성 된 모든 아티팩트를 포함하는 Zipple PT2 파일과 런닝 가능한 내용이있는 파일을 생성 한 다음 추론을 위해로드됩니다. 이것은 파이썬과 C ++ 환경 모두에서 수행 할 수 있습니다.
다음 예제는 LLAMA3.1 8B 명령 모델을 내보내고 실행합니다. 첫 번째 명령은 실제 내보내기를 컴파일하고 수행합니다.
python3 torchchat.py export llama3.1 --output-aoti-package-path exportedModels/llama3_1_artifacts.pt2메모
컴퓨터에 cuda가있는 경우 성능을 위해이 플래그를 추가하십시오 -내보내기시 --quantize torchchat/quant_config/cuda.json .
양자화 및 유스 케이스에 사용할 설정에 대한 자세한 내용은 사용자 정의 안내서를 방문하십시오.
Python Enviroment에서 실행하려면 이전과 같은 생성 부 서브 컨벤션을 사용하지만 PT2 파일을 포함하십시오.
python3 torchchat.py generate llama3.1 --aoti-package-path exportedModels/llama3_1_artifacts.pt2 --prompt " Hello my name is "C ++ Enviroment에서 실행하려면 러너 이진을 구축해야합니다.
torchchat/utils/scripts/build_native.sh aoti그런 다음 PT2와 함께 컴파일 된 실행 파일을 실행하십시오.
cmake-out/aoti_run exportedModels/llama3_1_artifacts.pt2 -z ` python3 torchchat.py where llama3.1 ` /tokenizer.model -l 3 -i " Once upon a time " Executorch를 사용하면 모바일 또는 임베디드 장치에서 실행을 위해 모델을 최적화 할 수 있습니다.
Torchchat에서 Executorch가 필요한 명령을 실행하기 전에 먼저 Executorch를 설치해야합니다.
Executorch를 설치하려면 다음 명령을 실행하십시오. 이것은 Executorch Repo를 ./et-build/src로 다운로드하고 다양한 Executorch 라이브러리를 ./et-build/install에 설치합니다.
중요한
다음 명령은 Torchchat 루트 디렉토리에서 실행해야합니다.
export TORCHCHAT_ROOT=${PWD}
./torchchat/utils/scripts/install_et.sh
AOTI와 마찬가지로 장치에 배포하기 위해 먼저 PTE 아티팩트를 내보낸 다음 유물을 추론을 위해로드합니다.
다음 예제는 LLAMA3.1 8B 명령 모델을 사용합니다.
# Export
python3 torchchat.py export llama3.1 --quantize torchchat/quant_config/mobile.json --output-pte-path llama3.1.pte
메모
우리는 --quantize torchchat/quant_config/mobile.json 사용하여 LLAMA3.1 모델을 정량화하여 모델 크기를 줄이고 기기 사용 사례의 성능을 향상시킵니다.
양자화 및 유스 케이스에 사용할 설정에 대한 자세한 내용은 사용자 정의 안내서를 방문하십시오.
Executorch는 데스크탑 추론에 중점을 두지 않지만 그렇게 할 수 있습니다. 이것은 PTE 모델을 물리적 장치로 보내지 않고 테스트하는 데 편리합니다.
구체적으로, 그렇게하는 두 가지 방법은 순수한 파이썬과 러너를 통해
# Execute
python3 torchchat.py generate llama3.1 --pte-path llama3.1.pte --prompt "Hello my name is"
러너를 구축하십시오
torchchat/utils/scripts/build_native.sh et러너를 사용하여 실행하십시오
cmake-out/et_run llama3.1.pte -z ` python3 torchchat.py where llama3.1 ` /tokenizer.model -l 3 -i " Once upon a time "다음은 Executorch를 설정하기위한 단계를 완료했다고 가정합니다.
.dmg 설치 프로그램을 다운로드하여 열고 CMAKE 앱을 /Applications 폴더로 이동하십시오.sudo /Applications/CMake.app/Contents/bin/cmake-gui --installincreased-memory-limit 자격을 갖춘 개발 프로비저닝 프로파일. Xcode 프로젝트 열기 :
open et-build/src/executorch/examples/demo-apps/apple_ios/LLaMA/LLaMA.xcodeproj참고 : 패키지 의존성과 관련된 문제가 발생하는 경우 Xcode를 닫고 캐시 및/또는 빌드 제품을 청소하고 Xcode 프로젝트를 다시 열십시오.
rm -rf ~ /Library/org.swift.swiftpm ~ /Library/Caches/org.swift.swiftpm ~ /Library/Caches/com.apple.dt.Xcode ~ /Library/Developer/Xcode/DerivedData
재생 버튼을 클릭하여 시뮬레이터에서 앱을 시작하십시오.
장치에서 실행하려면 increased-memory-limit 자격으로 개발 및 프로비저닝 프로파일을 설정해야합니다. 프로비저닝 프로파일을 필요한 기능과 일치하도록 앱의 번들 식별자를 업데이트하십시오.
앱을 성공적으로 시작한 후 내보내기 Executorch 모델 ( .pte ) 및 Tokenizer ( .model ) 파일을 Illama 폴더에 복사하십시오. 현재 torchchat 디렉토리에서 llama3.1.pte 라는 모델 파일과 $(python3 torchchat.py where llama3.1)/tokenizer.model path에서 Tokenizer 파일을 찾을 수 있습니다.
On My iPhone > iLLaMA 폴더에 저장하십시오.앱의 UI 가이드 라인을 따라 로컬 파일 시스템에서 모델 및 토 케이저 파일을 선택하고 프롬프트를 발행하십시오.
아래 이미지를 클릭하여 작동중인 상태를보십시오!
다음은 Executorch를 설정하기위한 단계를 완료했다고 가정합니다.
Java 라이브러리와 해당 JNI 라이브러리가 포함 된 AAR 파일을 다운로드하여 앱을 빌드하고 실행하십시오.
다운로드 된 AAR 파일을 torchchat/edge/android/torchchat/app/libs/ 로 이동하십시오. 디렉토리 torchchat/edge/android/torchchat/app/libs/ 존재하지 않는 경우 디렉토리를 만들어야 할 수도 있습니다.
모델과 토큰 화기 파일을 장치로 푸시하십시오. 현재 torchchat 디렉토리에서 llama3.1.pte 라는 모델 파일과 $(python3 torchchat.py where llama3.1)/tokenizer.model path에서 Tokenizer 파일을 찾을 수 있습니다.
adb shell mkdir -p /data/local/tmp/llama
adb push <model.pte> /data/local/tmp/llama
adb push <tokenizer.model or tokenizer.bin> /data/local/tmp/llama
Android Studio를 사용하여 torchchat/edge/android/torchchat 에 위치한 Torchchat 앱 스켈레톤을 열십시오.
재생 버튼 (^r)을 클릭하여 에뮬레이터/장치로 시작하십시오.
앱의 UI 가이드 라인을 따라 로컬 파일 시스템에서 모델 및 토큰 화제 파일을 선택하십시오. 그런 다음 프롬프트를 발행하십시오.
참고 : 1 단계에 나열된 AAR 파일에는 Tiktoken 및 Sentense Propee Tokenizer가 있습니다. 사용자 정의 토큰 화기 및 런타임을 조정하거나 사용하려면 Executorch 코드를 수정 하고이 스크립트를 사용하여 AAR 라이브러리를 구축하십시오.
또는 Java, Android SDK Manager, Android SDK, Android Emulator (물리적 장치가없는 경우)를 설정하고 앱을 빌드하여 시작하는 torchchat/utils/scripts/android_example.sh 실행할 수 있습니다. GUI가없는 경우 사용할 수 있습니다.
export TORCHCHAT_ROOT=$(pwd)
sh torchchat/utils/scripts/android_example.sh
참고 :이 기능은 여전히 진행중인 작업이며 모든 기능이 작동하는 것은 아닙니다.
LM_EVAL 라이브러리를 사용하여 다양한 작업에서 모델 정확도를 평가합니다. 기본값은 Wikitext로, 작업을 사용하여 수동으로 제어 할 수 있으며 Args를 제한 할 수 있습니다. 평가를 참조하십시오
예
열망 모드 :
python3 torchchat.py eval llama3.1 --dtype fp32 --limit 5
낮거나 양자화 된 모델에 대한 당황을 테스트하려면 생성하는 것과 같은 방식으로 전달하십시오.
python3 torchchat.py eval llama3.1 --pte-path llama3.1.pte --limit 5
Torchchat은 Pytorch의 디자인 철학 세부 사항, 특히 "다른 모든 것에 대한 유용성"을 구현합니다.
Torchchat은 기본 Pytorch 도서관입니다. 우리는 주변 생태계 (예 : Hugging Face Models 등)와 통합을 제공하지만 모든 핵심 기능은 Pytorch로 작성됩니다.
Torchchat은 이해, 사용 및 확장하기 쉽도록 설계되었습니다.
Torchchat은 정확성에 대한 하이바르가있는 잘 테스트 된 구성 요소를 제공합니다. 우리는 제공합니다
우리는 정말로 우리의 커뮤니티와 훌륭한 사용자의 기여를 소중히 여깁니다. 우리는이 섹션을 사용하여 이러한 공헌 중 일부를 불러 낼 것입니다! 도와주고 싶다면 기고 가이드를 참조하십시오.
우리 및 다른 커뮤니티 회원들과 연결하기 위해, 우리는이 양식을 작성하여 슬랙 커뮤니티에 가입하도록 초대합니다. 일단 가입하면 다음을 수행 할 수 있습니다.
#torchchat-general Channel로 가십시오.#torchchat-contributors 채널에 가입하십시오.Torchchat Future에 대해 여러분과 논의하기를 기대합니다!
일반적으로 발생하는 설정 오류/예외 섹션. 이 섹션에서 상황이 포함되어 있지 않으면 Github 문제를 확인하십시오.
모델에 대한 액세스는 제한되어 있으며 공인 목록에 없습니다.
일부 모델에는 액세스하기 위해 추가 단계가 필요합니다. 오류에 제공된 링크를 따라 액세스를 얻으십시오.
실패한 건물 휠
./torchchat/utils/scripts/install_et.sh 는 Building wheel for executorch (pyproject.toml) did not run successfully Homebrew를 통해 다른 방법으로 설치된 이전 버전의 pytorch에 연결될 수 있습니다. brew uninstall pytorch 와 같은 다른 버전을 제거하여 링크를 깨뜨릴 수 있습니다.
인증서 _verify_failed
pip install --upgrade certifi 실행하십시오.
Torchchat을 사용하는 버그 나 어려움이 발생하면 Github 문제를 제출하십시오.
실행 한 정확한 명령과 해당 명령의 출력을 포함하십시오. 또한이 스크립트를 실행하고 system_info.txt 에 저장된 출력을 포함하여 문제를 더 잘 디버깅 할 수 있습니다.
(echo "Operating System Information"; uname -a; echo ""; cat /etc/os-release; echo ""; echo "Python Version"; python --version || python3 --version; echo ""; echo "PIP Version"; pip --version || pip3 --version; echo ""; echo "Installed Packages"; pip freeze || pip3 freeze; echo ""; echo "PyTorch Version"; python -c "import torch; print(torch.__version__)" || python3 -c "import torch; print(torch.__version__)"; echo ""; echo "Collection Complete") > system_info.txt
Torchchat 저장소 컨텐츠는 성능 또는 호환성에 대한 보장없이 제공됩니다. 특히 Torchchat은 Pytorch 용 Python으로 작성된 사용 가능한 모델 아키텍처를 동일한 방식으로 수행하지 않거나 해당 모델의 원래 버전과 동일한 표준을 충족시킬 수 있습니다. 모델 아키텍처를 포함한 TorchChat 저장소 컨텐츠를 사용할 때는 Torchchat 저장소 컨텐츠 사용 또는 재분배의 적절성을 결정하고 TorchChat 리포지토리 컨텐츠 또는 다른 기술과 결합 된 모델, 출력 또는 결과와 관련된 위험을 가정 할 책임이 있습니다. 또한, 귀하는 타사 모델, 가중치, 데이터 또는 기타 기술에 대한 서비스 약관과 같은 다른 컨텐츠의 사용을 통제하는 다른 법적 의무가있을 수 있으며, 그러한 모든 의무를 준수 할 책임이 있습니다.
지역 LLM 추론을 중심으로 구축 한 모든 멋진 라이브러리와 도구에 대해 커뮤니티에 감사드립니다.
Georgi Gerganov와 그의 GGML 프로젝트는 커뮤니티 기반 지원에 대한 주목을 받고 다른 많은 프로젝트를 고무시킵니다.
Andrej Karpathy와 그의 llama2.c 프로젝트. Llama2.c의 많은 위대한 (그리고 간단한!) 아이디어는 우리가 그의 리포에서 직접 채택했습니다 (아이디어와 코드 모두). Andrej의 작업을 따르면 결코 잘못 될 수 없습니다.
Michael Gschwind, Bert Maher, Scott Wolchok, Bin Bao, Chen Yang, Huamin Li 및 Mu-chu Li는 AOT 인덕터를 사용하여 AOT 인덕터가 효율적인 LLM을 구축 할 수 있음을 증명하는 첫 번째 버전의 Nanogpt ( DSOGPT )를 구축 한 Mu-Chu Li를 구축했으며 DSO는 모델에 대한 유효한 유통 형식입니다. 나노 프트.
Andrej의 llama2.c를 구축 한 Bert Maher와 그의 llama2. So는 aotenductor와 함께 llama 모델의 루프를 닫기 위해 dsogpt를 구축했습니다.
Christian Puhrsch, Horace He, Joe Isaacson 및 "Genai 모델을 " "무엇이든, 빠른!" pytorch.org 블로그, 특히 Horace He for Gpt, Fast!.
Torchchat은 BSD 3 라이센스에 따라 릴리스됩니다. (이 배포의 추가 코드는 MIT 및 Apache 오픈 소스 라이센스에 의해 다루어집니다.) 그러나 타사 모델에 대한 서비스 약관과 같은 콘텐츠 사용을 관리하는 다른 법적 의무가있을 수 있습니다.