Fine-Tuning

Programmatic Fine-tuning

In addition to using the Web UI for fine-tuning models, customers can also kick off fine-tuning jobs programmatically using the Fine-tuning API or via the Cohere Python SDK. This can be useful for fine-tuning jobs that happen on a regular cadence, such as fine-tuning nightly on newly-acquired data.

Datasets

Before a fine-tuning job can be started, users must upload a Dataset with training and (optionally) evaluation data. The contents and structure of the dataset will vary depending on the type of fine-tuning. Read more about preparing the training data for Chat, Classify, and Rerank fine-tuning.

The snippet below creates a dataset for fine-tuning a model on records of customer service interactions.

PYTHON
1# create a dataset
2co = cohere.Client('Your API key')
3
4my_dataset = co.datasets.create(
5 name="customer service logs",
6 type="chat-finetune-input",
7 data=open("./customer-chat.jsonl", "rb"),
8 eval_data=open("./customer-chat-eval.jsonl", "rb")
9)
10
11result = co.wait(my_dataset)

Starting a Fine-tuning Job

Below is an example of starting a fine-tuning job of a generative model for Chat using a dataset of conversational data.

PYTHON
1from cohere.finetuning import FinetunedModel, Settings, BaseModel
2
3# start training a custom model using the dataset
4finetuned_model = co.finetuning.create_finetuned_model(
5 request=FinetunedModel(
6 name="customer-service-chat-model",
7 settings=Settings(
8 base_model=BaseModel(
9 base_type="BASE_TYPE_CHAT",
10 ),
11 dataset_id=my_dataset.id,
12 ),
13 ),
14)

Fine-tuning results

When the fine-tuning model is ready you will receive an email notification. You can explore the evaluation metrics using the Dashboard and try out your model using one of our APIs on the Playground.