TurboPilot은 llama.cpp 뒤의 라이브러리를 사용하여 4GiB RAM에서 60억 매개변수 Salesforce Codegen 모델을 실행하는 자체 호스팅 부조종사 복제본입니다. 그것은 fauxpilot 프로젝트에 기반을 두고 영감을 받았습니다.
주의: 이것은 현재 안정적인 도구라기보다는 개념 증명입니다. 이 버전의 프로젝트에서는 자동 완성이 상당히 느립니다. 마음껏 가지고 놀 수 있지만 마일리지는 다를 수 있습니다.
이제 StableCode 3B 지원 Instruct는 간단히 TheBloke의 Quantized GGML 모델을 사용하고 -m stablecode
설정합니다.
새로운 기능: 리팩터링 + 단순화 : 소스 코드가 개선되어 Turbopilot에 새 모델을 더 쉽게 확장하고 추가할 수 있습니다. 이제 시스템은 다양한 유형의 모델을 지원합니다.
새로운 기능: Wizardcoder, Starcoder, Santacoder 지원 - Turbopilot은 이제 더 많은 프로그래밍 언어와 "중간 채우기" 지원을 제공하는 최첨단 로컬 코드 완성 모델을 지원합니다.
이 프로젝트와 해당 GGML 포크에 대한 PR을 환영합니다.
포크를 만들고 변경한 다음 PR을 엽니다.
프로젝트를 시험해 보는 가장 쉬운 방법은 사전 처리된 모델을 가져온 다음 docker에서 서버를 실행하는 것입니다.
모델을 얻는 데는 2가지 옵션이 있습니다.
Huggingface에서 사전 변환, 사전 양자화된 모델을 다운로드할 수 있습니다.
RAM이 낮은 사용자(4-8GiB)에게는 StableCode를 권장하고, 고성능 사용자(16GiB RAM, 개별 GPU 또는 Apple 실리콘)에게는 WizardCoder를 권장합니다.
Turbopilot은 v0.0.5
및 이전 빌드의 1세대 codegen 모델을 계속 지원합니다. 하지만 오래된 모델은 재양자화될 필요가 있습니다.
MODELS.md에서 전체 모델 카탈로그를 찾을 수 있습니다.
모델을 직접 양자화하여 실험하고 싶다면 이 가이드를 따르세요.
최신 바이너리를 다운로드하고 루트 프로젝트 폴더에 추출합니다. OS에 바이너리가 제공되지 않거나 직접 빌드하려는 경우 빌드 지침을 따르세요.
달리다:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
애플리케이션은 포트 18080
에서 서버를 시작해야 합니다. -p
옵션으로 이를 변경할 수 있지만 이는 vscode-fauxpilot이 연결을 시도하는 기본 포트이므로 무엇을 알고 있는지 확신하지 않는 한 이 포트를 그대로 두는 것이 좋습니다. 지금 하고 있어.
멀티 코어 시스템이 있는 경우 -t
옵션을 사용하여 사용되는 CPU 수를 제어할 수 있습니다. 예를 들어 제가 사용하는 6개 코어/12개 스레드가 있는 AMD Ryzen 5000에서는 다음과 같습니다.
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
레거시 codegen 모델을 실행합니다. 대신 모델 유형 플래그 -m
codegen
으로 변경하세요.
참고: Turbopilot 0.1.0 이상에서는 v0.0.5 이하의 codegen 모델 이전 모델을 다시 양자화합니다. 업데이트된 양자화된 코드 생성 모델을 제공하기 위해 노력하고 있습니다.
여기에 제공된 사전 빌드된 Docker 이미지에서 Turbopilot을 실행할 수도 있습니다.
모델을 별도로 다운로드해야 하며 다음을 실행할 수 있습니다.
docker run --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:latest
릴리스 v0.0.5부터 터보코드는 이제 CUDA 추론을 지원합니다. cuda 지원 컨테이너를 실행하려면 nvidia-docker를 활성화해야 하며, cuda 태그가 지정된 버전을 사용하고 다음과 같이 GPU에 액세스할 수 있는 --gpus=all
을 docker에 전달해야 합니다.
docker run --gpus=all --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-e GPU_LAYERS=32
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda11-7
GPU가 충분히 큰 경우 GPU_LAYERS
설정하면 터보 파일럿이 데이터를 앞뒤로 복사하는 대신 GPU로 계산을 완전히 오프로드하여 추론 속도를 크게 높일 수 있습니다.
사용 중인 경우 ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0 또는 ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0
에 대해 ghcr.io/ravenscroftj/turbopilot:v0.1.0-cuda11
바꿉니다 ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-2
각각 CUDA 12.0 또는 12.2.
나중에 이 컨테이너를 실행하려면 CUDA 11 또는 CUDA 12가 필요합니다. nvidia-smi
실행하면 /app/turbopilot
목록이 표시됩니다.
v0.0.5부터 Linux 실행 파일의 CUDA 버전을 사용할 수 있습니다. 이를 위해서는 libcublas 11이 시스템에 설치되어 있어야 합니다. 어느 시점에서는 우분투 deb를 빌드할 수도 있지만 지금은 docker에서 실행하는 것이 더 편리할 수 있습니다. 쿠다 GPU.
--ngl
옵션을 통해 GPU 오프로딩을 사용할 수 있습니다.
공식 VS Code 부조종사 플러그인에 대한 지원이 진행 중입니다(티켓 #11 참조). 이제 API는 OpenAI와 광범위하게 호환됩니다.
VSCode의 API를 사용하려면 vscode-fauxpilot 플러그인을 권장합니다. 설치한 후에는 settings.json 파일에서 몇 가지 설정을 변경해야 합니다.
Preferences: Open User Settings (JSON)
선택합니다.{
... // other settings
"fauxpilot.enabled" : true ,
"fauxpilot.server" : " http://localhost:18080/v1/engines " ,
}
이제 CTRL + SHIFT + P
사용하여 fauxpilot을 활성화하고 Enable Fauxpilot
선택할 수 있습니다.
키 입력을 하면 플러그인이 실행 중인 codegen-serve
프로세스에 API 호출을 보냅니다. 그런 다음 추가 요청을 보내기 전에 각 요청이 완료될 때까지 기다립니다.
동일한 Copilot 엔드포인트처럼 작동하는 http://localhost:18080/v1/engines/codegen/completions
에 요청할 수 있습니다.
예를 들어:
curl --request POST
--url http://localhost:18080/v1/engines/codegen/completions
--header ' Content-Type: application/json '
--data ' {
"model": "codegen",
"prompt": "def main():",
"max_tokens": 100
} '
다음과 같은 결과를 얻을 수 있습니다.
{
"choices" : [
{
"logprobs" : null ,
"index" : 0 ,
"finish_reason" : " length " ,
"text" : " n """ Main entry point for this script. """n logging.getLogger().setLevel(logging.INFO) n logging.basicConfig(format=('%(levelname)s: %(message)s')) nn parser = argparse.ArgumentParser( n description=__doc__, n formatter_class=argparse.RawDescriptionHelpFormatter, n epilog=__doc__) n "
}
],
"created" : 1681113078 ,
"usage" : {
"total_tokens" : 105 ,
"prompt_tokens" : 3 ,
"completion_tokens" : 102
},
"object" : " text_completion " ,
"model" : " codegen " ,
"id" : " 01d7a11b-f87c-4261-8c03-8c78cbe4b067 "
}