· Introducing the Realtime API

 

1. Realtime API

오늘(2024년 10월 1일), OpenAI로부터 「Realtime API」가 발표되었습니다. 이를 통해 개발자는 앱에서 저지연 멀티모달 대화 환경을 구축 할 수 있습니다. ChatGPT의 'Advanced Voice Mode'와 마찬가지로 6가지 프리셋 오디오를 사용하여 자연스러운 speech-to-speech를 지원합니다.

 

또한 " Chat Completions API " 의 오디오 입출력이 발표되었습니다. 이것은 "Realtime API"의 낮은 지연 이점을 필요로 하지 않는 유스 케이스를 지원합니다. 개발자는 모든 텍스트 오디오를 "GPT-4o"에 전달하고 텍스트 오디오를 모두 선택하고 응답 할 수 있습니다.

2. Realtime API의 작동 방식

지금까지 음성 어시스턴트를 실현하기 위해서는, 음성 인식 모델로 음성을 써내, 그 텍스트를 텍스트 모델에 건네주어 추론을 실시해, 그 출력을 텍스트 독해 기능으로 재생할 필요가 있었습니다. 이 접근법에서는 감정, 강조, 악센트가 손실되어 지연이 현저해질 수 있습니다 .

 

Chat Completions API 를 사용하면 개발자는 한 번의 API 호출로 전체 프로세스를 처리할 수 있지만 사람의 대화보다 느립니다. Realtime API는 오디오 입출력을 직접 스트리밍하여 이를 개선하여 보다 자연스러운 대화 경험을 제공합니다. 또한 ChatGPT의 'Advanced Voice Mode'와 마찬가지로 중단을 자동으로 처리 할 수 있습니다.

 

내부적으로는, 「Realtime API」에서는 「GPT-4o」라고 메세지를 교환하기 위한 영속적인 「WebSocket」를 작성합니다. 이 API는 Function Calling 도 지원합니다. 이렇게 하면 음성 도우미가 작업을 트리거하거나 새 컨텍스트를 검색하여 사용자의 요청에 응답할 수 있습니다.

3. Realtime API 사용 요금

" Realtime API "는 " gpt-4o-realtime-preview ", " Chat Completions API "는 " gpt-4o-audio-preview "로 향후 몇 주 내에 출시됩니다.

Realtime API는 텍스트 토큰과 오디오 토큰을 모두 사용합니다. 텍스트 입력 가격은 100만 토큰당 5달러, 출력 가격은 100만 토큰당 20달러입니다. 오디오 입력 가격은 100만 토큰당 100달러이고 출력 가격은 100만 토큰당 200달러입니다. 이는 오디오 입력 분당 약 0.06달러, 오디오 출력 분당 약 0.24달러에 해당합니다 . 'Chat Completions API'의 오디오도 같은 가격이 됩니다.

4. 안전과 프라이버시

Realtime API는 자동 모니터링 및 신고된 모델의 입/출력에 대한 인간 검토 등 여러 안전 보호 계층을 사용하여 API 무단 사용의 위험을 줄입니다. ChatGPT의 고급 음성 모드를 실행하는 GPT-4o와 동일한 버전으로 구축되었으며 GPT-4o 시스템 카드 에 자세히 설명 된 " Preparedness Framework "에 따른 평가를 포함한 자동 평가 및 인간 평가 둘 다를 사용하여 신중하게 평가했습니다. 고급 음성 모드를 위해 구축된 것과 동일한 오디오 안전 인프라도 활용되고 있으며, 이 테스트는 이것이 위험의 가능성을 줄이는 데 도움이 된다는 것을 보여줍니다.

OpenAI 서비스의 출력을 스팸, 오해를 초래하거나 타인에게 해를 끼칠 목적으로 재사용 또는 배포하는 것은 이용 정책을 위반합니다. 당사는 잠재적인 무단 사용을 적극적으로 모니터링합니다. 컨텍스트에서 명백한 경우를 제외하고 개발자가 AI와 상호 작용하고 있음을 사용자에게 명확하게 전달해야합니다.

출시 전에 외부 레드 팀 네트워크에서 'Realtime API'를 테스트한 결과, 'Realtime API'는 기존 완화 방법으로 다루지 않은 고위험 갭이 발생하지 않음을 확인했습니다. 모든 API 서비스와 마찬가지로 "Realtime API"는 OpenAI의 엔터프라이즈 개인 정보 보호 약속의 대상이됩니다. OpenAI는 명시적인 권한 없이 이 서비스에서 사용되는 입력 또는 출력으로 모델을 학습하지 않습니다.

5. Realtime API 시작

향후 며칠 이내에 개발자는 Playground 또는 문서, 참조 클라이언트에서 Realtime API  시작할 수 있습니다 .

또한 LiveKit 및 Agora 와 협력하여 에코 제거기, 재연결 및 방음과 같은 오디오 구성 요소의 클라이언트 라이브러리를 만들고 Twilio 와 협력하여 Realtime API를 Twilio Voice API 와 통합하여 개발자가 음성 통화를 통해 AI 가상 에이전트를 원활하게 구축, 배포, 고객과 연결할 수 있도록 했습니다.

6. 향후 전개

향후 도입을 예정하고 있는 기능은 다음과 같습니다.

 

・더 많은 모달리티
「Realtime API」는, 처음에 음성을 서포트해, 시간 경과와 함께 Vision 나 Video 등의 모달리티를 추가 서포트할 예정입니다.

·속도 제한 인상 현재 API 속도 제한은  Tier 5 개발자의 경우 약 100 동시 세션으로 제한되어 있으며  Tier 1 ~ 4의 경우 제한이 낮습니다. 앞으로 이러한 한계를 서서히 끌어올 것입니다.

・공식 SDK 지원
「Realtime API」의 서포트를 「OpenAI Python」 및 「Node.js SDK」에 통합합니다.

· 프롬프트 캐시
Prompt Caching "에 대한 지원을 추가합니다. 이전 대화 턴을 할인 가격으로 재처리할 수 있습니다.

・모델 지원
「Realtime API」는 「GPT-4o mini」도 향후 서포트합니다.

 

https://note.com/npaka/n/n7317484e15e1



 

-----

OpenAI 실시간 API의 핵심 기능과 장점은 무엇이며, 어떤 방식으로 활용될 수 있을까?

 

OpenAI 실시간 API의 핵심 기능, 장점 및 활용 방식

OpenAI 실시간 API는 애플리케이션에 저지연 멀티모달 대화 경험을 구축할 수 있도록 고안된 API입니다.[1,2] 기존 음성 비서 구축 방식은 음성 인식, 텍스트 기반 모델 추론, 텍스트 음성 변환과 같은 여러 단계를 거치면서 감정 전달이 부족하고 지연 시간이 길어지는 단점이 있었습니다.[2] 하지만 실시간 API는 오디오 입출력을 직접 스트리밍하여 보다 자연스러운 대화 경험을 제공하며 ChatGPT의 고급 음성 모드와 마찬가지로 대화 중단을 자동으로 처리합니다.[3]
 

주요 기능:

  • WebSocket을 통한 실시간 스트리밍: 실시간 API는 WebSocket을 통해 서버와 지속적인 연결을 유지하여 오디오 및 텍스트 데이터를 실시간으로 주고받습니다.[1,3] 이는 짧은 지연 시간과 자연스러운 대화 흐름을 가능하게 합니다.
  • 음성 합성 및 인식: 실시간 API는 텍스트를 자연스러운 음성으로 변환하는 TTS(Text-to-Speech)와 음성을 텍스트로 변환하는 STT(Speech-to-Text) 기능을 모두 지원합니다.[1,2] 풍부한 뉘앙스를 가진 고품질의 음성 합성을 제공하며, 자연스러운 억양과 감정 표현이 가능합니다.
  • 멀티모달 출력: 텍스트와 음성을 동시에 출력할 수 있습니다.1 텍스트는 콘텐츠 조정에 활용되고, 오디오는 안정적인 재생을 보장합니다.
  • 상태 유지: 실시간 API는 WebSocket 연결 중에 세션 정보, 대화 기록, 입력 오디오 버퍼, 응답, 함수 호출 등의 상태 정보를 유지합니다.[4] 이를 통해 대화의 맥락을 유지하고 일관성 있는 응답을 제공할 수 있습니다.
  • 함수 호출: 실시간 API는 함수 호출 기능을 지원하여 외부 시스템과의 연동을 가능하게 합니다.[1,5,6,7] 날씨 정보를 가져오거나 일정을 예약하는 등의 작업을 수행할 수 있습니다.
  • 다양한 이벤트 처리: 실시간 API는 다양한 이벤트를 통해 서버와 클라이언트 간의 통신을 지원합니다.[7,8] 세션 생성, 업데이트, 오디오 입력, 응답 생성, 오류 처리 등의 이벤트를 처리할 수 있습니다.

장점:

  • 자연스러운 대화: 실시간 스트리밍을 통해 기존 방식보다 훨씬 자연스러운 대화 흐름을 제공합니다.
  • 낮은 지연 시간: 실시간 오디오 처리를 통해 딜레이를 최소화하여 실시간에 가까운 대화 경험을 제공합니다.
  • 멀티모달 경험: 텍스트와 음성을 동시에 사용하여 더욱 풍부하고 몰입감 있는 사용자 경험을 제공할 수 있습니다.
  • 유연한 통합: WebSocket과 다양한 이벤트를 지원하여 다양한 애플리케이션에 유연한 통합.
  • 향상된 정확성: 오디오 입력을 직접 처리하여 기존 방식의 음성-텍스트 변환 오류를 줄일 수 있습니다.
 

활용 방식:

  • 실시간 음성 비서: 실시간 API를 활용하여 ChatGPT의 고급 음성 모드와 유사한 수준의 자연스러운 대화가 가능한 음성 비서를 개발할 수 있습니다.[2,3] AI 기반 챗봇: 텍스트 기반 챗봇에 실시간 음성 인터페이스를 추가하여 사용자 편의성을 높일 수 있습니다.
  • 게임 및 VR/AR 콘텐츠: 실시간 음성 상호 작용을 통해 게임 캐릭터와 소통하거나 VR/AR 환경에서 몰입감 있는 경험을 제공할 수 있습니다.
  • 온라인 교육 플랫폼: 실시간 음성 질의응답, 피드백 제공 등을 통해 학습 효과를 높일 수 있습니다.

 

기타 고려 사항:

  • 오디오 형식: 현재 실시간 API는 24kHz, 1채널, 리틀 엔디안 방식의 Raw 16비트 PCM 오디오와 8kHz G.711 (u-law 및 a-law) 형식을 지원합니다.[9]
  • 안전 및 보안: OpenAI는 API 오용 방지를 위해 자동 모니터링, 플래그 모델, 사람의 검토 등 여러 보안 레이어를 사용합니다.[10]
  • 요금: 실시간 API는 텍스트 토큰과 오디오 토큰을 모두 사용하며, 오디오 입력은 1분당 약 0.06달러, 오디오 출력은 1분당 약 0.24달러입니다.[3]

OpenAI 실시간 API는 아직 개발 초기 단계이지만, 자연스러운 음성 인터페이스를 갖춘 다양한 애플리케이션 개발을 가능하게 하는 강력한 도구입니다. 앞으로 더 많은 기능과 향상된 성능이 제공될 예정입니다.

 
 

 

 

 

 

Code for Distributor Model: LT8K-150

 

Code for Distributor Model: HDC-8K050

 

DOWNLOAD THE CONVERTED WEIGHTS

Some generous anon converted all the weights. Grab them here: https://rentry.org/LLaMA-8GB-Edition and https://rentry.org/llama-tard-v2

Huggingface implementation is available now!

gh pr checkout 21955 inside the transformers directory. You'll need to clone it first: git clone https://github.com/huggingface/transformers

llamanon here.
This guide is supposed to be understandable to the average /aicg/ user (possibly retarded). This is for Linux obviously - I don't know how to run bitsandbytes on Windows, and I don't have a Windows machine to test it on.

If you're on Windows, I recommend using Oobabooga. It now supports LLaMA with 8bit.

Why don't I recommend using oobabooga? It's terrible at memory management and according to my tests, you'll use less VRAM with meta's own inference code as opposed to ooba's.

여기 라마논.
이 가이드는 평균 /aicg/ 사용자(지체 가능성이 있음)가 이해할 수 있도록 되어 있습니다.이것은 Linux용입니다.Windows에서 비트나 바이트를 실행하는 방법을 모르기 때문에 테스트할 수 있는 Windows 머신이 없습니다.

Windows  사용하고 있는 경우는, Oobobooga 를 사용하는 것을 추천합니다.8비트로 LLaMA를 지원하게 되었습니다.

OOBabooga를 추천하는 것은 어떨까요?메모리 관리 능력이 형편없고, 제 테스트에 따르면, oba가 아닌 메타의 자체 추론 코드로 VRAM을 덜 사용하게 될 것입니다.





Download LLaMA weights

magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce
Get the .torrent

Please download and seed all the model weights if you can. If you want to run a single model, don't forget to download the tokenizer.model file too.

Set up Conda and create an environment for LLaMA

I hate conda too, but it's the official method recommended by meta for some reason, and I don't want to deviate.
저도 콘다는 싫지만 메타가 추천하는 공식 방법이라서 벗어나고 싶지 않아요.

Set up Conda

  1. Open a terminal and run: 
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh


2. Run

chmod +x Miniconda3-latest-Linux-x86_64.sh


3. Run 

./Miniconda3-latest-Linux-x86_64.sh

 

4. Go with the default options. When it shows you the license, hit q to continue the installation.
기본 옵션을 사용합니다.라이선스가 표시되면q설치를 계속합니다.

 

5. Refresh your shell by logging out and logging in back again.
로그아웃한 후 다시 로그인하여 셸을 새로 고칩니다
I think closing the terminal works too, but I don't remember. Try both.
터미널을 닫으면 되는 것 같은데 기억이 안 나네요.둘 다 먹어봐.

 

Create env and install dependencies (환경 및 설치 의존 관계 생성)

  1. Create an env: 환경을 만듭니다.
    conda create -n llama
  2. Activate the env: env를 활성화합니다.
    conda activate llama
  3. Install the dependencies:의존 관계를 인스톨 합니다.
    NVIDIA:
    conda install torchvision torchaudio pytorch-cuda=11.7 git -c pytorch -c nvidia
    AMD:
    pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.2
  4. Clone the INT8 repo by tloen: INT8 repo를 tloen으로 복제합니다.
    git clone https://github.com/tloen/llama-int8 && cd llama-int8
  5. Install the requirements: 요건을 인스톨 합니다.
    pip install -r requirements.txt pip install -e .

Create a swapfile 스왑 파일 생성

Loading the weights for 13B and higher models needs considerable amount of DRAM. IIRC it takes about 50GB for 13B, and over a 100GB for 30B. You'll need a swapfile to take care of excess memory usage. This is only used for the loading process; inference is unaffected (as long as you meet the VRAM requirements). 
13B 이상 모델의 무게를 로드하려면 상당한 양의 DRAM이 필요합니다.IIRC는 13B의 경우 약 50GB, 30B의 경우 100GB 이상이 소요됩니다.과도한 메모리 사용량을 처리하려면 스왑 파일이 필요합니다.이것은 로드 프로세스에만 사용됩니다.추론은 영향을 받지 않습니다(VRAM 요건을 충족하는 한).

  1. Create a swapfile: 스왑 파일 생성:
    sudo dd if=/dev/zero of=/swapfile bs=4M count=13000 status=progressThis will create about ~50GB swapfile. Edit the count to your preference. 13000 means 4MBx13000.
    그러면 약 50GB의 스왑 파일이 생성됩니다.를 편집하다count당신의 취향에 따라.13000은 4MBx13000을 의미합니다.
  2. Mark it as swap: 스왑으로 표시
    sudo mkswap /swapfile
  3. Activate it: 활성화
    sudo swapon /swapfile

If you want to delete it, simply run sudo swapoff /swapfile and then rm /swapfile.
삭제할 경우 실행하기만 하면 됩니다.sudo swapoff /swapfile그리고 나서.rm /swapfile.

Run the models 모델 실행

I'll assume your LLaMA models are in 당신의 LLama 모델은 현재
~/Downloads/LLaMA.

  1. Open a terminal in your llama-int8 folder (the one you cloned).  터미널에서 폴더(복제된 폴더)룰 엽니다.
  2. Run: 
    python example.py --ckpt_dir ~/Downloads/LLaMA/7B --tokenizer_path ~/Downloads/LLaMA/tokenizer.model --max_batch_size=1
  3. You're done. Wait for the model to finish loading and it'll generate a prompt.
    모든 작업이 완료됩니다.모델의 로드가 완료될 때까지 기다리면 프롬프트가 생성됩니다.

Add custom prompts  커스텀 프롬프트 추가

By default, the llama-int8 repo has a short prompt baked in to example.py.
디폴트로는 lama-int8 repo에는 다음과 같은 짧은 프롬프트가 포함되어 있습니다.

  1. Open the "example.py" file in the "llama-int8" directory.
  2. Navigate to line 136. It starts with triple quotations, """.
    136행으로 이동합니다.처음에는 세 개의 인용구로 시작하지만
  3. Replace the current prompt with whatever you have in mind.
    현재 프롬프트를 원하는 프롬프트로 바꿉니다.

I'm getting shitty results!  결과가 안 좋아!

The inference code sucks for LLaMA. It only supports Temperature and Top_K. We'll have to wait until HF implements support for it (already in the works) so that it can properly show its true potential.
추론 코드가 LLama에겐 최악이야Temperature와 Top_K만 지원합니다.HF가 그 진정한 잠재력을 제대로 발휘할 수 있도록 지원(이미 진행 중)을 실시할 때까지 기다려야 합니다.

https://rentry.org/llama-tard

 

LLaMA INT8 Inference guide

DOWNLOAD THE CONVERTED WEIGHTS Some generous anon converted all the weights. Grab them here: https://rentry.org/LLaMA-8GB-Edition and https://rentry.org/llama-tard-v2 Huggingface implementation is available now! You can now convert the weights to a HF form

rentry.co

 

 

 

3. CUDA 메모리 부족 오류

그example.py파일은 다음 설정에 따라 캐시를 사전 준비합니다.

model_args: ModelArgs = ModelArgs(max_seq_len=max_seq_len, max_batch_size=max_batch_size, **params)

모델 무게(7B 모델)에 대해 14GB의 메모리를 차지하므로 2 * 2 * n_layer * max_batch_size * max_seq_len * n_heads * head_dim 바이트를 저장하는 디코딩 캐시에 16GB를 사용할 수 있습니다.

기본 파라미터의 경우 이 캐시는 7B 모델의 경우 약 17GB(2 * 2 * 32 * 32 * 1024 * 32 * 128)였습니다.

명령줄 옵션이 추가되어 있습니다.example.py디폴트를 변경했습니다.max_seq_len30GB GPU에서 디코딩이 가능한 최대 512입니다.

사용의 하드웨어에 따라서, 이러한 설정을 내려 주세요.

https://github.com/tloen/llama-int8/blob/main/FAQ.md#3

+ Recent posts