

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# OpenAI APIs 사용하여 개방형 가중치 모델에 대한 미세 조정 작업 생성 및 관리
<a name="fine-tuning-openai-job-create"></a>

OpenAI 호환 미세 조정 작업 APIs 사용하면 미세 조정 작업을 생성, 모니터링 및 관리할 수 있습니다. 이 페이지에서는 강화 미세 조정을 위해 이러한 APIs를 사용하는 방법을 강조합니다. 전체 API 세부 정보는 [OpenAI 미세 조정 설명서를](https://platform.openai.com/docs/api-reference/fine-tuning) 참조하세요.

## 미세 조정 작업 생성
<a name="fine-tuning-openai-create-job"></a>

지정된 데이터 세트에서 새 모델을 생성하는 프로세스를 시작하는 미세 조정 작업을 생성합니다. 전체 API 세부 정보는 [OpenAI 미세 조정 작업 생성 설명서를](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/create) 참조하세요.

### 예제
<a name="fine-tuning-openai-create-job-examples"></a>

RFT 메서드를 사용하여 미세 조정 작업을 생성하려면 원하는 메서드의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Create fine-tuning job with RFT method
job_response = client.fine_tuning.jobs.create(
    model=MODEL_ID,
    training_file=training_file_id,
    # Suffix field is not supported so commenting for now.
    # suffix="rft-example",  # Optional: suffix for fine-tuned model name
    extra_body={
        "method": {
            "type": "reinforcement", 
            "reinforcement": {
                "grader": {
                    "type": "lambda",
                    "lambda": {
                        "function": "arn:aws:lambda:us-west-2:123456789012:function:my-reward-function"  # Replace with your Lambda ARN
                    }
                },
                "hyperparameters": {
                    "n_epochs": 1,  # Number of training epochs
                    "batch_size": 4,  # Batch size
                    "learning_rate_multiplier": 1.0  # Learning rate multiplier
                }
            }
        }
    }
)

# Store job ID for next steps
job_id = job_response.id
print({job_id})
```

------
#### [ HTTP request ]

에 POST 요청`/v1/fine_tuning/jobs`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-abc123",
    "model": "gpt-4o-mini",
    "method": {
      "type": "reinforcement",
      "reinforcement": {
        "grader": {
          "type": "lambda",
          "lambda": {
            "function": "arn:aws:lambda:us-west-2:123456789012:function:my-grader"
          }
        },
        "hyperparameters": {
          "n_epochs": 1,
          "batch_size": 4,
          "learning_rate_multiplier": 1.0
        }
      }
    }
  }'
```

------

## 미세 조정 이벤트 나열
<a name="fine-tuning-openai-list-events"></a>

미세 조정 작업에 대한 이벤트를 나열합니다. 미세 조정 이벤트는 훈련 지표, 체크포인트 생성, 오류 메시지 등 작업 진행 상황에 대한 자세한 정보를 제공합니다. 전체 API 세부 정보는 [OpenAI 미세 조정 이벤트 나열 설명서를](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/list_events) 참조하세요.

### 예제
<a name="fine-tuning-openai-list-events-examples"></a>

미세 조정 이벤트를 나열하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List fine-tuning events
events = client.fine_tuning.jobs.list_events(
    fine_tuning_job_id="ftjob-abc123",
    limit=50
)

for event in events.data:
    print(f"[{event.created_at}] {event.level}: {event.message}")
    if event.data:
        print(f"  Metrics: {event.data}")
```

------
#### [ HTTP request ]

에 GET 요청`/v1/fine_tuning/jobs/{fine_tuning_job_id}/events`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=50
```

------

이벤트에는 다음과 같은 정보가 포함됩니다.
+ 훈련 시작 및 완료 메시지
+ 체크포인트 생성 알림
+ 각 단계의 훈련 지표(손실, 정확도)
+ 작업이 실패할 경우 오류 메시지

모든 이벤트를 페이지 매김하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Paginate through all events
all_events = []
after = None

while True:
    events = client.fine_tuning.jobs.list_events(
        fine_tuning_job_id="ftjob-abc123",
        limit=100,
        after=after
    )
    
    all_events.extend(events.data)
    
    if not events.has_more:
        break
    
    after = events.data[-1].id
```

------
#### [ HTTP request ]

`after` 파라미터를 사용하여 여러 GET 요청을 수행합니다.

```
# First request
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=100

# Subsequent requests with 'after' parameter
curl "https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/events?limit=100&after=ft-event-abc123"
```

------

## 미세 조정 작업 검색
<a name="fine-tuning-openai-retrieve-job"></a>

미세 조정 작업에 대한 자세한 정보를 가져옵니다. 전체 API 세부 정보는 [OpenAI 미세 조정 작업 검색 설명서를](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/retrieve) 참조하세요.

### 예제
<a name="fine-tuning-openai-retrieve-job-examples"></a>

특정 작업 세부 정보를 검색하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Retrieve specific job details
job_details = client.fine_tuning.jobs.retrieve(job_id)

# Print raw response
print(json.dumps(job_details.model_dump(), indent=2))
```

------
#### [ HTTP request ]

에 GET 요청을 합니다`/v1/fine_tuning/jobs/{fine_tuning_job_id}`.

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## 미세 조정 작업 나열
<a name="fine-tuning-openai-list-jobs"></a>

페이지 매김 지원이 포함된 조직의 미세 조정 작업을 나열합니다. 전체 API 세부 정보는 [OpenAI 미세 조정 작업 나열 설명서를](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/list) 참조하세요.

### 예제
<a name="fine-tuning-openai-list-jobs-examples"></a>

제한 및 페이지 매김이 있는 미세 조정 작업을 나열하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List fine-tuning jobs with limit and pagination
response = client.fine_tuning.jobs.list(
    limit=20  # Maximum number of jobs to return
)

# Print raw response
print(json.dumps(response.model_dump(), indent=2))
```

------
#### [ HTTP request ]

에 GET 요청`/v1/fine_tuning/jobs`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs?limit=20 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## 미세 조정 작업 취소
<a name="fine-tuning-openai-cancel-job"></a>

진행 중인 미세 조정 작업을 취소합니다. 취소한 후에는 작업을 재개할 수 없습니다. 전체 API 세부 정보는 [OpenAI 미세 조정 작업 취소 설명서를](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/methods/cancel) 참조하세요.

### 예제
<a name="fine-tuning-openai-cancel-job-examples"></a>

미세 조정 작업을 취소하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Cancel fine-tuning job
cancel_response = client.fine_tuning.jobs.cancel("ftjob-abc123")

print(f"Job ID: {cancel_response.id}")
print(f"Status: {cancel_response.status}")  # Should be "cancelled"
```

------
#### [ HTTP request ]

에 POST 요청`/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel`:

```
curl -X POST https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/cancel \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## 미세 조정 체크포인트 나열
<a name="fine-tuning-openai-list-checkpoints"></a>

미세 조정 작업에 대한 체크포인트를 나열합니다. 체크포인트는 다양한 훈련 단계에서 성능을 평가하는 추론에 사용할 수 있는 미세 조정 중에 생성되는 중간 모델 스냅샷입니다. 자세한 내용은 [OpenAI 미세 조정 체크포인트 나열 설명서를 참조하세요](https://developers.openai.com/api/reference/resources/fine_tuning/subresources/jobs/subresources/checkpoints/methods/list).

### 예제
<a name="fine-tuning-openai-list-checkpoints-examples"></a>

미세 조정 작업에 대한 체크포인트를 나열하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List checkpoints for a fine-tuning job
checkpoints = client.fine_tuning.jobs.checkpoints.list(
    fine_tuning_job_id="ftjob-abc123",
    limit=10
)

for checkpoint in checkpoints.data:
    print(f"Checkpoint ID: {checkpoint.id}")
    print(f"Step: {checkpoint.step_number}")
    print(f"Model: {checkpoint.fine_tuned_model_checkpoint}")
    print(f"Metrics: {checkpoint.metrics}")
    print("---")
```

------
#### [ HTTP request ]

에 GET 요청`/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/fine_tuning/jobs/ftjob-abc123/checkpoints?limit=10
```

------

각 체크포인트에는 다음이 포함됩니다.
+ **체크포인트 ID** - 체크포인트의 고유 식별자
+ **단계 번호** - 체크포인트가 생성된 훈련 단계
+ **모델 체크포인트** - 추론에 사용할 수 있는 모델 식별자
+ **지표** -이 체크포인트의 검증 손실 및 정확도

추론에 체크포인트 모델을 사용하려면 원하는 방법의 탭을 선택한 다음 다음 단계를 따릅니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Test inference with a checkpoint
response = client.chat.completions.create(
    model=checkpoint.fine_tuned_model_checkpoint,
    messages=[{"role": "user", "content": "What is AI?"}],
    max_tokens=100
)

print(response.choices[0].message.content)
```

------
#### [ HTTP request ]

에 POST 요청`/v1/chat/completions`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom:7p4lURel:ckpt-step-1000",
    "messages": [{"role": "user", "content": "What is AI?"}],
    "max_tokens": 100
  }'
```

------

## 미세 조정된 모델을 사용하여 추론 실행
<a name="fine-tuning-openai-inference"></a>

미세 조정 작업이 완료되면 응답 API 또는 채팅 완료 API를 통해 추론에 미세 조정된 모델을 사용할 수 있습니다. 전체 API 세부 정보는 섹션을 참조하세요[OpenAI APIs 사용하여 응답 생성](bedrock-mantle.md).

### 응답 API
<a name="fine-tuning-openai-responses-api"></a>

미세 조정된 모델과 함께 단일 턴 텍스트 생성에 응답 API를 사용합니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Get the fine-tuned model ID
job_details = client.fine_tuning.jobs.retrieve("ftjob-abc123")

if job_details.status == 'succeeded' and job_details.fine_tuned_model:
    fine_tuned_model = job_details.fine_tuned_model
    print(f"Using fine-tuned model: {fine_tuned_model}")
    
    # Run inference with Responses API
    response = client.completions.create(
        model=fine_tuned_model,
        prompt="What is the capital of France?",
        max_tokens=100,
        temperature=0.7
    )
    
    print(f"Response: {response.choices[0].text}")
else:
    print(f"Job status: {job_details.status}")
    print("Job must be in 'succeeded' status to run inference")
```

------
#### [ HTTP request ]

에 POST 요청`/v1/completions`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom-model:7p4lURel",
    "prompt": "What is the capital of France?",
    "max_tokens": 100,
    "temperature": 0.7
  }'
```

------

### 채팅 완료 API
<a name="fine-tuning-openai-inference-examples"></a>

채팅 완료 API를 사용하여 미세 조정된 모델과의 대화형 상호 작용을 수행합니다.

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Get the fine-tuned model ID
job_details = client.fine_tuning.jobs.retrieve("ftjob-abc123")

if job_details.status == 'succeeded' and job_details.fine_tuned_model:
    fine_tuned_model = job_details.fine_tuned_model
    print(f"Using fine-tuned model: {fine_tuned_model}")
    
    # Run inference
    inference_response = client.chat.completions.create(
        model=fine_tuned_model,
        messages=[
            {"role": "user", "content": "What is the capital of France?"}
        ],
        max_tokens=100
    )
    
    print(f"Response: {inference_response.choices[0].message.content}")
else:
    print(f"Job status: {job_details.status}")
    print("Job must be in 'succeeded' status to run inference")
```

------
#### [ HTTP request ]

에 POST 요청`/v1/chat/completions`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "ft:gpt-4o-mini:openai:custom-model:7p4lURel",
    "messages": [
      {"role": "user", "content": "What is the capital of France?"}
    ],
    "max_tokens": 100
  }'
```

------