GPU 체크 방법
# gpu 체크해줍니다.
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print('Device:', device) #Device: cuda
print('Current cuda device:', torch.cuda.current_device()) #Current cuda device: 0
print('Count of using GPUs:', torch.cuda.device_count())
print('GPU name:', torch.cuda.get_device_name(0))
#!nvidia-smi
OpenAPI embedding 사용 관해
1. openapi에 text를 넣어 임베딩을 받고 싶으면, client.embeddings.create를 사용해야한다.
openai.lib._old_api.APIRemovedInV1 (openai.Embedding)
## 문제 openai>=1.0.0을 설치하고 다음 코드를 실행하면, ``` q_embeddings = openai.Embedding.create(input=question,…
wikidocs.net
(api secret key를 사용하려면 신버전 패키지를 설치해야하는데, openai.Embedding.create은 openai>=1.0.0에서 지원되지 않는다. -> 신버전 패키지를 사용하고 싶으면 client.embeddings.create 로 바꾼다.
from openai import OpenAI
client = OpenAI()
def get_embedding(text, model="text-embedding-3-small"):
text = text.replace("\n", " ")
return client.embeddings.create(input = [text], model=model).data[0].embedding
df['ada_embedding'] = df.combined.apply(lambda x: get_embedding(x, model='text-embedding-3-small'))
df.to_csv('output/embedded_1k_reviews.csv', index=False)
https://platform.openai.com/docs/guides/embeddings/use-cases
2. Response 구조 보기
TypeError: 'CreateEmbeddingResponse' object is not subscriptable
오류 코드:
response = openai.Embedding.create(
input=text,
model=model,
)
print(response["data"]) # -> response.data로 수정해야한다.
원인: 'client.embeddings.create'함수의 반환값이 예상하는 형태와 다를 때 발생한다.
CreateEmbeddingResponse 객체가 리스트나 딕셔너리처럼 인덱싱으로 접근할 수 없다는 오류이다.
+) 아래는 response 부분인데, OpenAI OpenAI Python 클라이언트 라이브러리의 최신 버전에서 반환 객체의 구조가 바뀌었을 것 같다)
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [
0.0023064255,
-0.009327292,
.... (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
}
],
"model": "text-embedding-ada-002",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
https://platform.openai.com/docs/api-reference/embeddings
response["data"] vs response.data
response["data"]:
- response를 딕셔너리로 취급할 때 가능하다.
- RestfulAPI나 JSON 응답 같은 식으로 볼 수 있다.
{
"data": {
"title": "예제 책 제목",
"author": "저자 이름",
"year": 2021
}
}
response = api_call_function()
book_title = response["data"]["title"]
response.data:
- response가 객체이고, 'data'가 이 객체의 속성이다.
- 사용자 정의 라이브러리나 프레임워크에서 볼 수 있다.
class ApiResponse:
def __init__(self, json_payload):
self.data = json_payload
# API에서 응답을 받는 것을 시뮬레이션
response = ApiResponse({
"title": "예제 책 제목",
"author": "저자 이름",
"year": 2021
})
book_title = response.data["title"]