본문 바로가기

공부노트

12/11, 열세 번째 날의 TIL(터미널, 파이토치 설치, gpt 독스)

오늘은 딥러닝 실습을 위해서 실습용으로 대여한 맥북에 파이토치를 설치해보고, 스터디에서 gpt 독스를 읽어보았는데 어제와 이어진 내용이 있어서 더 이해하기가 쉬웠던 것 같다. 딥러닝 내용은 정리해서 내일 TIL에 적어야겠다.


1. Pytorch 설치

파이토치 설치를 하는게 너무 힘들었다. 여기저기서 계속 에러가 나고, 원래 쓰던 파이썬 버전이 3.13이라 가상환경 만드는데 충돌이 나고, 계속 안됐지만 결국에는 해결을 해서 매우 뿌듯했다.

먼저, 주의해야 할 점은 Pytorch가 지원하는 버전이 따로 있다는 것인데,

 

  • PyTorch 2.x (최신 버전):
    • Python 3.8, 3.9, 3.10, 3.11 버전에서 지원됩니다.
  • PyTorch 1.x (구버전):
    • Python 3.6, 3.7, 3.8, 3.9 버전에서 주로 지원됩니다.

이와 같이 내가 현재 쓰는 버전은 지원을 하지 않아서 설치가 되지 않았다. 사실 지금까지 가상환경 설치하는게 많이 귀찮아서 가상환경 설정을 하지 않고 사용해왔는데, 이 참에 가상환경까지 연습해 볼 수 있어서 좋았다. (Pytorch 에러 계속 나는건 안좋았다..)

먼저 파이썬 버전 관리를 위해 pyenv를 설치해주었는데 설치를 위해서 우선 맥에서는 Homebrew를 설치해야 한다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

이 코드를 입력해서 Homebrew를 설치한 다음, pyenv를 설치하면 되는데

brew install pyenv

이 코드를 입력하면 바로 설치가 된다. 설치하는 방법은 Chat GPT의 답변을 참고했는데 도움이 많이 됐다. 고마워 지피티야👍

그 다음 pyenv로 원하는 버전을 설치하면 되는데 이 경우도 마찬가지로

pyenv install 3.11.6

이렇게 간단하게 하면 설치가 된다. 그 다음에 파이썬 버전을 설정해주면 되는데,

pyenv global 3.11.6

를 입력하게 되면 전체가 다 3.11.6으로 설정되지만 가상환경 내에서만 설정을 했을 때 계속 바뀌지 않고 3.13으로 고정이 되어 있어서, 전역 설정을 3.11.6으로 했다. 하지만 이 경우에도 에러가 났기 때문에, 가상환경을 지우고 다시 생성했는데

python3.11 -m venv min

아예 3.11버전으로 가상환경을 다시 생성했고,

source min/bin/activate

로 가상환경을 실행한 다음 파이썬 버전을 확인했더니 

가상환경도 잘 작동하고, 파이썬도 3.11.6이라서 아주 뿌듯했다. 그리고 셀 내에서

pip install torch torchvision torchaudio

를 입력하고 실행했더니 잘 설치가 됐고, 불러올 때도 에러가 발생하지 않았다. 아주 행복했다. 왜 가상환경을 사용하는지 뼈저리게 느꼈고, 앞으로도 가상환경을 잘 사용할 수 있을 것 같다. 다음에도 설치에 문제가 있으면 gpt, 유튜브를 찾아가며 시도해봐야겠다.


2. Open API docs 스터디

https://platform.openai.com/docs/overview?lang=python

위 사이트의 독스에서 매일 2~3개의 아티클을 읽고 있는데, 읽으면 읽을수록 유요한 정보도 많고 사용 방법이 무궁무진한 것 같다.

오늘은 TTS, STT, Embedding에 대한 내용을 같이 읽어보았다.

TTS는 Text To Speech의 줄임말로, 텍스트를 입력했을 때 음성파일을 생성해서 그 텍스트를 읽어 주는 것이다. 

from pathlib import Path
from openai import OpenAI
client = OpenAI()

speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Today is a wonderful day to build something people love!"
)

response.stream_to_file(speech_file_path)

위와 같이 OpenAI를 호출해서 tts-1모델을 사용하고, alloy라는 목소리로 input 값의 텍스트를 읽을 수 있다. 목소리도 한가지가 아니라 alloy, echo, fable, onyx, nova 등 다양한 스타일이 있어서 필요한 스타일을 선택할 수 있는것이 좋았다. 요즘 DISCORD에서도 보면 마이크를 사용하지 못하는 경우에 채팅을 치면 TTS가 대신 소리로 말해주는 기능이 있는데, 매우 편리한 것 같다.

그 다음은 실시간 오디오 스트리밍인데 청크 전송 인코딩을 사용하기 때문에 전체 파일이 생성되기 전에 오디오 재생이 가능하다고 한다.

 

STT는 Speech To Text의 줄임말로, 아까의 반대로 말한 내용을 텍스트로 바꾸는 것이다. 여기에는 두 가지 모드가 있는데, 첫 번째로 Transcription(받아쓰기, 필사)이고 두 번째는 Translation(번역)이다.

Transcription의 경우 음성 내용을 그대로 텍스트로 바꾸는 것이며, Translation의 경우 음성 내용을 영어 텍스트로 바꾸는 것이다. 아직 번역은 영어로만 가능하다고 한다.

 

Chat GPT의 STT 기능은 사용해본 적이 없지만 파파고나 아이폰 음성 인식은 많이 사용해보았는데, 가끔 못알아들을 때가 있어서 아쉬웠지만 파이썬 코드 내에서 답변을 받을 경우, 답변을 바로 gpt에게 보내서 철자나 이상한 부분을 고치면 더 결과가 좋아질 것 같다.

음성 파일은 25MB까지만 가능하기 때문에 분할해서 보내면 하나의 내용을 다 이해하지 못할까 걱정했는데, 분할한 파일의 내용을 다음 파일의 내용에 적용시킬 수 있다고 한다.

 

마지막으로 Embedding이었는데, 임베딩은  데이터를 고차원 공간에서 저차원 벡터로 표현하는 것을 말하며, 주로 텍스트, 이미지, 또는 다른 복잡한 데이터를 숫자로 변환해 머신러닝 모델이 처리할 수 있게 만드는 것이다. 검색, 클러스터링, 추천, 이상치 감지, 분류 등에 사용되는데 임베딩은 데이터를 저차원 벡터로 만들기 때문에 유사성을 확인하기가 좋기 때문이다. 벡터 사이의 거리가 짧거나 방향이 비슷할수록 유사한 데이터이기 때문에 거리 함수 중에서는 코사인 유사도를 추천한다고 한다.


여러 기능들을 봤지만 앞으로 남은 내용들이 많은 것으로 보아 정말 많은 기능이 존재하는 것 같다. 앞으로 남은 내용도 잘 알아놓고 나중에 프로젝트 할 때 유용하게 쓰면 좋을 것 같다. 그냥 여기에 써야지가 아니라, 어떻게 하면 모델을 더 효과적으로, 비용도 줄이면서 지연 속도가 너무 늦지 않도록 할 수 있을지 생각해봐야겠다.

내일도 화이팅