Deployed 041eefc with MkDocs version: 1.3.0
This commit is contained in:
parent
664786d231
commit
27a5cb14bf
35 changed files with 121 additions and 111 deletions
2
404.html
2
404.html
|
|
@ -403,7 +403,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="/how-to-guides/use-service/" class="md-nav__link">
|
<a href="/how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -746,7 +746,7 @@
|
||||||
<h1 id="summarising-scientific-publications-from-a-tech-transfer-perspective">Summarising scientific publications from a tech-transfer perspective<a class="headerlink" href="#summarising-scientific-publications-from-a-tech-transfer-perspective" title="Permanent link">#</a></h1>
|
<h1 id="summarising-scientific-publications-from-a-tech-transfer-perspective">Summarising scientific publications from a tech-transfer perspective<a class="headerlink" href="#summarising-scientific-publications-from-a-tech-transfer-perspective" title="Permanent link">#</a></h1>
|
||||||
<p>This example shows how <code>great-ai</code> is used in practice at ScoutinScience. </p>
|
<p>This example shows how <code>great-ai</code> is used in practice at ScoutinScience. </p>
|
||||||
<div style="display: flex; justify-content: center;">
|
<div style="display: flex; justify-content: center;">
|
||||||
<p><a class="md-button md-button--primary" href="/docs/examples/scibert"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2v2h1v14a4 4 0 0 0 4 4 4 4 0 0 0 4-4V4h1V2H7m4 14c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m2-4c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m1-5h-4V4h4v3Z"/></svg></span> Check out the code</a></p>
|
<p><a class="md-button md-button--primary" href="https://github.com/schmelczer/great-ai/tree/main/docs/examples/scibert"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2v2h1v14a4 4 0 0 0 4 4 4 4 0 0 0 4-4V4h1V2H7m4 14c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m2-4c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m1-5h-4V4h4v3Z"/></svg></span> Check out the code</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,5 @@
|
||||||
This example shows how `great-ai` is used in practice at ScoutinScience.
|
This example shows how `great-ai` is used in practice at ScoutinScience.
|
||||||
|
|
||||||
<div style="display: flex; justify-content: center;" markdown>
|
<div style="display: flex; justify-content: center;" markdown>
|
||||||
[:material-test-tube: Check out the code](/docs/examples/scibert){ .md-button .md-button--primary }
|
[:material-test-tube: Check out the code](https://github.com/schmelczer/great-ai/tree/main/docs/examples/scibert){ .md-button .md-button--primary }
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -403,7 +403,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -403,7 +403,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -403,7 +403,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
"\n",
|
"\n",
|
||||||
"@GreatAI.create\n",
|
"@GreatAI.create\n",
|
||||||
"@use_model(\"small-domain-prediction\", version=\"latest\")\n",
|
"@use_model(\"small-domain-prediction\", version=\"latest\")\n",
|
||||||
"@parameter(\"target_confidence\", validator=lambda c: 0 <= c <= 100)\n",
|
"@parameter(\"target_confidence\", validate=lambda c: 0 <= c <= 100)\n",
|
||||||
"def predict_domain(\n",
|
"def predict_domain(\n",
|
||||||
" text: str, model: Pipeline, target_confidence: int = 50\n",
|
" text: str, model: Pipeline, target_confidence: int = 50\n",
|
||||||
") -> MultiLabelClassificationOutput:\n",
|
") -> MultiLabelClassificationOutput:\n",
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -1892,7 +1892,7 @@ Licensed under the Apache License, Version 2.0.
|
||||||
|
|
||||||
<span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
<span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
||||||
<span class="nd">@use_model</span><span class="p">(</span><span class="s2">"small-domain-prediction"</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="s2">"latest"</span><span class="p">)</span>
|
<span class="nd">@use_model</span><span class="p">(</span><span class="s2">"small-domain-prediction"</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="s2">"latest"</span><span class="p">)</span>
|
||||||
<span class="nd">@parameter</span><span class="p">(</span><span class="s2">"target_confidence"</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="mi">0</span> <span class="o"><=</span> <span class="n">c</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">)</span>
|
<span class="nd">@parameter</span><span class="p">(</span><span class="s2">"target_confidence"</span><span class="p">,</span> <span class="n">validate</span><span class="o">=</span><span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="mi">0</span> <span class="o"><=</span> <span class="n">c</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">)</span>
|
||||||
<span class="k">def</span> <span class="nf">predict_domain</span><span class="p">(</span>
|
<span class="k">def</span> <span class="nf">predict_domain</span><span class="p">(</span>
|
||||||
<span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span> <span class="n">Pipeline</span><span class="p">,</span> <span class="n">target_confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span>
|
<span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span> <span class="n">Pipeline</span><span class="p">,</span> <span class="n">target_confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50</span>
|
||||||
<span class="p">)</span> <span class="o">-></span> <span class="n">MultiLabelClassificationOutput</span><span class="p">:</span>
|
<span class="p">)</span> <span class="o">-></span> <span class="n">MultiLabelClassificationOutput</span><span class="p">:</span>
|
||||||
|
|
@ -1962,7 +1962,7 @@ from great_ai import (
|
||||||
|
|
||||||
@GreatAI.create
|
@GreatAI.create
|
||||||
@use_model("small-domain-prediction", version="latest")
|
@use_model("small-domain-prediction", version="latest")
|
||||||
@parameter("target_confidence", validator=lambda c: 0 <= c <= 100)
|
@parameter("target_confidence", validate=lambda c: 0 <= c <= 100)
|
||||||
def predict_domain(
|
def predict_domain(
|
||||||
text: str, model: Pipeline, target_confidence: int = 50
|
text: str, model: Pipeline, target_confidence: int = 50
|
||||||
) -> MultiLabelClassificationOutput:
|
) -> MultiLabelClassificationOutput:
|
||||||
|
|
@ -2255,7 +2255,7 @@ class="
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
Last update:
|
Last update:
|
||||||
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 12, 2022</span>
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
|
||||||
|
|
||||||
|
|
||||||
</small>
|
</small>
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ results = [
|
||||||
|
|
||||||
print(results)
|
print(results)
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Only return the outputs so we don't clutter up the terminal.
|
1. Only return the outputs so we don't clutter up the terminal.
|
||||||
|
|
||||||
> Run this script as a regular Python script by executing `python3 client.py`.
|
> Run this script as a regular Python script by executing `python3 client.py`.
|
||||||
|
|
|
||||||
|
|
@ -410,7 +410,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -891,7 +891,7 @@
|
||||||
<p>Run this in development mode by executing <code>great-ai server.py</code> or <code>python3 -m great_ai server.py</code> if you're on Windows and <a href="/how-to-guides/install"><code>great-ai</code> is not in your <code>PATH</code></a>.</p>
|
<p>Run this in development mode by executing <code>great-ai server.py</code> or <code>python3 -m great_ai server.py</code> if you're on Windows and <a href="/how-to-guides/install"><code>great-ai</code> is not in your <code>PATH</code></a>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<h3 id="client">Client<a class="headerlink" href="#client" title="Permanent link">#</a></h3>
|
<h3 id="client">Client<a class="headerlink" href="#client" title="Permanent link">#</a></h3>
|
||||||
<p><div class="highlight"><span class="filename">client.py</span><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">call_remote_great_ai</span>
|
<div class="highlight"><span class="filename">client.py</span><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">call_remote_great_ai</span>
|
||||||
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
|
||||||
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Olivér'</span><span class="p">,</span> <span class="s1">'Balázs'</span><span class="p">,</span> <span class="s1">'András'</span><span class="p">]</span>
|
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Olivér'</span><span class="p">,</span> <span class="s1">'Balázs'</span><span class="p">,</span> <span class="s1">'András'</span><span class="p">]</span>
|
||||||
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>
|
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>
|
||||||
|
|
@ -907,7 +907,9 @@
|
||||||
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a>
|
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a>
|
||||||
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="nb">print</span><span class="p">(</span><span class="n">results</span><span class="p">)</span>
|
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="nb">print</span><span class="p">(</span><span class="n">results</span><span class="p">)</span>
|
||||||
</code></pre></div>
|
</code></pre></div>
|
||||||
1. Only return the outputs so we don't clutter up the terminal.</p>
|
<ol>
|
||||||
|
<li>Only return the outputs so we don't clutter up the terminal.</li>
|
||||||
|
</ol>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Run this script as a regular Python script by executing <code>python3 client.py</code>.</p>
|
<p>Run this script as a regular Python script by executing <code>python3 client.py</code>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
|
||||||
|
|
@ -498,7 +498,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -1009,13 +1009,13 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../use-service/" class="md-footer__link md-footer__link--next" aria-label="Next: How to deploy a GreatAI service" rel="next">
|
<a href="../use-service/" class="md-footer__link md-footer__link--next" aria-label="Next: How to perform prediction with GreatAI" rel="next">
|
||||||
<div class="md-footer__title">
|
<div class="md-footer__title">
|
||||||
<div class="md-ellipsis">
|
<div class="md-ellipsis">
|
||||||
<span class="md-footer__direction">
|
<span class="md-footer__direction">
|
||||||
Next
|
Next
|
||||||
</span>
|
</span>
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="md-footer__button md-icon">
|
<div class="md-footer__button md-icon">
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ assert type_safe_greeter('Andras').output == 'Hi Andras'
|
||||||
|
|
||||||
### Using `@parameter`
|
### Using `@parameter`
|
||||||
|
|
||||||
If you wish to turn of logging or specify custom validation for your parameters, you can use the [@parameter][great_ai.parameter] decorator.
|
If you wish to turn off logging or specify custom validation for your parameters, you can use the [@parameter][great_ai.parameter] decorator.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
By default, all parameters that are not affected by an explicit [@parameter][great_ai.parameter] or [@use_model][great_ai.use_model] are automatically decorated with [@parameter][great_ai.parameter] when [@GreatAI.create][great_ai.GreatAI.create] is called.
|
By default, all parameters that are not affected by an explicit [@parameter][great_ai.parameter] or [@use_model][great_ai.use_model] are automatically decorated with [@parameter][great_ai.parameter] when [@GreatAI.create][great_ai.GreatAI.create] is called.
|
||||||
|
|
@ -85,7 +85,7 @@ If you wish to turn of logging or specify custom validation for your parameters,
|
||||||
from great_ai import GreatAI, use_model
|
from great_ai import GreatAI, use_model
|
||||||
|
|
||||||
@GreatAI.create
|
@GreatAI.create
|
||||||
@use_model('name_of_my_model', version='latest')
|
@parameter('your_name', disable_logging=True)
|
||||||
def type_safe_greeter(your_name: str, model) -> str:
|
def type_safe_greeter(your_name: str, model) -> str:
|
||||||
return f'Hi {your_name}!'
|
return f'Hi {your_name}!'
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@ from great_ai import save_model, GreatAI, parameter, use_model, log_metric
|
||||||
save_model(4, 'secret-number') #(1)
|
save_model(4, 'secret-number') #(1)
|
||||||
|
|
||||||
@GreatAI.create
|
@GreatAI.create
|
||||||
@parameter('positive_number', validator=lambda n: n > 0, disable_logging=True)
|
@parameter('positive_number', validate=lambda n: n > 0, disable_logging=True)
|
||||||
@use_model('secret-number', version='latest', model_kwarg_name='secret')
|
@use_model('secret-number', version='latest', model_kwarg_name='secret')
|
||||||
def add_number(positive_number: int, secret: int) -> int:
|
def add_number(positive_number: int, secret: int) -> int:
|
||||||
log_metric(
|
log_metric(
|
||||||
|
|
|
||||||
|
|
@ -492,7 +492,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -928,7 +928,7 @@
|
||||||
<p>You must call <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> before <a class="autorefs autorefs-internal" href="../../reference/#great_ai.deploy.great_ai.GreatAI.create">@GreatAI.create</a>. Feel free to use <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> in other places of the codebase, it works equally well outside of GreatAI services. </p>
|
<p>You must call <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> before <a class="autorefs autorefs-internal" href="../../reference/#great_ai.deploy.great_ai.GreatAI.create">@GreatAI.create</a>. Feel free to use <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> in other places of the codebase, it works equally well outside of GreatAI services. </p>
|
||||||
</div>
|
</div>
|
||||||
<h3 id="using-parameter">Using <code>@parameter</code><a class="headerlink" href="#using-parameter" title="Permanent link">#</a></h3>
|
<h3 id="using-parameter">Using <code>@parameter</code><a class="headerlink" href="#using-parameter" title="Permanent link">#</a></h3>
|
||||||
<p>If you wish to turn of logging or specify custom validation for your parameters, you can use the <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> decorator.</p>
|
<p>If you wish to turn off logging or specify custom validation for your parameters, you can use the <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> decorator.</p>
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="admonition-title">Note</p>
|
<p class="admonition-title">Note</p>
|
||||||
<p>By default, all parameters that are not affected by an explicit <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> or <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> are automatically decorated with <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> when <a class="autorefs autorefs-internal" href="../../reference/#great_ai.deploy.great_ai.GreatAI.create">@GreatAI.create</a> is called.</p>
|
<p>By default, all parameters that are not affected by an explicit <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> or <a class="autorefs autorefs-internal" href="../../reference/#great_ai.use_model">@use_model</a> are automatically decorated with <a class="autorefs autorefs-internal" href="../../reference/#great_ai.parameter">@parameter</a> when <a class="autorefs autorefs-internal" href="../../reference/#great_ai.deploy.great_ai.GreatAI.create">@GreatAI.create</a> is called.</p>
|
||||||
|
|
@ -936,7 +936,7 @@
|
||||||
<div class="highlight"><span class="filename">greeter_with_validation.py</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">GreatAI</span><span class="p">,</span> <span class="n">use_model</span>
|
<div class="highlight"><span class="filename">greeter_with_validation.py</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">GreatAI</span><span class="p">,</span> <span class="n">use_model</span>
|
||||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>
|
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>
|
||||||
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
||||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="nd">@use_model</span><span class="p">(</span><span class="s1">'name_of_my_model'</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="s1">'latest'</span><span class="p">)</span>
|
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="nd">@parameter</span><span class="p">(</span><span class="s1">'your_name'</span><span class="p">,</span> <span class="n">disable_logging</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="k">def</span> <span class="nf">type_safe_greeter</span><span class="p">(</span><span class="n">your_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="k">def</span> <span class="nf">type_safe_greeter</span><span class="p">(</span><span class="n">your_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||||
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="k">return</span> <span class="sa">f</span><span class="s1">'Hi </span><span class="si">{</span><span class="n">your_name</span><span class="si">}</span><span class="s1">!'</span>
|
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="k">return</span> <span class="sa">f</span><span class="s1">'Hi </span><span class="si">{</span><span class="n">your_name</span><span class="si">}</span><span class="s1">!'</span>
|
||||||
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a>
|
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a>
|
||||||
|
|
@ -953,7 +953,7 @@
|
||||||
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="n">save_model</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'secret-number'</span><span class="p">)</span> <span class="c1">#(1)</span>
|
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="n">save_model</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'secret-number'</span><span class="p">)</span> <span class="c1">#(1)</span>
|
||||||
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>
|
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>
|
||||||
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="nd">@GreatAI</span><span class="o">.</span><span class="n">create</span>
|
||||||
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="nd">@parameter</span><span class="p">(</span><span class="s1">'positive_number'</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">></span> <span class="mi">0</span><span class="p">,</span> <span class="n">disable_logging</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="nd">@parameter</span><span class="p">(</span><span class="s1">'positive_number'</span><span class="p">,</span> <span class="n">validate</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">></span> <span class="mi">0</span><span class="p">,</span> <span class="n">disable_logging</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||||
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="nd">@use_model</span><span class="p">(</span><span class="s1">'secret-number'</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="s1">'latest'</span><span class="p">,</span> <span class="n">model_kwarg_name</span><span class="o">=</span><span class="s1">'secret'</span><span class="p">)</span>
|
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="nd">@use_model</span><span class="p">(</span><span class="s1">'secret-number'</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="s1">'latest'</span><span class="p">,</span> <span class="n">model_kwarg_name</span><span class="o">=</span><span class="s1">'secret'</span><span class="p">)</span>
|
||||||
<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="k">def</span> <span class="nf">add_number</span><span class="p">(</span><span class="n">positive_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">secret</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="k">def</span> <span class="nf">add_number</span><span class="p">(</span><span class="n">positive_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">secret</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||||
<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a> <span class="n">log_metric</span><span class="p">(</span>
|
<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a> <span class="n">log_metric</span><span class="p">(</span>
|
||||||
|
|
@ -973,7 +973,7 @@
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
Last update:
|
Last update:
|
||||||
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 12, 2022</span>
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
|
||||||
|
|
||||||
|
|
||||||
</small>
|
</small>
|
||||||
|
|
|
||||||
|
|
@ -410,7 +410,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -900,7 +900,7 @@
|
||||||
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
||||||
|
|
||||||
|
|
||||||
<a href="../use-service/" class="md-footer__link md-footer__link--prev" aria-label="Previous: How to deploy a GreatAI service" rel="prev">
|
<a href="../use-service/" class="md-footer__link md-footer__link--prev" aria-label="Previous: How to perform prediction with GreatAI" rel="prev">
|
||||||
<div class="md-footer__button md-icon">
|
<div class="md-footer__button md-icon">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -909,7 +909,7 @@
|
||||||
<span class="md-footer__direction">
|
<span class="md-footer__direction">
|
||||||
Previous
|
Previous
|
||||||
</span>
|
</span>
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
||||||
|
|
@ -458,7 +458,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -410,7 +410,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../use-service/" class="md-nav__link">
|
<a href="../use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>How to deploy a GreatAI service - GreatAI documentation</title>
|
<title>How to perform prediction with GreatAI - GreatAI documentation</title>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
<div data-md-component="skip">
|
<div data-md-component="skip">
|
||||||
|
|
||||||
|
|
||||||
<a href="#how-to-deploy-a-greatai-service" class="md-skip">
|
<a href="#how-to-perform-prediction-with-greatai" class="md-skip">
|
||||||
Skip to content
|
Skip to content
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
<div class="md-header__topic" data-md-component="header-topic">
|
<div class="md-header__topic" data-md-component="header-topic">
|
||||||
<span class="md-ellipsis">
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -419,12 +419,12 @@
|
||||||
|
|
||||||
|
|
||||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
<span class="md-nav__icon md-icon"></span>
|
<span class="md-nav__icon md-icon"></span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<a href="./" class="md-nav__link md-nav__link--active">
|
<a href="./" class="md-nav__link md-nav__link--active">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -911,7 +911,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h1 id="how-to-deploy-a-greatai-service">How to deploy a GreatAI service<a class="headerlink" href="#how-to-deploy-a-greatai-service" title="Permanent link">#</a></h1>
|
<h1 id="how-to-perform-prediction-with-greatai">How to perform prediction with GreatAI<a class="headerlink" href="#how-to-perform-prediction-with-greatai" title="Permanent link">#</a></h1>
|
||||||
<p>After <a href="/how-to-guides/create-service">creating a GreatAI service</a> by wrapping your prediction function, and optionally <a href="/how-to-guides/configure-service">configuring it</a>, it's time to do some prediction.</p>
|
<p>After <a href="/how-to-guides/create-service">creating a GreatAI service</a> by wrapping your prediction function, and optionally <a href="/how-to-guides/configure-service">configuring it</a>, it's time to do some prediction.</p>
|
||||||
<p>Let's take the following example:</p>
|
<p>Let's take the following example:</p>
|
||||||
<div class="highlight"><span class="filename">greeter.py</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">GreatAI</span>
|
<div class="highlight"><span class="filename">greeter.py</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">from</span> <span class="nn">great_ai</span> <span class="kn">import</span> <span class="n">GreatAI</span>
|
||||||
|
|
@ -1017,7 +1017,7 @@
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
Last update:
|
Last update:
|
||||||
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 12, 2022</span>
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
|
||||||
|
|
||||||
|
|
||||||
</small>
|
</small>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# How to deploy a GreatAI service
|
# How to perform prediction with GreatAI
|
||||||
|
|
||||||
After [creating a GreatAI service](/how-to-guides/create-service) by wrapping your prediction function, and optionally [configuring it](/how-to-guides/configure-service), it's time to do some prediction.
|
After [creating a GreatAI service](/how-to-guides/create-service) by wrapping your prediction function, and optionally [configuring it](/how-to-guides/configure-service), it's time to do some prediction.
|
||||||
|
|
||||||
|
|
|
||||||
10
index.html
10
index.html
|
|
@ -480,7 +480,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="how-to-guides/use-service/" class="md-nav__link">
|
<a href="how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -874,12 +874,12 @@
|
||||||
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">#</a></h2>
|
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">#</a></h2>
|
||||||
<ul class="task-list">
|
<ul class="task-list">
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Save prediction traces of each prediction including arguments and model versions</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Save prediction traces of each prediction including arguments and model versions</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Save feedback and merge it into a ground-truth database <em><img alt="➡" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/27a1.svg" title=":arrow_right:" /> quasi-shadow deployment</em></li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Save feedback and merge it into a ground-truth database</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Version and store models and data on shared infrastructure <em>(MongoDB GridFS, S3-compatible storage, shared local-volume)</em></li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Version and store models and data on shared infrastructure <em>(MongoDB GridFS, S3-compatible storage, shared local-volume)</em></li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Automatically scaffolded custom REST API (and OpenAPI schema) for easy integration</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Automatically scaffolded custom REST API (and OpenAPI schema) for easy integration</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Input validation</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Input validation</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Sensible cache-policy</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Sensible cache-policy</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Seamless support for both synchronous and <code>async</code> inference methods</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Seamless support for both synchronous and asynchronous inference methods</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Easy integration with remote GreatAI instances</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Easy integration with remote GreatAI instances</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Built-in parallelisation (with support for multiprocessing, async, and mixed modes) for batch processing</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Built-in parallelisation (with support for multiprocessing, async, and mixed modes) for batch processing</li>
|
||||||
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Well-tested utilities for common NLP tasks (cleaning, language-tagging, sentence-segmentation, etc.)</li>
|
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled checked/><span class="task-list-indicator"></span></label> Well-tested utilities for common NLP tasks (cleaning, language-tagging, sentence-segmentation, etc.)</li>
|
||||||
|
|
@ -921,7 +921,7 @@
|
||||||
</ol>
|
</ol>
|
||||||
<details class="note">
|
<details class="note">
|
||||||
<summary>Note</summary>
|
<summary>Note</summary>
|
||||||
<p>In practice, <code>greeter</code> could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either ways, it is <a href="https://digital-strategy.ec.europa.eu/en/library/ethics-guidelines-trustworthy-ai" target="_blank">imperative to have continuos oversight</a> of the services you provide and data you process especially in the context of AI/ML applications.</p>
|
<p>In practice, <code>greeter</code> could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either way, it is <a href="https://digital-strategy.ec.europa.eu/en/library/ethics-guidelines-trustworthy-ai" target="_blank">imperative to have continuous oversight</a> of the services you provide and data you process especially in the context of AI/ML applications.</p>
|
||||||
</details>
|
</details>
|
||||||
<div class="highlight"><span class="filename">terminal</span><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>great-ai demo.py
|
<div class="highlight"><span class="filename">terminal</span><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>great-ai demo.py
|
||||||
</code></pre></div>
|
</code></pre></div>
|
||||||
|
|
@ -944,7 +944,7 @@
|
||||||
<li><strong>T</strong>rustworthy: deploy models that you and society can confidently trust</li>
|
<li><strong>T</strong>rustworthy: deploy models that you and society can confidently trust</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="why-greatai">Why GreatAI?<a class="headerlink" href="#why-greatai" title="Permanent link">#</a></h2>
|
<h2 id="why-greatai">Why GreatAI?<a class="headerlink" href="#why-greatai" title="Permanent link">#</a></h2>
|
||||||
<p>There are other, existing solutions aiming to facilitate this phase. <a href="https://aws.amazon.com/sagemaker" target="_blank">Amazon SageMaker</a> and <a href="https://www.seldon.io/solutions/open-source-projects/core" target="_blank">Seldon Core</a> provide the most comprehensive suite of features. If you have the opportunity use those, do that because they're great.</p>
|
<p>There are other, existing solutions aiming to facilitate this phase. <a href="https://aws.amazon.com/sagemaker" target="_blank">Amazon SageMaker</a> and <a href="https://www.seldon.io/solutions/open-source-projects/core" target="_blank">Seldon Core</a> provide the most comprehensive suite of features. If you have the opportunity to use them, do that because they're great.</p>
|
||||||
<p>However, research indicates that professionals rarely use them. This may be due to their inherent setup and operating complexity. <mark>GreatAI is designed to be as simple to use as possible.</mark> Its clear, high-level API and sensible default configuration makes it extremely easy to start using. Despite its relative simplicity over Seldon Core, it still implements many of the <a href="https://se-ml.github.io" target="_blank">SE4ML best-practices</a>, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.</p>
|
<p>However, research indicates that professionals rarely use them. This may be due to their inherent setup and operating complexity. <mark>GreatAI is designed to be as simple to use as possible.</mark> Its clear, high-level API and sensible default configuration makes it extremely easy to start using. Despite its relative simplicity over Seldon Core, it still implements many of the <a href="https://se-ml.github.io" target="_blank">SE4ML best-practices</a>, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.</p>
|
||||||
<div style="display: flex; justify-content: space-evenly; flex-wrap: wrap;">
|
<div style="display: flex; justify-content: space-evenly; flex-wrap: wrap;">
|
||||||
<p><a class="md-button md-button--primary" href="https://pypi.org/project/great-ai"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/></svg></span> Find it on PyPI</a></p>
|
<p><a class="md-button md-button--primary" href="https://pypi.org/project/great-ai"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/></svg></span> Find it on PyPI</a></p>
|
||||||
|
|
|
||||||
8
index.md
8
index.md
|
|
@ -25,12 +25,12 @@ Applying AI is becoming increasingly easier but many case studies have shown tha
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- [x] Save prediction traces of each prediction including arguments and model versions
|
- [x] Save prediction traces of each prediction including arguments and model versions
|
||||||
- [x] Save feedback and merge it into a ground-truth database *:arrow_right: quasi-shadow deployment*
|
- [x] Save feedback and merge it into a ground-truth database
|
||||||
- [x] Version and store models and data on shared infrastructure *(MongoDB GridFS, S3-compatible storage, shared local-volume)*
|
- [x] Version and store models and data on shared infrastructure *(MongoDB GridFS, S3-compatible storage, shared local-volume)*
|
||||||
- [x] Automatically scaffolded custom REST API (and OpenAPI schema) for easy integration
|
- [x] Automatically scaffolded custom REST API (and OpenAPI schema) for easy integration
|
||||||
- [x] Input validation
|
- [x] Input validation
|
||||||
- [x] Sensible cache-policy
|
- [x] Sensible cache-policy
|
||||||
- [x] Seamless support for both synchronous and `async` inference methods
|
- [x] Seamless support for both synchronous and asynchronous inference methods
|
||||||
- [x] Easy integration with remote GreatAI instances
|
- [x] Easy integration with remote GreatAI instances
|
||||||
- [x] Built-in parallelisation (with support for multiprocessing, async, and mixed modes) for batch processing
|
- [x] Built-in parallelisation (with support for multiprocessing, async, and mixed modes) for batch processing
|
||||||
- [x] Well-tested utilities for common NLP tasks (cleaning, language-tagging, sentence-segmentation, etc.)
|
- [x] Well-tested utilities for common NLP tasks (cleaning, language-tagging, sentence-segmentation, etc.)
|
||||||
|
|
@ -70,7 +70,7 @@ def greeter(name: str) -> str: #(2)
|
||||||
2. [Typing functions](https://docs.python.org/3/library/typing.html){ target=_blank } is recommended in general, however, not required for GreatAI to work.
|
2. [Typing functions](https://docs.python.org/3/library/typing.html){ target=_blank } is recommended in general, however, not required for GreatAI to work.
|
||||||
|
|
||||||
??? note
|
??? note
|
||||||
In practice, `greeter` could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either ways, it is [imperative to have continuos oversight](https://digital-strategy.ec.europa.eu/en/library/ethics-guidelines-trustworthy-ai){ target=_blank } of the services you provide and data you process especially in the context of AI/ML applications.
|
In practice, `greeter` could be an inference function of some AI/ML application. But it could also just wrap a black-box solution of some SaaS. Either way, it is [imperative to have continuous oversight](https://digital-strategy.ec.europa.eu/en/library/ethics-guidelines-trustworthy-ai){ target=_blank } of the services you provide and data you process especially in the context of AI/ML applications.
|
||||||
|
|
||||||
```sh title="terminal"
|
```sh title="terminal"
|
||||||
great-ai demo.py
|
great-ai demo.py
|
||||||
|
|
@ -96,7 +96,7 @@ GreatAI fits between the prototype and deployment phases of your (or your organi
|
||||||
|
|
||||||
## Why GreatAI?
|
## Why GreatAI?
|
||||||
|
|
||||||
There are other, existing solutions aiming to facilitate this phase. [Amazon SageMaker](https://aws.amazon.com/sagemaker){ target=_blank } and [Seldon Core](https://www.seldon.io/solutions/open-source-projects/core){ target=_blank } provide the most comprehensive suite of features. If you have the opportunity use those, do that because they're great.
|
There are other, existing solutions aiming to facilitate this phase. [Amazon SageMaker](https://aws.amazon.com/sagemaker){ target=_blank } and [Seldon Core](https://www.seldon.io/solutions/open-source-projects/core){ target=_blank } provide the most comprehensive suite of features. If you have the opportunity to use them, do that because they're great.
|
||||||
|
|
||||||
However, research indicates that professionals rarely use them. This may be due to their inherent setup and operating complexity. ==GreatAI is designed to be as simple to use as possible.== Its clear, high-level API and sensible default configuration makes it extremely easy to start using. Despite its relative simplicity over Seldon Core, it still implements many of the [SE4ML best-practices](https://se-ml.github.io){ target=_blank }, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.
|
However, research indicates that professionals rarely use them. This may be due to their inherent setup and operating complexity. ==GreatAI is designed to be as simple to use as possible.== Its clear, high-level API and sensible default configuration makes it extremely easy to start using. Despite its relative simplicity over Seldon Core, it still implements many of the [SE4ML best-practices](https://se-ml.github.io){ target=_blank }, and thus, can meaningfully improve your deployment without requiring prohibitively large effort.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -2847,7 +2847,7 @@ Returns:
|
||||||
|
|
||||||
|
|
||||||
<h3 id="great_ai.parameter" class="doc doc-heading">
|
<h3 id="great_ai.parameter" class="doc doc-heading">
|
||||||
<code class="highlight language-python"><span class="n">parameter</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="k">lambda</span> <span class="n">_</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="n">disable_logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
<code class="highlight language-python"><span class="n">parameter</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">validate</span><span class="o">=</span><span class="k">lambda</span> <span class="n">_</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="n">disable_logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
||||||
|
|
||||||
<a href="#great_ai.parameter" class="headerlink" title="Permanent link">#</a></h3>
|
<a href="#great_ai.parameter" class="headerlink" title="Permanent link">#</a></h3>
|
||||||
|
|
||||||
|
|
@ -2867,7 +2867,7 @@ Returns:
|
||||||
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="o">...</span>
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="o">...</span>
|
||||||
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="gr">TypeError</span>: <span class="n">type of a must be int; got str instead</span>
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="gr">TypeError</span>: <span class="n">type of a must be int; got str instead</span>
|
||||||
</code></pre></div>
|
</code></pre></div>
|
||||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">>>> </span><span class="nd">@parameter</span><span class="p">(</span><span class="s1">'positive_a'</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="k">lambda</span> <span class="n">v</span><span class="p">:</span> <span class="n">v</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span>
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">>>> </span><span class="nd">@parameter</span><span class="p">(</span><span class="s1">'positive_a'</span><span class="p">,</span> <span class="n">validate</span><span class="o">=</span><span class="k">lambda</span> <span class="n">v</span><span class="p">:</span> <span class="n">v</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="gp">... </span><span class="k">def</span> <span class="nf">my_function</span><span class="p">(</span><span class="n">positive_a</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="gp">... </span><span class="k">def</span> <span class="nf">my_function</span><span class="p">(</span><span class="n">positive_a</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
|
||||||
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">... </span> <span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">2</span>
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">... </span> <span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">2</span>
|
||||||
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="gp">>>> </span><span class="n">my_function</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="gp">>>> </span><span class="n">my_function</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||||
|
|
@ -2898,11 +2898,12 @@ Returns:
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>validator</code></td>
|
<td><code>validate</code></td>
|
||||||
<td>
|
<td>
|
||||||
<code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], bool]</code>
|
<code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], bool]</code>
|
||||||
</td>
|
</td>
|
||||||
<td><p>Optional validator to run against the concrete argument. ArgumentValidationError is thrown when the return value is False.</p></td>
|
<td><p>Optional validate to run against the concrete argument.
|
||||||
|
ArgumentValidationError is thrown when the return value is False.</p></td>
|
||||||
<td>
|
<td>
|
||||||
<code>lambda _: True</code>
|
<code>lambda _: True</code>
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -3006,10 +3007,13 @@ Returns:
|
||||||
<span class="normal"><a href="#__codelineno-0-77">77</a></span>
|
<span class="normal"><a href="#__codelineno-0-77">77</a></span>
|
||||||
<span class="normal"><a href="#__codelineno-0-78">78</a></span>
|
<span class="normal"><a href="#__codelineno-0-78">78</a></span>
|
||||||
<span class="normal"><a href="#__codelineno-0-79">79</a></span>
|
<span class="normal"><a href="#__codelineno-0-79">79</a></span>
|
||||||
<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">def</span> <span class="nf">parameter</span><span class="p">(</span>
|
<span class="normal"><a href="#__codelineno-0-80">80</a></span>
|
||||||
|
<span class="normal"><a href="#__codelineno-0-81">81</a></span>
|
||||||
|
<span class="normal"><a href="#__codelineno-0-82">82</a></span>
|
||||||
|
<span class="normal"><a href="#__codelineno-0-83">83</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">def</span> <span class="nf">parameter</span><span class="p">(</span>
|
||||||
<a id="__codelineno-0-15" name="__codelineno-0-15"></a> <span class="n">parameter_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
<a id="__codelineno-0-15" name="__codelineno-0-15"></a> <span class="n">parameter_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||||
<a id="__codelineno-0-16" name="__codelineno-0-16"></a> <span class="o">*</span><span class="p">,</span>
|
<a id="__codelineno-0-16" name="__codelineno-0-16"></a> <span class="o">*</span><span class="p">,</span>
|
||||||
<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="n">validator</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="n">Any</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="n">validate</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="n">Any</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||||
<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">disable_logging</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">disable_logging</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||||
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Callable</span><span class="p">[[</span><span class="n">F</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span>
|
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Callable</span><span class="p">[[</span><span class="n">F</span><span class="p">],</span> <span class="n">F</span><span class="p">]:</span>
|
||||||
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="sd">"""Control the validation and logging of function parameters.</span>
|
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="sd">"""Control the validation and logging of function parameters.</span>
|
||||||
|
|
@ -3025,7 +3029,7 @@ Returns:
|
||||||
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> ...</span>
|
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> ...</span>
|
||||||
<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> TypeError: type of a must be int; got str instead</span>
|
<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> TypeError: type of a must be int; got str instead</span>
|
||||||
<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
|
<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
|
||||||
<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> >>> @parameter('positive_a', validator=lambda v: v > 0)</span>
|
<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> >>> @parameter('positive_a', validate=lambda v: v > 0)</span>
|
||||||
<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> ... def my_function(positive_a: int):</span>
|
<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> ... def my_function(positive_a: int):</span>
|
||||||
<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> ... return a + 2</span>
|
<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> ... return a + 2</span>
|
||||||
<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> >>> my_function(-1)</span>
|
<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> >>> my_function(-1)</span>
|
||||||
|
|
@ -3035,44 +3039,47 @@ Returns:
|
||||||
<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
|
<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
|
||||||
<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
|
<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
|
||||||
<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> parameter_name: Name of parameter to consider</span>
|
<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> parameter_name: Name of parameter to consider</span>
|
||||||
<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> validator: Optional validator to run against the concrete argument. ArgumentValidationError is thrown when the return value is False.</span>
|
<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> validate: Optional validate to run against the concrete argument.</span>
|
||||||
<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> disable_logging: Do not save the value in any active TracingContext.</span>
|
<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> ArgumentValidationError is thrown when the return value is False.</span>
|
||||||
<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Returns:</span>
|
<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> disable_logging: Do not save the value in any active TracingContext.</span>
|
||||||
<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> A decorator for argument validation.</span>
|
<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Returns:</span>
|
||||||
<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> """</span>
|
<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> A decorator for argument validation.</span>
|
||||||
<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
|
<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> """</span>
|
||||||
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">def</span> <span class="nf">decorator</span><span class="p">(</span><span class="n">func</span><span class="p">:</span> <span class="n">F</span><span class="p">)</span> <span class="o">-></span> <span class="n">F</span><span class="p">:</span>
|
<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
|
||||||
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">get_function_metadata_store</span><span class="p">(</span><span class="n">func</span><span class="p">)</span><span class="o">.</span><span class="n">input_parameter_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">def</span> <span class="nf">decorator</span><span class="p">(</span><span class="n">func</span><span class="p">:</span> <span class="n">F</span><span class="p">)</span> <span class="o">-></span> <span class="n">F</span><span class="p">:</span>
|
||||||
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">assert_function_is_not_finalised</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
|
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">get_function_metadata_store</span><span class="p">(</span><span class="n">func</span><span class="p">)</span><span class="o">.</span><span class="n">input_parameter_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-52" name="__codelineno-0-52"></a>
|
<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">assert_function_is_not_finalised</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">actual_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"arg:</span><span class="si">{</span><span class="n">parameter_name</span><span class="si">}</span><span class="s2">"</span>
|
<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
|
||||||
<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
|
<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">actual_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"arg:</span><span class="si">{</span><span class="n">parameter_name</span><span class="si">}</span><span class="s2">"</span>
|
||||||
<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
|
<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
|
||||||
<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">])</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
|
<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">arguments</span> <span class="o">=</span> <span class="n">get_arguments</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
|
<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">])</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
|
||||||
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">argument</span> <span class="o">=</span> <span class="n">arguments</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">arguments</span> <span class="o">=</span> <span class="n">get_arguments</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
|
<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">argument</span> <span class="o">=</span> <span class="n">arguments</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">expected_type</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="vm">__annotations__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
|
||||||
<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
|
<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">expected_type</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="vm">__annotations__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">if</span> <span class="n">expected_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
|
||||||
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">check_type</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">,</span> <span class="n">argument</span><span class="p">,</span> <span class="n">expected_type</span><span class="p">)</span>
|
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">if</span> <span class="n">expected_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||||
<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
|
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">check_type</span><span class="p">(</span><span class="n">parameter_name</span><span class="p">,</span> <span class="n">argument</span><span class="p">,</span> <span class="n">expected_type</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">argument</span><span class="p">):</span>
|
<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
|
||||||
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">raise</span> <span class="n">ArgumentValidationError</span><span class="p">(</span>
|
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">validate</span><span class="p">(</span><span class="n">argument</span><span class="p">):</span>
|
||||||
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="sa">f</span><span class="s2">"Argument </span><span class="si">{</span><span class="n">parameter_name</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">func</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> did not pass validation"</span>
|
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">raise</span> <span class="n">ArgumentValidationError</span><span class="p">(</span>
|
||||||
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span>
|
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="sa">f</span><span class="s2">"""Argument </span><span class="si">{</span><span class="n">parameter_name</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span>
|
||||||
<a id="__codelineno-0-69" name="__codelineno-0-69"></a>
|
<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">func</span><span class="o">.</span><span class="vm">__name__</span>
|
||||||
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">TracingContext</span><span class="o">.</span><span class="n">get_current_tracing_context</span><span class="p">()</span>
|
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="si">}</span><span class="s2"> did not pass validation"""</span>
|
||||||
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">if</span> <span class="n">context</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">disable_logging</span><span class="p">:</span>
|
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="p">)</span>
|
||||||
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">context</span><span class="o">.</span><span class="n">log_value</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">actual_name</span><span class="si">}</span><span class="s2">:value"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">argument</span><span class="p">)</span>
|
<a id="__codelineno-0-72" name="__codelineno-0-72"></a>
|
||||||
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">argument</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">context</span> <span class="o">=</span> <span class="n">TracingContext</span><span class="o">.</span><span class="n">get_current_tracing_context</span><span class="p">()</span>
|
||||||
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">context</span><span class="o">.</span><span class="n">log_value</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">actual_name</span><span class="si">}</span><span class="s2">:length"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">argument</span><span class="p">))</span>
|
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">if</span> <span class="n">context</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">disable_logging</span><span class="p">:</span>
|
||||||
<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
|
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">context</span><span class="o">.</span><span class="n">log_value</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">actual_name</span><span class="si">}</span><span class="s2">:value"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">argument</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">argument</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||||
<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
|
<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">context</span><span class="o">.</span><span class="n">log_value</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">actual_name</span><span class="si">}</span><span class="s2">:length"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">argument</span><span class="p">))</span>
|
||||||
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">F</span><span class="p">,</span> <span class="n">wrapper</span><span class="p">)</span>
|
<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
|
||||||
<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
|
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">return</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||||
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="n">decorator</span>
|
<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
|
||||||
|
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">F</span><span class="p">,</span> <span class="n">wrapper</span><span class="p">)</span>
|
||||||
|
<a id="__codelineno-0-82" name="__codelineno-0-82"></a>
|
||||||
|
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="k">return</span> <span class="n">decorator</span>
|
||||||
</code></pre></div></td></tr></table></div>
|
</code></pre></div></td></tr></table></div>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -408,7 +408,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
BIN
sitemap.xml.gz
BIN
sitemap.xml.gz
Binary file not shown.
|
|
@ -139,7 +139,7 @@
|
||||||
"source": [
|
"source": [
|
||||||
"Congrats, you've just created your first GreatAI service! 🎉\n",
|
"Congrats, you've just created your first GreatAI service! 🎉\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Now that you've made sure your application is hardened enough for the intended use case, it is time to deploy it. The responsibilities of GreatAI end when it wraps your inference function and model into a production-ready service. You're given the freedom and responsibility to deploy this service. Fortunately, you (or your organisation) probably already has an established routine for deploying services.\n",
|
"Now that you've made sure your application is hardened enough for the intended use case, it is time to deploy it. The responsibilities of GreatAI end when it wraps your inference function and model into a production-ready service. You're given the freedom and responsibility to deploy this service. Fortunately, you (or your organisation) probably already have an established routine for deploying services.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"There are three main approaches to deploy a GreatAI service: For more info about them, check out [the deployment how-to](/how-to-guides/use-service).\n",
|
"There are three main approaches to deploy a GreatAI service: For more info about them, check out [the deployment how-to](/how-to-guides/use-service).\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -2091,7 +2091,7 @@ def predict_domain(sentence, model):
|
||||||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown">
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown">
|
||||||
<p>Congrats, you've just created your first GreatAI service! 🎉</p>
|
<p>Congrats, you've just created your first GreatAI service! 🎉</p>
|
||||||
<p>Now that you've made sure your application is hardened enough for the intended use case, it is time to deploy it. The responsibilities of GreatAI end when it wraps your inference function and model into a production-ready service. You're given the freedom and responsibility to deploy this service. Fortunately, you (or your organisation) probably already has an established routine for deploying services.</p>
|
<p>Now that you've made sure your application is hardened enough for the intended use case, it is time to deploy it. The responsibilities of GreatAI end when it wraps your inference function and model into a production-ready service. You're given the freedom and responsibility to deploy this service. Fortunately, you (or your organisation) probably already have an established routine for deploying services.</p>
|
||||||
<p>There are three main approaches to deploy a GreatAI service: For more info about them, check out <a href="/how-to-guides/use-service">the deployment how-to</a>.</p>
|
<p>There are three main approaches to deploy a GreatAI service: For more info about them, check out <a href="/how-to-guides/use-service">the deployment how-to</a>.</p>
|
||||||
<p>For more thorough examples, see the <a href="/examples/simple/data">examples page</a>.</p>
|
<p>For more thorough examples, see the <a href="/examples/simple/data">examples page</a>.</p>
|
||||||
<h3 id="go-back-to-the-summary"><a href="/tutorial/#summary">Go back to the summary</a><a class="anchor-link" href="#go-back-to-the-summary">¶</a></h3>
|
<h3 id="go-back-to-the-summary"><a href="/tutorial/#summary">Go back to the summary</a><a class="anchor-link" href="#go-back-to-the-summary">¶</a></h3>
|
||||||
|
|
@ -2108,7 +2108,7 @@ def predict_domain(sentence, model):
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
Last update:
|
Last update:
|
||||||
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 12, 2022</span>
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
|
||||||
|
|
||||||
|
|
||||||
</small>
|
</small>
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,7 @@
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
<a href="../../how-to-guides/use-service/" class="md-nav__link">
|
||||||
How to deploy a GreatAI service
|
How to perform prediction with GreatAI
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -1962,7 +1962,7 @@ def preprocess(line):
|
||||||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||||||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown">
|
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown">
|
||||||
<p>Now, we can load the dataset and extract the <em>training</em> samples from it. Since we're impatient, we can do it in parallel using the <a href="/reference/utilities/#great_ai.utilities.simple_parallel_map"><code>simple_parallel_map</code></a> function.</p>
|
<p>Now, we can load the dataset and extract the <em>training</em> samples from it. Since we're impatient, we can do it in parallel using the <a href="/reference/utilities/#great_ai.utilities.simple_parallel_map"><code>simple_parallel_map</code></a> function.</p>
|
||||||
<blockquote><p>Open files in Python are iterable, with a line being return (in text mode) with each iteration.</p>
|
<blockquote><p>Open files in Python are iterable: in text mode, each iteration returns the next line.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -2484,7 +2484,7 @@ save_model(model, key="my-domain-predictor")</div>
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
Last update:
|
Last update:
|
||||||
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 12, 2022</span>
|
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 13, 2022</span>
|
||||||
|
|
||||||
|
|
||||||
</small>
|
</small>
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
"source": [
|
"source": [
|
||||||
"Now, we can load the dataset and extract the *training* samples from it. Since we're impatient, we can do it in parallel using the [`simple_parallel_map`](/reference/utilities/#great_ai.utilities.simple_parallel_map) function.\n",
|
"Now, we can load the dataset and extract the *training* samples from it. Since we're impatient, we can do it in parallel using the [`simple_parallel_map`](/reference/utilities/#great_ai.utilities.simple_parallel_map) function.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"> Open files in Python are iterable, with a line being return (in text mode) with each iteration."
|
"> Open files in Python are iterable: in text mode, each iteration returns the next line."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue