

# Noções básicas sobre parâmetros de fórmula
<a name="customize-fine-tune-evaluate-understand-modify"></a>

**Configuração da execução**  
A seguir está uma configuração geral de execução e uma explicação sobre os parâmetros envolvidos.

```
run:
  name: eval_job_name
  model_type: amazon.nova-micro-v1:0:128k
  model_name_or_path: nova-micro/prod
  replicas: 1
  data_s3_path: ""
  output_s3_path: s3://output_path
  mlflow_tracking_uri: ""
  mlflow_experiment_name : ""
  mlflow_run_name : ""
```
+ `name`: (obrigatório) um nome descritivo para sua tarefa de avaliação. Isso ajuda a identificar sua tarefa no Console da AWS.
+ `model_type`: (obrigatório) Especifica a variante do modelo do Amazon Nova a ser usada. Não modifique manualmente esse campo. Entre as opções estão:
  + `amazon.nova-micro-v1:0:128k`
  + `amazon.nova-lite-v1:0:300k`
  + `amazon.nova-pro-v1:0:300k`
  + `amazon.nova-2-lite-v1:0:256k`
+ `model_name_or_path`: (obrigatório) o caminho para o modelo de base ou o caminho do S3 para o ponto de verificação pós-treinado. Entre as opções estão:
  + `nova-micro/prod`
  + `nova-lite/prod`
  + `nova-pro/prod`
  + `nova-lite-2/prod`
  + (Caminho S3 para o ponto de verificação pós-treinado) `s3://<escrow bucket>/<job id>/outputs/checkpoints`
+ `replicas`: (obrigatório) o número de instâncias de computação a serem usadas no treinamento distribuído. Você deve definir esse valor como 1 porque não é possível usar vários nós.
+ `data_s3_path`: (obrigatório) o caminho do S3 para o conjunto de dados de entrada. Deixe esse parâmetro vazio, a menos que você esteja usando o *traga seu próprio conjunto de dados* ou o *LLM como avaliador*.
+ `output_s3_path`: (obrigatório) o caminho do S3 para armazenar artefatos de avaliação de saída. Observe que o bucket de saída do S3 deve ser criado pela mesma conta que está criando a tarefa.
+ `mlflow_tracking_uri`: (opcional) ARN do servidor de rastreamento MLflow para rastrear execuções/experimentos do MLflow. Certifique-se de ter permissão para acessar o servidor de rastreamento no perfil de execução do SageMaker AI

**Configuração da avaliação**  
A seguir é apresentada uma configuração avaliação de modelo e uma explicação sobre os parâmetros envolvidos.

```
evaluation:
  task: mmlu
  strategy: zs_cot
  subtask: mathematics
  metric: accuracy
```
+ `task`: (obrigatório) especifica a referência ou tarefa de avaliação a ser usada.

  Lista de tarefas compatíveis:
  + mmlu
  + mmlu\_pro
  + bbh
  + gpqa
  + math
  + strong\_reject
  + gen\_qa
  + ifeval
  + llm\_judge
  + humaneval
  + mm\_llm\_judge
  + rubric\_llm\_judge
  + aime\_2024
  + calendar\_scheduling
  + humaneval
+ `strategy`: (obrigatório) define a abordagem de avaliação.
  + zs\_cot: cadeia de pensamento zero shot, uma abordagem de utilização de prompts em grandes modelos de linguagem que incentiva o raciocínio passo a passo sem exigir exemplos explícitos.
  + zs: zero shot, uma abordagem para resolver um problema sem nenhum exemplo de treinamento prévio.
  + gen\_qa: uma estratégia específica para trazer suas próprias fórmulas de conjuntos de dados.
  + judge: uma estratégia específica para o LLM como avaliador do Amazon Nova.
+ `subtask`: (opcional e removível) estipula uma subtarefa específica para determinadas tarefas de avaliação. Remova da sua fórmula se sua tarefa não tiver subtarefas.
+ `metric`: (obrigatório) a métrica de avaliação a ser usada.
  + accuracy: porcentagem de respostas corretas.
  + exact\_match: (para a referência `math`) exibe a taxa na qual as strings previstas de entrada correspondem exatamente às respectivas referências.
  + deflection: (para a referência `strong reject`), exibe a deflexão relativa ao modelo base e a diferença nas métricas de significância.
  + pass@1: (para a referência `humaneval`) é uma métrica usada para medir a porcentagem de casos em que a predição de maior confiança do modelo corresponde à resposta correta.
  + `all`: exibe as seguintes métricas:
    + Para a referência `gen_qa` e trazer seu próprio conjunto de dados, exibe as seguintes métricas:
      + `rouge1`: mede a sobreposição de unigramas (palavras únicas) entre o texto gerado e o texto de referência.
      + `rouge2`: mede a sobreposição de unigramas (duas palavras consecutivas) entre o texto gerado e o texto de referência.
      + `rougeL`: mede a maior subsequência comum entre textos, permitindo lacunas na correspondência.
      + `exact_match`: pontuação binária (0 ou 1) indicando se o texto gerado corresponde exatamente ao texto de referência, caractere por caractere.
      + `quasi_exact_match`: semelhante à correspondência exata, mas mais tolerante. Geralmente ignora diferenças de maiúsculas e minúsculas, pontuação e espaço em branco.
      + `f1_score`: média harmônica de precisão e recall. Mede a sobreposição de palavras entre as respostas previstas e de referência.
      + `f1_score_quasi`: semelhante ao f1\_score, mas com uma correspondência mais branda. Usa a comparação de texto normalizada que ignora pequenas diferenças.
      + `bleu`: mede a precisão das correspondências de n-gramas entre o texto gerado e o texto de referência. É comumente usada em avaliação de tradução.
    + Para `llm_judge` e `mm_llm_judge`, utilize seu próprio conjunto de dados de avaliação comparativa e obtenha as seguintes métricas:
      + `a_scores`: número de acertos da `response_A` em passagens de avaliação para frente e para trás.
      + `a_scores_stderr`: erro padrão de `response_A scores` em avaliações de pares.
      + `b_scores`: número de acertos da `response_B` em passagens de avaliação para frente e para trás.
      + `b_scores_stderr`: erro padrão de `response_B scores` em avaliações de pares.
      + `ties`: número de avaliações em que a `response_A` e a `response_B` são avaliadas como iguais.
      + `ties_stderr`: erro padrão de empates em avaliações de pares.
      + `inference_error`: contagem de avaliações que não puderam ser concluídas adequadamente.
      + `inference_error_stderr`: erro padrão de erros de inferência em todos as avaliações.
      + `score`: pontuação agregada com base nos acertos dos passes para frente e para trás da `response_B`.
      + `score_stderr`: erro padrão da pontuação agregada em avaliações de pares.
      + `winrate`: a probabilidade de que a response\_B será preferida em relação à response\_A calculada por meio da probabilidade de Bradley-Terry.
      + `lower_rate`: limite inferior (2,5º percentil) da taxa de acerto estimada da amostragem de bootstrap.

**Configuração de inferência**  
A seguir é apresentada uma configuração de inferência e uma explicação sobre os parâmetros envolvidos. Todos os parâmetros são opcionais.

```
inference:
  max_new_tokens: 200
  top_k: -1
  top_p: 1.0
  temperature: 0
  top_logprobs: 10
  reasoning_effort: null  # options: low/high to enable reasoning or null to disable reasoning
```
+ `max_new_tokens`: o número máximo de tokens a serem gerados. Deve ser um número inteiro.
+ `top_k`: o número de tokens de maior probabilidade a serem considerados. Deve ser um número inteiro.
+ `top_p`: o limite de probabilidade cumulativa para a amostragem de tokens. Deve ser um número de ponto flutuante entre 0,0 e 1,0, inclusive.
+ `temperature`: aleatoriedade na seleção de tokens. Valores maiores aumentam a aleatoriedade. Use 0 que os resultados sejam determinísticos. Esse valor deve ser um número de ponto flutuante com um valor mínimo de 0.
+ `top_logprobs`: o número dos principais logprobs a serem retornados na resposta de inferência. O valor deve ser um número inteiro de 0 a 20. Os logprobs contêm os tokens de saída considerados e as probabilidades logarítmicas de cada token de saída retornado no conteúdo da mensagem.
+ `reasoning_effort`: controla o comportamento de raciocínio para modelos capazes de raciocinar. Defina `reasoning_effort` somente quando `model_type` especificar um modelo capaz de raciocínio (atualmente `amazon.nova-2-lite-v1:0:256k`). As opções disponíveis são `null` (valor padrão se não definido; desabilita o raciocínio), `low` ou `high`.

Observe que, para `humaneval`, recomendamos a seguinte configuração de inferência:

```
inference:
  top_k: 1
  max_new_tokens: 1600
  temperature: 0.0
```

**Configuração do MLflow**  
Confira a seguir uma configuração do MLflow e uma explicação sobre os parâmetros envolvidos. Todos os parâmetros são opcionais.

```
run:
  mlflow_tracking_uri: ""
  mlflow_experiment_name: ""
  mlflow_run_name: ""
```
+ `mlflow_tracking_uri`: (opcional) a localização do servidor de rastreamento MLflow (necessário somente no SMHP)
+ `mlflow_experiment_name`: (opcional) nome do experimento para agrupar execuções de ML relacionadas
+ `mlflow_run_name`: (opcional) nome personalizado para um treinamento específico executado em um experimento