Using Principle Alignment

Identifying and defining principles is a critical step in fine-tuning a large language model (LLM) with SeekrFlow. While principle alignment is optional, it can be extremely powerful, especially in cases where you don’t have a sufficiently large training dataset. These principles serve as the guidelines or constraints within which the model operates, ensuring it aligns with specific behavioral requirements, standards, or ethical considerations. Here’s a detailed guide on how to identify and define principles effectively:

Understanding the Context

Factors to Consider:

Industry Requirements: Identify the specific needs and standards of the industry in which the model will be deployed. For example, the healthcare industry may require adherence to HIPAA guidelines, while the finance industry may need compliance with FINRA regulations.

Business Objectives: Align principles with the business goals and objectives. Understand what outcomes the business aims to achieve with the model.

Example:

In the healthcare industry, principles might include maintaining patient privacy, ensuring the accuracy of medical information, and complying with HIPAA regulations.

Defining Clear and Specific Principles

Factors to Consider:

Size of the Principles: While SeekrFlow’s principle alignmenet feature can accommodate massive corpuses of text, this may not always be the best course of action. Larger principles may require additional model pre-training to produce satisfactory results. An example of a set of principles that is appropriately sized and detailed is FDA’s Title 21 - https://www.ecfr.gov/current/title-21/chapter-I/subchapter-G

Consolidation: Regulations and guidelines you want to use as principles may live in multiple documents. To use these documents as part of the SeekrFlow’s principle alignment process, consolidate them into a single document in the required format for consumption.

Clarity: Principles should be clearly defined and unambiguous. They should provide a precise framework for the model’s behavior.

Specificity: The more specific the principles, the easier it is to align the model’s outputs. Broad or vague principles can lead to inconsistent results.

Implementing Principles with SeekrFlow

Factors to Consider:

Principle Alignment Workflow: Use SeekrFlow’s principle alignment feature to automate the process of aligning the model with defined principles. This involves providing the principles to the platform and allowing it to generate aligned data.

Human-in-the-Loop: Include human oversight in the alignment process to review and refine the generated data prior to initiating fine-tuning.

Reviewing and Updating Principles

Factors to Consider:

Continuous Improvement: Regularly review and update principles to adapt to new regulations, business needs, and ethical considerations.

Uploading Principles and Initiating Alignment

Use SeekrFlow’s API (https://docs.seekr.com/reference/get_flow-alignment-generate) to upload principles and generate a training dataset. The training dataset can then be used to initiate a fine-tuning job. Principles must be uploaded in the .json format. The output must be transformed into a format consumable by SeekrFlow's fine-tuning service to be used (see Training Data section). If principle alignment is used in combination with user provided training data, the resulting dataset from principle alignment and the training data must be combined prior to using the data as part of the fine-tuning service. The code below is an example implementation.

my_dataset = client.alignment.generate(
        instructions=base_prompt,
        files="title21.json"
    )

print(my_dataset)
{
    'question': 'Who should be contacted for clarification regarding the Statements of Federal Financial Accounting
Standards (SFFAS) within the Department of Defense?',
    'answer': 'The Office of the Under Secretary of Defense (Comptroller), specifically the Office of the Deputy 
Chief Financial Officer (ODCFO) and the Financial Management Policy and Reporting (FMPR) Directorate, should be 
contacted for any clarification.'
}

dataset = Dataset.from_list(my_dataset)
dataset.to_parquet("dataset.parquet")

client.files.upload(file="dataset.parquet")