Basaran은 OpenAI 텍스트 완성 API에 대한 오픈 소스 대안입니다. Hugging Face Transformers 기반 텍스트 생성 모델에 호환되는 스트리밍 API를 제공합니다.
오픈 소스 커뮤니티는 결국 LLM(대형 언어 모델)을 위한 Stable Diffusion 순간을 목격하게 될 것이며 Basaran을 사용하면 OpenAI의 서비스를 최신 오픈 소스 모델로 대체하여 코드 한 줄도 수정하지 않고도 애플리케이션을 강화할 수 있습니다.
Basaran의 주요 기능은 다음과 같습니다.
user/repo
선택한 모델로 바꾸고 XYZ
최신 버전으로 바꾼 후 다음을 실행하세요.
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
이제 가셔도 좋습니다!
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Docker 이미지는 Docker Hub 및 GitHub 패키지에서 사용할 수 있습니다.
GPU 가속을 위해서는 NVIDIA 드라이버와 NVIDIA Container Runtime도 설치해야 합니다. Basaran의 이미지에는 이미 CUDA, cuDNN 등 관련 라이브러리가 함께 제공되므로 수동으로 설치할 필요가 없습니다.
Basaran의 이미지는 세 가지 방법으로 사용될 수 있습니다.
MODEL="user/repo"
환경 변수를 지정하면 최초 시작 시 Hugging Face Hub에서 해당 모델을 다운로드할 수 있습니다.MODEL
환경 변수가 해당 경로를 가리킵니다.위 사용 사례의 경우 배포 디렉터리에서 샘플 Dockerfile 및 docker-compose 파일을 찾을 수 있습니다.
Basaran은 Python 3.8+ 및 PyTorch 1.13+에서 테스트되었습니다. 사용하려는 Python 버전으로 가상 환경을 생성하고, 계속 진행하기 전에 활성화해야 합니다.
pip
로 설치: pip install basaran
pip install accelerate bitsandbytes
user/repo
선택한 모델로 바꾸고 Basaran을 실행합니다. MODEL=user/repo PORT=80 python -m basaran
환경 변수의 전체 목록은 __init__.py
참조하세요.
최신 기능에 액세스하거나 직접 해킹하려면 git
사용하여 소스에서 실행하도록 선택할 수 있습니다.
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
선택한 모델로 바꾸고 Basaran을 실행합니다. MODEL=user/repo PORT=80 python -m basaran
Basaran의 HTTP 요청 및 응답 형식은 OpenAI API와 일치합니다.
텍스트 완성을 예로 들면 다음과 같습니다.
curl http://127.0.0.1/v1/completions
-H ' Content-Type: application/json '
-d ' { "prompt": "once upon a time,", "echo": true } '
{
"id" : " cmpl-e08c701b4ba032c09ef080e1 " ,
"object" : " text_completion " ,
"created" : 1678003509 ,
"model" : " bigscience/bloomz-560m " ,
"choices" : [
{
"text" : " once upon a time, the human being faces a complicated situation and he needs to find a new life. " ,
"index" : 0 ,
"logprobs" : null ,
"finish_reason" : " length "
}
],
"usage" : {
"prompt_tokens" : 5 ,
"completion_tokens" : 21 ,
"total_tokens" : 26
}
}
애플리케이션이 OpenAI에서 제공하는 클라이언트 라이브러리를 사용하는 경우 Basaran의 엔드포인트와 일치하도록 OPENAI_API_BASE
환경 변수만 수정하면 됩니다.
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
예제 디렉터리에는 OpenAI Python 라이브러리를 사용하는 예제가 포함되어 있습니다.
Basaran은 PyPI의 라이브러리로도 사용할 수 있습니다. 별도의 API 서버를 시작할 필요 없이 Python에서 직접 사용할 수 있습니다.
pip
로 설치: pip install basaran
load_model
함수를 사용하십시오. from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
예제 디렉토리에는 Basaran을 라이브러리로 사용하는 예제가 포함되어 있습니다.
Basaran의 API 형식은 주로 매개변수 지원 및 응답 필드 측면에서 호환성의 차이를 제외하고 OpenAI와 일치합니다. 다음 섹션에서는 각 엔드포인트의 호환성에 대한 자세한 정보를 제공합니다.
각 Basaran 프로세스는 하나의 모델만 제공하므로 결과에는 해당 모델만 포함됩니다.
Basaran은 model
매개변수를 지원하지 않지만 OpenAI 클라이언트 라이브러리에는 모델 매개변수가 있어야 합니다. 따라서 임의의 모델 이름을 입력할 수 있습니다.
매개변수 | 바사란 | 오픈AI | 기본값 | 최대값 |
---|---|---|---|---|
model | ○ | ● | - | - |
prompt | ● | ● | "" | COMPLETION_MAX_PROMPT |
suffix | ○ | ● | - | - |
min_tokens | ● | ○ | 0 | COMPLETION_MAX_TOKENS |
max_tokens | ● | ● | 16 | COMPLETION_MAX_TOKENS |
temperature | ● | ● | 1.0 | - |
top_p | ● | ● | 1.0 | - |
n | ● | ● | 1 | COMPLETION_MAX_N |
stream | ● | ● | false | - |
logprobs | ● | ● | 0 | COMPLETION_MAX_LOGPROBS |
echo | ● | ● | false | - |
stop | ○ | ● | - | - |
presence_penalty | ○ | ● | - | - |
frequency_penalty | ○ | ● | - | - |
best_of | ○ | ● | - | - |
logit_bias | ○ | ● | - | - |
user | ○ | ● | - | - |
각 모델마다 채팅 기록 형식이 다르기 때문에 현재 통합 채팅 API를 제공하는 것은 어렵습니다.
따라서 특정 모델의 요구 사항에 따라 채팅 기록을 미리 형식화하고 이를 완료 API에 대한 프롬프트로 사용하는 것이 좋습니다.
**Summarize a long document into a single sentence and ...**
<human>: Last year, the travel industry saw a big ...
<bot>: If you're traveling this spring break, ...
<human>: But ...
<bot>:
[Round 0]
问:你好
答:你好!有什么我可以帮助你的吗?
[Round 1]
问:你是谁?
答:
제안된 기능의 전체 목록을 보려면 공개 문제를 참조하세요.
이 프로젝트는 오픈 소스입니다. 아이디어나 질문이 있으시면 언제든지 이슈를 만들어 문의해 주세요!
기여해 주셔서 감사합니다. 자세한 내용은 CONTRIBUTING.md를 참조하세요.
Basaran은 MIT 라이센스에 따라 사용할 수 있습니다.
© 2023 하이퍼니임