Files
Johnu GeorgeandGitHub f70d44b4bf Remove deprecated variable from GRPC definitions (#1994)
* Update training operator image in CI

* Remove deprecated GRPC var

* Remove deprecated GRPC var

* Remove deprecated GRPC var

* Support for k8s v1.25 in CI

* Revert "Support for k8s v1.25 in CI"

This reverts commit 16e6fe4b16820aea30e266a5c69560a92cfb851c.
2022-11-03 10:32:04 +00:00

2193 lines
65 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<title>Protocol Documentation</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>
<style>
body {
width: 60em;
margin: 1em auto;
color: #222;
font-family: "Ubuntu", sans-serif;
padding-bottom: 4em;
}
h1 {
font-weight: normal;
border-bottom: 1px solid #aaa;
padding-bottom: 0.5ex;
}
h2 {
border-bottom: 1px solid #aaa;
padding-bottom: 0.5ex;
margin: 1.5em 0;
}
h3 {
font-weight: normal;
border-bottom: 1px solid #aaa;
padding-bottom: 0.5ex;
}
a {
text-decoration: none;
color: #567e25;
}
table {
width: 100%;
font-size: 80%;
border-collapse: collapse;
}
thead {
font-weight: 700;
background-color: #dcdcdc;
}
tbody tr:nth-child(even) {
background-color: #fbfbfb;
}
td {
border: 1px solid #ccc;
padding: 0.5ex 2ex;
}
td p {
text-indent: 1em;
margin: 0;
}
td p:nth-child(1) {
text-indent: 0;
}
.field-table td:nth-child(1) {
width: 10em;
}
.field-table td:nth-child(2) {
width: 10em;
}
.field-table td:nth-child(3) {
width: 6em;
}
.field-table td:nth-child(4) {
width: auto;
}
.extension-table td:nth-child(1) {
width: 10em;
}
.extension-table td:nth-child(2) {
width: 10em;
}
.extension-table td:nth-child(3) {
width: 10em;
}
.extension-table td:nth-child(4) {
width: 5em;
}
.extension-table td:nth-child(5) {
width: auto;
}
.enum-table td:nth-child(1) {
width: 10em;
}
.enum-table td:nth-child(2) {
width: 10em;
}
.enum-table td:nth-child(3) {
width: auto;
}
.scalar-value-types-table tr {
height: 3em;
}
#toc-container ul {
list-style-type: none;
padding-left: 1em;
line-height: 180%;
margin: 0;
}
#toc > li > a {
font-weight: bold;
}
.file-heading {
width: 100%;
display: table;
border-bottom: 1px solid #aaa;
margin: 4em 0 1.5em 0;
}
.file-heading h2 {
border: none;
display: table-cell;
}
.file-heading a {
text-align: right;
display: table-cell;
}
.badge {
width: 1.6em;
height: 1.6em;
display: inline-block;
line-height: 1.6em;
text-align: center;
font-weight: bold;
font-size: 60%;
color: #89ba48;
background-color: #dff0c8;
margin: 0.5ex 1em 0.5ex -1em;
border: 1px solid #fbfbfb;
border-radius: 1ex;
}
</style>
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
</head>
<body>
<h1 id="title">Protocol Documentation</h1>
<h2>Table of Contents</h2>
<div id="toc-container">
<ul id="toc">
<li>
<a href="#api.proto">api.proto</a>
<ul>
<li>
<a href="#api.v1.beta1.AlgorithmSetting"><span class="badge">M</span>AlgorithmSetting</a>
</li>
<li>
<a href="#api.v1.beta1.AlgorithmSpec"><span class="badge">M</span>AlgorithmSpec</a>
</li>
<li>
<a href="#api.v1.beta1.DeleteObservationLogReply"><span class="badge">M</span>DeleteObservationLogReply</a>
</li>
<li>
<a href="#api.v1.beta1.DeleteObservationLogRequest"><span class="badge">M</span>DeleteObservationLogRequest</a>
</li>
<li>
<a href="#api.v1.beta1.EarlyStoppingRule"><span class="badge">M</span>EarlyStoppingRule</a>
</li>
<li>
<a href="#api.v1.beta1.EarlyStoppingSetting"><span class="badge">M</span>EarlyStoppingSetting</a>
</li>
<li>
<a href="#api.v1.beta1.EarlyStoppingSpec"><span class="badge">M</span>EarlyStoppingSpec</a>
</li>
<li>
<a href="#api.v1.beta1.Experiment"><span class="badge">M</span>Experiment</a>
</li>
<li>
<a href="#api.v1.beta1.ExperimentSpec"><span class="badge">M</span>ExperimentSpec</a>
</li>
<li>
<a href="#api.v1.beta1.ExperimentSpec.ParameterSpecs"><span class="badge">M</span>ExperimentSpec.ParameterSpecs</a>
</li>
<li>
<a href="#api.v1.beta1.FeasibleSpace"><span class="badge">M</span>FeasibleSpace</a>
</li>
<li>
<a href="#api.v1.beta1.GetEarlyStoppingRulesReply"><span class="badge">M</span>GetEarlyStoppingRulesReply</a>
</li>
<li>
<a href="#api.v1.beta1.GetEarlyStoppingRulesRequest"><span class="badge">M</span>GetEarlyStoppingRulesRequest</a>
</li>
<li>
<a href="#api.v1.beta1.GetObservationLogReply"><span class="badge">M</span>GetObservationLogReply</a>
</li>
<li>
<a href="#api.v1.beta1.GetObservationLogRequest"><span class="badge">M</span>GetObservationLogRequest</a>
</li>
<li>
<a href="#api.v1.beta1.GetSuggestionsReply"><span class="badge">M</span>GetSuggestionsReply</a>
</li>
<li>
<a href="#api.v1.beta1.GetSuggestionsReply.ParameterAssignments"><span class="badge">M</span>GetSuggestionsReply.ParameterAssignments</a>
</li>
<li>
<a href="#api.v1.beta1.GetSuggestionsReply.ParameterAssignments.LabelsEntry"><span class="badge">M</span>GetSuggestionsReply.ParameterAssignments.LabelsEntry</a>
</li>
<li>
<a href="#api.v1.beta1.GetSuggestionsRequest"><span class="badge">M</span>GetSuggestionsRequest</a>
</li>
<li>
<a href="#api.v1.beta1.GraphConfig"><span class="badge">M</span>GraphConfig</a>
</li>
<li>
<a href="#api.v1.beta1.Metric"><span class="badge">M</span>Metric</a>
</li>
<li>
<a href="#api.v1.beta1.MetricLog"><span class="badge">M</span>MetricLog</a>
</li>
<li>
<a href="#api.v1.beta1.NasConfig"><span class="badge">M</span>NasConfig</a>
</li>
<li>
<a href="#api.v1.beta1.NasConfig.Operations"><span class="badge">M</span>NasConfig.Operations</a>
</li>
<li>
<a href="#api.v1.beta1.ObjectiveSpec"><span class="badge">M</span>ObjectiveSpec</a>
</li>
<li>
<a href="#api.v1.beta1.Observation"><span class="badge">M</span>Observation</a>
</li>
<li>
<a href="#api.v1.beta1.ObservationLog"><span class="badge">M</span>ObservationLog</a>
</li>
<li>
<a href="#api.v1.beta1.Operation"><span class="badge">M</span>Operation</a>
</li>
<li>
<a href="#api.v1.beta1.Operation.ParameterSpecs"><span class="badge">M</span>Operation.ParameterSpecs</a>
</li>
<li>
<a href="#api.v1.beta1.ParameterAssignment"><span class="badge">M</span>ParameterAssignment</a>
</li>
<li>
<a href="#api.v1.beta1.ParameterSpec"><span class="badge">M</span>ParameterSpec</a>
</li>
<li>
<a href="#api.v1.beta1.ReportObservationLogReply"><span class="badge">M</span>ReportObservationLogReply</a>
</li>
<li>
<a href="#api.v1.beta1.ReportObservationLogRequest"><span class="badge">M</span>ReportObservationLogRequest</a>
</li>
<li>
<a href="#api.v1.beta1.SetTrialStatusReply"><span class="badge">M</span>SetTrialStatusReply</a>
</li>
<li>
<a href="#api.v1.beta1.SetTrialStatusRequest"><span class="badge">M</span>SetTrialStatusRequest</a>
</li>
<li>
<a href="#api.v1.beta1.Trial"><span class="badge">M</span>Trial</a>
</li>
<li>
<a href="#api.v1.beta1.TrialSpec"><span class="badge">M</span>TrialSpec</a>
</li>
<li>
<a href="#api.v1.beta1.TrialSpec.LabelsEntry"><span class="badge">M</span>TrialSpec.LabelsEntry</a>
</li>
<li>
<a href="#api.v1.beta1.TrialSpec.ParameterAssignments"><span class="badge">M</span>TrialSpec.ParameterAssignments</a>
</li>
<li>
<a href="#api.v1.beta1.TrialStatus"><span class="badge">M</span>TrialStatus</a>
</li>
<li>
<a href="#api.v1.beta1.ValidateAlgorithmSettingsReply"><span class="badge">M</span>ValidateAlgorithmSettingsReply</a>
</li>
<li>
<a href="#api.v1.beta1.ValidateAlgorithmSettingsRequest"><span class="badge">M</span>ValidateAlgorithmSettingsRequest</a>
</li>
<li>
<a href="#api.v1.beta1.ValidateEarlyStoppingSettingsReply"><span class="badge">M</span>ValidateEarlyStoppingSettingsReply</a>
</li>
<li>
<a href="#api.v1.beta1.ValidateEarlyStoppingSettingsRequest"><span class="badge">M</span>ValidateEarlyStoppingSettingsRequest</a>
</li>
<li>
<a href="#api.v1.beta1.ComparisonType"><span class="badge">E</span>ComparisonType</a>
</li>
<li>
<a href="#api.v1.beta1.ObjectiveType"><span class="badge">E</span>ObjectiveType</a>
</li>
<li>
<a href="#api.v1.beta1.ParameterType"><span class="badge">E</span>ParameterType</a>
</li>
<li>
<a href="#api.v1.beta1.TrialStatus.TrialConditionType"><span class="badge">E</span>TrialStatus.TrialConditionType</a>
</li>
<li>
<a href="#api.v1.beta1.DBManager"><span class="badge">S</span>DBManager</a>
</li>
<li>
<a href="#api.v1.beta1.EarlyStopping"><span class="badge">S</span>EarlyStopping</a>
</li>
<li>
<a href="#api.v1.beta1.Suggestion"><span class="badge">S</span>Suggestion</a>
</li>
</ul>
</li>
<li><a href="#scalar-value-types">Scalar Value Types</a></li>
</ul>
</div>
<div class="file-heading">
<h2 id="api.proto">api.proto</h2><a href="#title">Top</a>
</div>
<p>Katib GRPC API v1beta1</p>
<h3 id="api.v1.beta1.AlgorithmSetting">AlgorithmSetting</h3>
<p>HP or NAS algorithm settings.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.AlgorithmSpec">AlgorithmSpec</h3>
<p>HP or NAS algorithm specification.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>algorithm_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>algorithm_settings</td>
<td><a href="#api.v1.beta1.AlgorithmSetting">AlgorithmSetting</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.DeleteObservationLogReply">DeleteObservationLogReply</h3>
<p></p>
<h3 id="api.v1.beta1.DeleteObservationLogRequest">DeleteObservationLogRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>trial_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.EarlyStoppingRule">EarlyStoppingRule</h3>
<p>EarlyStoppingRule represents single early stopping rule.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Name of the rule. Usually, metric name. </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Value of the metric. </p></td>
</tr>
<tr>
<td>comparison</td>
<td><a href="#api.v1.beta1.ComparisonType">ComparisonType</a></td>
<td></td>
<td><p>Correlation between name and value, one of equal, less or greater </p></td>
</tr>
<tr>
<td>start_step</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>Defines quantity of intermediate results that should be received before applying the rule.
If start step is empty, rule is applied from the first recorded metric. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.EarlyStoppingSetting">EarlyStoppingSetting</h3>
<p>Early stopping algorithm settings.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.EarlyStoppingSpec">EarlyStoppingSpec</h3>
<p>Early stopping algorithm specification.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>algorithm_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>algorithm_settings</td>
<td><a href="#api.v1.beta1.EarlyStoppingSetting">EarlyStoppingSetting</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Experiment">Experiment</h3>
<p>Structure for a single Experiment.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Name for the Experiment. </p></td>
</tr>
<tr>
<td>spec</td>
<td><a href="#api.v1.beta1.ExperimentSpec">ExperimentSpec</a></td>
<td></td>
<td><p>Experiment specification. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ExperimentSpec">ExperimentSpec</h3>
<p>Specification of an Experiment. Experiment represents a single optimization run over a feasible space. </p><p>Each Experiment contains a configuration describing the feasible space, as well as a set of Trials.</p><p>It is assumed that objective function f(x) does not change in the course of an Experiment.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>parameter_specs</td>
<td><a href="#api.v1.beta1.ExperimentSpec.ParameterSpecs">ExperimentSpec.ParameterSpecs</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>objective</td>
<td><a href="#api.v1.beta1.ObjectiveSpec">ObjectiveSpec</a></td>
<td></td>
<td><p>Objective specification for the Experiment. </p></td>
</tr>
<tr>
<td>algorithm</td>
<td><a href="#api.v1.beta1.AlgorithmSpec">AlgorithmSpec</a></td>
<td></td>
<td><p>HP or NAS algorithm specification for the Experiment. </p></td>
</tr>
<tr>
<td>early_stopping</td>
<td><a href="#api.v1.beta1.EarlyStoppingSpec">EarlyStoppingSpec</a></td>
<td></td>
<td><p>Early stopping specification for the Experiment. </p></td>
</tr>
<tr>
<td>parallel_trial_count</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>How many Trials can be processed in parallel. </p></td>
</tr>
<tr>
<td>max_trial_count</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>Max completed Trials to mark Experiment as succeeded. </p></td>
</tr>
<tr>
<td>nas_config</td>
<td><a href="#api.v1.beta1.NasConfig">NasConfig</a></td>
<td></td>
<td><p>NAS configuration for the Experiment. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ExperimentSpec.ParameterSpecs">ExperimentSpec.ParameterSpecs</h3>
<p>List of ParameterSpec.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>parameters</td>
<td><a href="#api.v1.beta1.ParameterSpec">ParameterSpec</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.FeasibleSpace">FeasibleSpace</h3>
<p>Feasible space for optimization.</p><p>Int and Double type use Max/Min.</p><p>Discrete and Categorical type use List.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>max</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Max Value </p></td>
</tr>
<tr>
<td>min</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Minimum Value </p></td>
</tr>
<tr>
<td>list</td>
<td><a href="#string">string</a></td>
<td>repeated</td>
<td><p>List of Values. </p></td>
</tr>
<tr>
<td>step</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Step for double or int parameter </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetEarlyStoppingRulesReply">GetEarlyStoppingRulesReply</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>early_stopping_rules</td>
<td><a href="#api.v1.beta1.EarlyStoppingRule">EarlyStoppingRule</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetEarlyStoppingRulesRequest">GetEarlyStoppingRulesRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>experiment</td>
<td><a href="#api.v1.beta1.Experiment">Experiment</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>trials</td>
<td><a href="#api.v1.beta1.Trial">Trial</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
<tr>
<td>db_manager_address</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetObservationLogReply">GetObservationLogReply</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>observation_log</td>
<td><a href="#api.v1.beta1.ObservationLog">ObservationLog</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetObservationLogRequest">GetObservationLogRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>trial_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>metric_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>start_time</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>The start of the time range. RFC3339 format </p></td>
</tr>
<tr>
<td>end_time</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>The end of the time range. RFC3339 format </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetSuggestionsReply">GetSuggestionsReply</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>parameter_assignments</td>
<td><a href="#api.v1.beta1.GetSuggestionsReply.ParameterAssignments">GetSuggestionsReply.ParameterAssignments</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
<tr>
<td>algorithm</td>
<td><a href="#api.v1.beta1.AlgorithmSpec">AlgorithmSpec</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>early_stopping_rules</td>
<td><a href="#api.v1.beta1.EarlyStoppingRule">EarlyStoppingRule</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetSuggestionsReply.ParameterAssignments">GetSuggestionsReply.ParameterAssignments</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>assignments</td>
<td><a href="#api.v1.beta1.ParameterAssignment">ParameterAssignment</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
<tr>
<td>trial_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Optional field to override the trial name </p></td>
</tr>
<tr>
<td>labels</td>
<td><a href="#api.v1.beta1.GetSuggestionsReply.ParameterAssignments.LabelsEntry">GetSuggestionsReply.ParameterAssignments.LabelsEntry</a></td>
<td>repeated</td>
<td><p>Optional field to add labels to the generated Trials </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetSuggestionsReply.ParameterAssignments.LabelsEntry">GetSuggestionsReply.ParameterAssignments.LabelsEntry</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>key</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GetSuggestionsRequest">GetSuggestionsRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>experiment</td>
<td><a href="#api.v1.beta1.Experiment">Experiment</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>trials</td>
<td><a href="#api.v1.beta1.Trial">Trial</a></td>
<td>repeated</td>
<td><p>All completed trials owned by the experiment. </p></td>
</tr>
<tr>
<td>current_request_number</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>The number of Suggestions requested at one time.
When you set 3 to current_request_number, you get three Suggestions at one time. </p></td>
</tr>
<tr>
<td>total_request_number</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>The number of Suggestions requested till now. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.GraphConfig">GraphConfig</h3>
<p>GraphConfig contains a config of DAG</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>num_layers</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>Number of layers </p></td>
</tr>
<tr>
<td>input_sizes</td>
<td><a href="#int32">int32</a></td>
<td>repeated</td>
<td><p>Dimensions of input size </p></td>
</tr>
<tr>
<td>output_sizes</td>
<td><a href="#int32">int32</a></td>
<td>repeated</td>
<td><p>Dimensions of output size </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Metric">Metric</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.MetricLog">MetricLog</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>time_stamp</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>RFC3339 format </p></td>
</tr>
<tr>
<td>metric</td>
<td><a href="#api.v1.beta1.Metric">Metric</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.NasConfig">NasConfig</h3>
<p>NasConfig contains a config of NAS job</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>graph_config</td>
<td><a href="#api.v1.beta1.GraphConfig">GraphConfig</a></td>
<td></td>
<td><p>Config of DAG </p></td>
</tr>
<tr>
<td>operations</td>
<td><a href="#api.v1.beta1.NasConfig.Operations">NasConfig.Operations</a></td>
<td></td>
<td><p>List of Operation </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.NasConfig.Operations">NasConfig.Operations</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>operation</td>
<td><a href="#api.v1.beta1.Operation">Operation</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ObjectiveSpec">ObjectiveSpec</h3>
<p>Objective specification.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td><a href="#api.v1.beta1.ObjectiveType">ObjectiveType</a></td>
<td></td>
<td><p>Type of optimization. </p></td>
</tr>
<tr>
<td>goal</td>
<td><a href="#double">double</a></td>
<td></td>
<td><p>Goal of optimization, can be empty. </p></td>
</tr>
<tr>
<td>objective_metric_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Primary metric name for the optimization. </p></td>
</tr>
<tr>
<td>additional_metric_names</td>
<td><a href="#string">string</a></td>
<td>repeated</td>
<td><p>List of additional metrics to record from Trial.
This can be empty if we only care about the objective metric. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Observation">Observation</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>metrics</td>
<td><a href="#api.v1.beta1.Metric">Metric</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ObservationLog">ObservationLog</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>metric_logs</td>
<td><a href="#api.v1.beta1.MetricLog">MetricLog</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Operation">Operation</h3>
<p>Config for operations in DAG</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>operation_type</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Type of operation in DAG </p></td>
</tr>
<tr>
<td>parameter_specs</td>
<td><a href="#api.v1.beta1.Operation.ParameterSpecs">Operation.ParameterSpecs</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Operation.ParameterSpecs">Operation.ParameterSpecs</h3>
<p>List of ParameterSpec</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>parameters</td>
<td><a href="#api.v1.beta1.ParameterSpec">ParameterSpec</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ParameterAssignment">ParameterAssignment</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ParameterSpec">ParameterSpec</h3>
<p>Config for a hyperparameter.</p><p>Katib will create each Hyper parameter from this config.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Name of the parameter. </p></td>
</tr>
<tr>
<td>parameter_type</td>
<td><a href="#api.v1.beta1.ParameterType">ParameterType</a></td>
<td></td>
<td><p>Type of the parameter. </p></td>
</tr>
<tr>
<td>feasible_space</td>
<td><a href="#api.v1.beta1.FeasibleSpace">FeasibleSpace</a></td>
<td></td>
<td><p>FeasibleSpace for the parameter. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ReportObservationLogReply">ReportObservationLogReply</h3>
<p></p>
<h3 id="api.v1.beta1.ReportObservationLogRequest">ReportObservationLogRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>trial_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>observation_log</td>
<td><a href="#api.v1.beta1.ObservationLog">ObservationLog</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.SetTrialStatusReply">SetTrialStatusReply</h3>
<p></p>
<h3 id="api.v1.beta1.SetTrialStatusRequest">SetTrialStatusRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>trial_name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Trial">Trial</h3>
<p>Structure for a single Trial.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>name</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Name for the Trial. </p></td>
</tr>
<tr>
<td>spec</td>
<td><a href="#api.v1.beta1.TrialSpec">TrialSpec</a></td>
<td></td>
<td><p>Trial specification. </p></td>
</tr>
<tr>
<td>status</td>
<td><a href="#api.v1.beta1.TrialStatus">TrialStatus</a></td>
<td></td>
<td><p>Trial status. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.TrialSpec">TrialSpec</h3>
<p>Specification of a Trial. It represents Trial's parameter assignments and objective.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>objective</td>
<td><a href="#api.v1.beta1.ObjectiveSpec">ObjectiveSpec</a></td>
<td></td>
<td><p>Objective specification for the Trial. </p></td>
</tr>
<tr>
<td>parameter_assignments</td>
<td><a href="#api.v1.beta1.TrialSpec.ParameterAssignments">TrialSpec.ParameterAssignments</a></td>
<td></td>
<td><p>List of assignments generated for the Trial. </p></td>
</tr>
<tr>
<td>labels</td>
<td><a href="#api.v1.beta1.TrialSpec.LabelsEntry">TrialSpec.LabelsEntry</a></td>
<td>repeated</td>
<td><p>Map of labels assigned to the Trial </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.TrialSpec.LabelsEntry">TrialSpec.LabelsEntry</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>key</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
<tr>
<td>value</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.TrialSpec.ParameterAssignments">TrialSpec.ParameterAssignments</h3>
<p>List of ParameterAssignment</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>assignments</td>
<td><a href="#api.v1.beta1.ParameterAssignment">ParameterAssignment</a></td>
<td>repeated</td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.TrialStatus">TrialStatus</h3>
<p>Current Trial status. It contains Trial's latest condition, start time, completion time, observation.</p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>start_time</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Trial start time in RFC3339 format </p></td>
</tr>
<tr>
<td>completion_time</td>
<td><a href="#string">string</a></td>
<td></td>
<td><p>Trial completion time in RFC3339 format </p></td>
</tr>
<tr>
<td>condition</td>
<td><a href="#api.v1.beta1.TrialStatus.TrialConditionType">TrialStatus.TrialConditionType</a></td>
<td></td>
<td><p>Trial current condition. It is equal to the latest Trial CR condition. </p></td>
</tr>
<tr>
<td>observation</td>
<td><a href="#api.v1.beta1.Observation">Observation</a></td>
<td></td>
<td><p>The best Trial observation in logs. </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ValidateAlgorithmSettingsReply">ValidateAlgorithmSettingsReply</h3>
<p>Return INVALID_ARGUMENT Error if Algorithm Settings are not Valid</p>
<h3 id="api.v1.beta1.ValidateAlgorithmSettingsRequest">ValidateAlgorithmSettingsRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>experiment</td>
<td><a href="#api.v1.beta1.Experiment">Experiment</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ValidateEarlyStoppingSettingsReply">ValidateEarlyStoppingSettingsReply</h3>
<p>Return INVALID_ARGUMENT Error if Early Stopping Settings are not Valid</p>
<h3 id="api.v1.beta1.ValidateEarlyStoppingSettingsRequest">ValidateEarlyStoppingSettingsRequest</h3>
<p></p>
<table class="field-table">
<thead>
<tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>early_stopping</td>
<td><a href="#api.v1.beta1.EarlyStoppingSpec">EarlyStoppingSpec</a></td>
<td></td>
<td><p> </p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ComparisonType">ComparisonType</h3>
<p></p>
<table class="enum-table">
<thead>
<tr><td>Name</td><td>Number</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>UNKNOWN_COMPARISON</td>
<td>0</td>
<td><p>Unknown comparison, not used</p></td>
</tr>
<tr>
<td>EQUAL</td>
<td>1</td>
<td><p>Equal comparison, e.g. accuracy = 0.7</p></td>
</tr>
<tr>
<td>LESS</td>
<td>2</td>
<td><p>Less comparison, e.g. accuracy &lt; 0.7</p></td>
</tr>
<tr>
<td>GREATER</td>
<td>3</td>
<td><p>Greater comparison, e.g. accuracy &gt; 0.7</p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ObjectiveType">ObjectiveType</h3>
<p>Direction of optimization. Minimize or Maximize.</p>
<table class="enum-table">
<thead>
<tr><td>Name</td><td>Number</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>UNKNOWN</td>
<td>0</td>
<td><p>Undefined type and not used.</p></td>
</tr>
<tr>
<td>MINIMIZE</td>
<td>1</td>
<td><p>Minimize</p></td>
</tr>
<tr>
<td>MAXIMIZE</td>
<td>2</td>
<td><p>Maximize</p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.ParameterType">ParameterType</h3>
<p>Types of value for HyperParameter.</p>
<table class="enum-table">
<thead>
<tr><td>Name</td><td>Number</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>UNKNOWN_TYPE</td>
<td>0</td>
<td><p>Undefined type and not used.</p></td>
</tr>
<tr>
<td>DOUBLE</td>
<td>1</td>
<td><p>Double float type. Use &#34;Max/Min&#34;.</p></td>
</tr>
<tr>
<td>INT</td>
<td>2</td>
<td><p>Int type. Use &#34;Max/Min&#34;.</p></td>
</tr>
<tr>
<td>DISCRETE</td>
<td>3</td>
<td><p>Discrete number type. Use &#34;List&#34; as float.</p></td>
</tr>
<tr>
<td>CATEGORICAL</td>
<td>4</td>
<td><p>Categorical type. Use &#34;List&#34; as string.</p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.TrialStatus.TrialConditionType">TrialStatus.TrialConditionType</h3>
<p>Trial can be in one of 8 conditions.</p><p>TODO (andreyvelich): Remove unused conditions.</p>
<table class="enum-table">
<thead>
<tr><td>Name</td><td>Number</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>CREATED</td>
<td>0</td>
<td><p></p></td>
</tr>
<tr>
<td>RUNNING</td>
<td>1</td>
<td><p></p></td>
</tr>
<tr>
<td>SUCCEEDED</td>
<td>2</td>
<td><p></p></td>
</tr>
<tr>
<td>KILLED</td>
<td>3</td>
<td><p></p></td>
</tr>
<tr>
<td>FAILED</td>
<td>4</td>
<td><p></p></td>
</tr>
<tr>
<td>METRICSUNAVAILABLE</td>
<td>5</td>
<td><p></p></td>
</tr>
<tr>
<td>EARLYSTOPPED</td>
<td>6</td>
<td><p></p></td>
</tr>
<tr>
<td>UNKNOWN</td>
<td>7</td>
<td><p></p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.DBManager">DBManager</h3>
<p>DBManager service defines APIs to manage Katib database.</p>
<table class="enum-table">
<thead>
<tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>ReportObservationLog</td>
<td><a href="#api.v1.beta1.ReportObservationLogRequest">ReportObservationLogRequest</a></td>
<td><a href="#api.v1.beta1.ReportObservationLogReply">ReportObservationLogReply</a></td>
<td><p>Report a log of Observations for a Trial.
The log consists of timestamp and value of metric.
Katib store every log of metrics.
You can see accuracy curve or other metric logs on UI.</p></td>
</tr>
<tr>
<td>GetObservationLog</td>
<td><a href="#api.v1.beta1.GetObservationLogRequest">GetObservationLogRequest</a></td>
<td><a href="#api.v1.beta1.GetObservationLogReply">GetObservationLogReply</a></td>
<td><p>Get all log of Observations for a Trial.</p></td>
</tr>
<tr>
<td>DeleteObservationLog</td>
<td><a href="#api.v1.beta1.DeleteObservationLogRequest">DeleteObservationLogRequest</a></td>
<td><a href="#api.v1.beta1.DeleteObservationLogReply">DeleteObservationLogReply</a></td>
<td><p>Delete all log of Observations for a Trial.</p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.EarlyStopping">EarlyStopping</h3>
<p>EarlyStopping service defines APIs to manage Katib Early Stopping algorithms</p>
<table class="enum-table">
<thead>
<tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>GetEarlyStoppingRules</td>
<td><a href="#api.v1.beta1.GetEarlyStoppingRulesRequest">GetEarlyStoppingRulesRequest</a></td>
<td><a href="#api.v1.beta1.GetEarlyStoppingRulesReply">GetEarlyStoppingRulesReply</a></td>
<td><p></p></td>
</tr>
<tr>
<td>SetTrialStatus</td>
<td><a href="#api.v1.beta1.SetTrialStatusRequest">SetTrialStatusRequest</a></td>
<td><a href="#api.v1.beta1.SetTrialStatusReply">SetTrialStatusReply</a></td>
<td><p></p></td>
</tr>
<tr>
<td>ValidateEarlyStoppingSettings</td>
<td><a href="#api.v1.beta1.ValidateEarlyStoppingSettingsRequest">ValidateEarlyStoppingSettingsRequest</a></td>
<td><a href="#api.v1.beta1.ValidateEarlyStoppingSettingsReply">ValidateEarlyStoppingSettingsReply</a></td>
<td><p></p></td>
</tr>
</tbody>
</table>
<h3 id="api.v1.beta1.Suggestion">Suggestion</h3>
<p>Suggestion service defines APIs to manage Katib Suggestion from HP or NAS algorithms</p>
<table class="enum-table">
<thead>
<tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td>GetSuggestions</td>
<td><a href="#api.v1.beta1.GetSuggestionsRequest">GetSuggestionsRequest</a></td>
<td><a href="#api.v1.beta1.GetSuggestionsReply">GetSuggestionsReply</a></td>
<td><p></p></td>
</tr>
<tr>
<td>ValidateAlgorithmSettings</td>
<td><a href="#api.v1.beta1.ValidateAlgorithmSettingsRequest">ValidateAlgorithmSettingsRequest</a></td>
<td><a href="#api.v1.beta1.ValidateAlgorithmSettingsReply">ValidateAlgorithmSettingsReply</a></td>
<td><p></p></td>
</tr>
</tbody>
</table>
<h2 id="scalar-value-types">Scalar Value Types</h2>
<table class="scalar-value-types-table">
<thead>
<tr><td>.proto Type</td><td>Notes</td><td>C++</td><td>Java</td><td>Python</td><td>Go</td><td>C#</td><td>PHP</td><td>Ruby</td></tr>
</thead>
<tbody>
<tr id="double">
<td>double</td>
<td></td>
<td>double</td>
<td>double</td>
<td>float</td>
<td>float64</td>
<td>double</td>
<td>float</td>
<td>Float</td>
</tr>
<tr id="float">
<td>float</td>
<td></td>
<td>float</td>
<td>float</td>
<td>float</td>
<td>float32</td>
<td>float</td>
<td>float</td>
<td>Float</td>
</tr>
<tr id="int32">
<td>int32</td>
<td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.</td>
<td>int32</td>
<td>int</td>
<td>int</td>
<td>int32</td>
<td>int</td>
<td>integer</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="int64">
<td>int64</td>
<td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.</td>
<td>int64</td>
<td>long</td>
<td>int/long</td>
<td>int64</td>
<td>long</td>
<td>integer/string</td>
<td>Bignum</td>
</tr>
<tr id="uint32">
<td>uint32</td>
<td>Uses variable-length encoding.</td>
<td>uint32</td>
<td>int</td>
<td>int/long</td>
<td>uint32</td>
<td>uint</td>
<td>integer</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="uint64">
<td>uint64</td>
<td>Uses variable-length encoding.</td>
<td>uint64</td>
<td>long</td>
<td>int/long</td>
<td>uint64</td>
<td>ulong</td>
<td>integer/string</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="sint32">
<td>sint32</td>
<td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.</td>
<td>int32</td>
<td>int</td>
<td>int</td>
<td>int32</td>
<td>int</td>
<td>integer</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="sint64">
<td>sint64</td>
<td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.</td>
<td>int64</td>
<td>long</td>
<td>int/long</td>
<td>int64</td>
<td>long</td>
<td>integer/string</td>
<td>Bignum</td>
</tr>
<tr id="fixed32">
<td>fixed32</td>
<td>Always four bytes. More efficient than uint32 if values are often greater than 2^28.</td>
<td>uint32</td>
<td>int</td>
<td>int</td>
<td>uint32</td>
<td>uint</td>
<td>integer</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="fixed64">
<td>fixed64</td>
<td>Always eight bytes. More efficient than uint64 if values are often greater than 2^56.</td>
<td>uint64</td>
<td>long</td>
<td>int/long</td>
<td>uint64</td>
<td>ulong</td>
<td>integer/string</td>
<td>Bignum</td>
</tr>
<tr id="sfixed32">
<td>sfixed32</td>
<td>Always four bytes.</td>
<td>int32</td>
<td>int</td>
<td>int</td>
<td>int32</td>
<td>int</td>
<td>integer</td>
<td>Bignum or Fixnum (as required)</td>
</tr>
<tr id="sfixed64">
<td>sfixed64</td>
<td>Always eight bytes.</td>
<td>int64</td>
<td>long</td>
<td>int/long</td>
<td>int64</td>
<td>long</td>
<td>integer/string</td>
<td>Bignum</td>
</tr>
<tr id="bool">
<td>bool</td>
<td></td>
<td>bool</td>
<td>boolean</td>
<td>boolean</td>
<td>bool</td>
<td>bool</td>
<td>boolean</td>
<td>TrueClass/FalseClass</td>
</tr>
<tr id="string">
<td>string</td>
<td>A string must always contain UTF-8 encoded or 7-bit ASCII text.</td>
<td>string</td>
<td>String</td>
<td>str/unicode</td>
<td>string</td>
<td>string</td>
<td>string</td>
<td>String (UTF-8)</td>
</tr>
<tr id="bytes">
<td>bytes</td>
<td>May contain any arbitrary sequence of bytes.</td>
<td>string</td>
<td>ByteString</td>
<td>str</td>
<td>[]byte</td>
<td>ByteString</td>
<td>string</td>
<td>String (ASCII-8BIT)</td>
</tr>
</tbody>
</table>
</body>
</html>