From e147d771f3c5cc74971fd168ca4a7da555719836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:47:28 +0200 Subject: [PATCH 01/20] Remove Lark grammars --- outlines/__init__.py | 2 - outlines/grammars.py | 14 ------ outlines/grammars/arithmetic.lark | 18 ------- outlines/grammars/common.lark | 80 ------------------------------- outlines/grammars/json.lark | 19 -------- tests/test_grammars.py | 31 ------------ 6 files changed, 164 deletions(-) delete mode 100644 outlines/grammars.py delete mode 100644 outlines/grammars/arithmetic.lark delete mode 100644 outlines/grammars/common.lark delete mode 100644 outlines/grammars/json.lark delete mode 100644 tests/test_grammars.py diff --git a/outlines/__init__.py b/outlines/__init__.py index 307d2ba6..d41000bd 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -1,6 +1,5 @@ """Outlines is a Generative Model Programming Framework.""" import outlines.generate -import outlines.grammars import outlines.models import outlines.processors import outlines.types @@ -16,5 +15,4 @@ "Function", "prompt", "vectorize", - "grammars", ] diff --git a/outlines/grammars.py b/outlines/grammars.py deleted file mode 100644 index f0c12296..00000000 --- a/outlines/grammars.py +++ /dev/null @@ -1,14 +0,0 @@ -from pathlib import Path - -GRAMMAR_PATH = Path(__file__).parent / "grammars" - - -def read_grammar(grammar_file_name, base_grammar_path=GRAMMAR_PATH): - """Read grammar file from default grammar path""" - full_path = base_grammar_path / grammar_file_name - with open(full_path) as file: - return file.read() - - -arithmetic = read_grammar("arithmetic.lark") -json = read_grammar("json.lark") diff --git a/outlines/grammars/arithmetic.lark b/outlines/grammars/arithmetic.lark deleted file mode 100644 index 2332650c..00000000 --- a/outlines/grammars/arithmetic.lark +++ /dev/null @@ -1,18 +0,0 @@ -?start: sum - -?sum: product -| sum "+" product -> add -| sum "-" product -> sub - -?product: atom -| product "*" atom -> mul -| product "/" atom -> div - -?atom: NUMBER -> number -| "-" atom -> neg -| "(" sum ")" - -%import common.NUMBER -%import common.WS_INLINE - -%ignore WS_INLINE diff --git a/outlines/grammars/common.lark b/outlines/grammars/common.lark deleted file mode 100644 index 801c27e9..00000000 --- a/outlines/grammars/common.lark +++ /dev/null @@ -1,80 +0,0 @@ -// Adapted from https://github.com/lark-parser/lark/blob/master/lark/grammars/common.lark - -// Lark License: -// Copyright Β© 2017 Erez Shinan -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -// Basic terminals for common use - - -// -// Numbers -// - -DIGIT: "0".."9" -HEXDIGIT: "a".."f"|"A".."F"|DIGIT - -INT: DIGIT+ -SIGNED_INT: ["+"|"-"] INT -DECIMAL: INT "." INT? | "." INT - -// float = /-?\d+(\.\d+)?([eE][+-]?\d+)?/ -_EXP: ("e"|"E") SIGNED_INT -FLOAT: INT _EXP | DECIMAL _EXP? -SIGNED_FLOAT: ["+"|"-"] FLOAT - -NUMBER: FLOAT | INT -SIGNED_NUMBER: ["+"|"-"] NUMBER - -// -// TODO: Working escaped_string -// -UNESCAPED_STRING: /\"[^"]*\"/ - - - -// -// Names (Variables) -// -LCASE_LETTER: "a".."z" -UCASE_LETTER: "A".."Z" - -LETTER: UCASE_LETTER | LCASE_LETTER -WORD: LETTER+ - -CNAME: ("_"|LETTER) ("_"|LETTER|DIGIT)* - - -// -// Whitespace -// -WS_INLINE: (" "|/\t/)+ -WS: /[ \t\f\r\n]/+ - -CR : /\r/ -LF : /\n/ -NEWLINE: (CR? LF)+ - - -// Comments -SH_COMMENT: /#[^\n]*/ -CPP_COMMENT: /\/\/[^\n]*/ -C_COMMENT: "/*" /(.|\n)*?/ "*/" -SQL_COMMENT: /--[^\n]*/ diff --git a/outlines/grammars/json.lark b/outlines/grammars/json.lark deleted file mode 100644 index 72af448c..00000000 --- a/outlines/grammars/json.lark +++ /dev/null @@ -1,19 +0,0 @@ -?start: value - -?value: object -| array -| UNESCAPED_STRING -| SIGNED_NUMBER -> number -| "true" -> true -| "false" -> false -| "null" -> null - -array : "[" [value ("," value)*] "]" -object : "{" [pair ("," pair)*] "}" -pair : UNESCAPED_STRING ":" value - -%import common.UNESCAPED_STRING -%import common.SIGNED_NUMBER -%import common.WS - -%ignore WS diff --git a/tests/test_grammars.py b/tests/test_grammars.py deleted file mode 100644 index 3d704f09..00000000 --- a/tests/test_grammars.py +++ /dev/null @@ -1,31 +0,0 @@ -import pytest - -import outlines.grammars as grammars -from outlines.fsm.guide import CFGGuide - - -@pytest.mark.parametrize("grammar", [grammars.json, grammars.arithmetic]) -def test_grammar_module(grammar): - class MockTokenizer: - vocabulary = {"(": 1, ")": 2, "a": 3, "eos": 4} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 4 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: s - s: "(" s ")" | /a+/ - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - assert isinstance(fsm, CFGGuide) From fc06746450ec1ffd9bea7486effa2c5e3d66cc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:47:56 +0200 Subject: [PATCH 02/20] Remove prompts and functions --- outlines/__init__.py | 4 - outlines/function.py | 117 -------------- outlines/prompts.py | 338 ----------------------------------------- tests/test_function.py | 133 ---------------- tests/test_prompts.py | 314 -------------------------------------- 5 files changed, 906 deletions(-) delete mode 100644 outlines/function.py delete mode 100644 outlines/prompts.py delete mode 100644 tests/test_function.py delete mode 100644 tests/test_prompts.py diff --git a/outlines/__init__.py b/outlines/__init__.py index d41000bd..22c85bbb 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -5,14 +5,10 @@ import outlines.types from outlines.base import vectorize from outlines.caching import clear_cache, disable_cache, get_cache -from outlines.function import Function -from outlines.prompts import prompt __all__ = [ "clear_cache", "disable_cache", "get_cache", - "Function", - "prompt", "vectorize", ] diff --git a/outlines/function.py b/outlines/function.py deleted file mode 100644 index 48577be8..00000000 --- a/outlines/function.py +++ /dev/null @@ -1,117 +0,0 @@ -import importlib.util -from dataclasses import dataclass -from typing import TYPE_CHECKING, Callable, Optional, Tuple, Union - -import requests - -from outlines import generate, models - -if TYPE_CHECKING: - from outlines.generate.api import SequenceGenerator - from outlines.prompts import Prompt - - -@dataclass -class Function: - """Represents an Outlines function. - - Functions are a convenient way to encapsulate a prompt template, a language - model and a Pydantic model that define the output structure. Once defined, - the function can be called with arguments that will be used to render the - prompt template. - - """ - - prompt_template: "Prompt" - schema: Union[str, Callable, object] - model_name: str - generator: Optional["SequenceGenerator"] = None - - @classmethod - def from_github(cls, program_path: str, function_name: str = "fn"): - """Load a function stored on GitHub""" - program_content = download_from_github(program_path) - function = extract_function_from_file(program_content, function_name) - - return function - - def init_generator(self): - """Load the model and initialize the generator.""" - model = models.transformers(self.model_name) - self.generator = generate.json(model, self.schema) - - def __call__(self, *args, **kwargs): - """Call the function. - - .. warning:: - - This currently does not support batching. - - Parameters - ---------- - args - Values to pass to the prompt template as positional arguments. - kwargs - Values to pass to the prompt template as keyword arguments. - - """ - if self.generator is None: - self.init_generator() - - prompt = self.prompt_template(*args, **kwargs) - return self.generator(prompt) - - -def download_from_github(short_path: str): - """Download the file in which the function is stored on GitHub.""" - GITHUB_BASE_URL = "https://raw.githubusercontent.com" - BRANCH = "main" - - path = short_path.split("/") - if len(path) < 3: - raise ValueError( - "Please provide a valid path in the form {USERNAME}/{REPO_NAME}/{PATH_TO_FILE}." - ) - elif short_path[-3:] == ".py": - raise ValueError("Do not append the `.py` extension to the program name.") - - username = path[0] - repo = path[1] - path_to_file = path[2:] - - url = "/".join([GITHUB_BASE_URL, username, repo, BRANCH] + path_to_file) + ".py" - result = requests.get(url) - - if result.status_code == 200: - return result.text - elif result.status_code == 404: - raise ValueError( - f"Program could not be found at {url}. Please make sure you entered the GitHub username, repository name and path to the program correctly." - ) - else: - result.raise_for_status() - - -def extract_function_from_file(content: str, function_name: str) -> Tuple[Callable]: - """Extract a function object from a downloaded file.""" - - spec = importlib.util.spec_from_loader( - "outlines_function", loader=None, origin="github" - ) - if spec is not None: - module = importlib.util.module_from_spec(spec) - exec(content, module.__dict__) - - try: - fn = getattr(module, function_name) - except AttributeError: - raise AttributeError( - "Could not find an `outlines.Function` instance in the remote file. Make sure that the path you specified is correct." - ) - - if not isinstance(fn, module.outlines.Function): - raise TypeError( - f"The `{function_name}` variable in the program must be an instance of `outlines.Function`" - ) - - return fn diff --git a/outlines/prompts.py b/outlines/prompts.py deleted file mode 100644 index 01e900c9..00000000 --- a/outlines/prompts.py +++ /dev/null @@ -1,338 +0,0 @@ -import functools -import inspect -import json -import re -import textwrap -from dataclasses import dataclass -from typing import Any, Callable, Dict, List, Optional, Type, cast - -from jinja2 import Environment, StrictUndefined -from pydantic import BaseModel - - -@dataclass -class Prompt: - """Represents a prompt function. - - We return a `Prompt` class instead of a simple function so the - template defined in prompt functions can be accessed. - - """ - - template: str - signature: inspect.Signature - - def __post_init__(self): - self.parameters: List[str] = list(self.signature.parameters.keys()) - - def __call__(self, *args, **kwargs) -> str: - """Render and return the template. - - Returns - ------- - The rendered template as a Python ``str``. - - """ - bound_arguments = self.signature.bind(*args, **kwargs) - bound_arguments.apply_defaults() - return render(self.template, **bound_arguments.arguments) - - def __str__(self): - return self.template - - -def prompt(fn: Callable) -> Prompt: - """Decorate a function that contains a prompt template. - - This allows to define prompts in the docstring of a function and simplify their - manipulation by providing some degree of encapsulation. It uses the `render` - function internally to render templates. - - >>> import outlines - >>> - >>> @outlines.prompt - >>> def build_prompt(question): - ... "I have a ${question}" - ... - >>> prompt = build_prompt("How are you?") - - This API can also be helpful in an "agent" context where parts of the prompt - are set when the agent is initialized and never modified later. In this situation - we can partially apply the prompt function at initialization. - - >>> import outlines - >>> import functools as ft - ... - >>> @outlines.prompt - ... def solve_task(name: str, objective: str, task: str): - ... '''Your name is {{name}}. - .. Your overall objective is to {{objective}}. - ... Please solve the following task: {{task}} - ... ''' - ... - >>> hal = ft.partial(solve_task, "HAL", "Travel to Jupiter") - - Returns - ------- - A `Prompt` callable class which will render the template when called. - - """ - - signature = inspect.signature(fn) - - # The docstring contains the template that will be rendered to be used - # as a prompt to the language model. - docstring = fn.__doc__ - if docstring is None: - raise TypeError("Could not find a template in the function's docstring.") - - template = cast(str, docstring) - - return Prompt(template, signature) - - -def render(template: str, **values: Optional[Dict[str, Any]]) -> str: - r"""Parse a Jinaj2 template and translate it into an Outlines graph. - - This function removes extra whitespaces and linebreaks from templates to - allow users to enter prompts more naturally than if they used Python's - constructs directly. See the examples for a detailed explanation. - - Examples - -------- - - Outlines follow Jinja2's syntax - - >>> import outlines - >>> outline = outlines.render("I like {{food}} and {{sport}}", food="tomatoes", sport="tennis") - I like tomatoes and tennis - - If the first line of the template is empty, `render` removes it - - >>> from outlines import render - >>> - >>> tpl = ''' - ... A new string''' - >>> tpl - ... '\nA new string' - >>> render(tpl) - ... 'a new string' - - Similarly, `render` ignores linebreaks introduced by placing the closing quotes - underneath the text: - - >>> tpl = ''' - ... A new string - ... ''' - >>> tpl - ... '\nA new string\n' - >>> render(tpl) - ... 'A new string' - - If you want to insert a linebreak at the end of the rendered template, you will - need to leave an empty line at the end of the template: - - >>> tpl = ''' - ... A new string - ... - ... ''' - >>> tpl - ... '\nA new string\n\n' - >>> render(tpl) - ... 'A new string\n' - - `render` removes the identation in docstrings. This is particularly important - when using prompt functions - - >>> tpl = ''' - ... a string - ... and another string''' - >>> tpl - ... '\n a string\n and another string' - >>> render(tpl) - ... 'a string\nand another string' - - The indentation of the first line is assumed to be the same as the second line's - - >>> tpl = '''a string - ... and another''' - >>> tpl - ... 'a string\n and another' - >>> render(tpl) - ... 'a string\nand another' - - To get a different indentation for the first and the second line, we can start the - prompt on the string's second line: - - >>> tpl = ''' - ... First line - ... Second line''' - >>> render(tpl) - ... 'First Line\n Second Line' - - Parameters - ---------- - template - A string that contains a template written with the Jinja2 syntax. - **values - Map from the variables in the template to their value. - - Returns - ------- - A string that contains the rendered template. - - """ - # Dedent, and remove extra linebreak - cleaned_template = inspect.cleandoc(template) - - # Add linebreak if there were any extra linebreaks that - # `cleandoc` would have removed - ends_with_linebreak = template.replace(" ", "").endswith("\n\n") - if ends_with_linebreak: - cleaned_template += "\n" - - # Remove extra whitespaces, except those that immediately follow a newline symbol. - # This is necessary to avoid introducing whitespaces after backslash `\` characters - # used to continue to the next line without linebreak. - cleaned_template = re.sub(r"(?![\r\n])(\b\s+)", " ", cleaned_template) - - env = Environment( - trim_blocks=True, - lstrip_blocks=True, - keep_trailing_newline=True, - undefined=StrictUndefined, - ) - env.filters["name"] = get_fn_name - env.filters["description"] = get_fn_description - env.filters["source"] = get_fn_source - env.filters["signature"] = get_fn_signature - env.filters["schema"] = get_schema - env.filters["args"] = get_fn_args - - jinja_template = env.from_string(cleaned_template) - - return jinja_template.render(**values) - - -def get_fn_name(fn: Callable): - """Returns the name of a callable.""" - if not callable(fn): - raise TypeError("The `name` filter only applies to callables.") - - if not hasattr(fn, "__name__"): - name = type(fn).__name__ - else: - name = fn.__name__ - - return name - - -def get_fn_args(fn: Callable): - """Returns the arguments of a function with annotations and default values if provided.""" - if not callable(fn): - raise TypeError("The `args` filter only applies to callables.") - - arg_str_list = [] - signature = inspect.signature(fn) - arg_str_list = [str(param) for param in signature.parameters.values()] - arg_str = ", ".join(arg_str_list) - return arg_str - - -def get_fn_description(fn: Callable): - """Returns the first line of a callable's docstring.""" - if not callable(fn): - raise TypeError("The `description` filter only applies to callables.") - - docstring = inspect.getdoc(fn) - if docstring is None: - description = "" - else: - description = docstring.split("\n")[0].strip() - - return description - - -def get_fn_source(fn: Callable): - """Return the source code of a callable.""" - if not callable(fn): - raise TypeError("The `source` filter only applies to callables.") - - source = textwrap.dedent(inspect.getsource(fn)) - re_search = re.search(re.compile(r"(\bdef\b.*)", re.DOTALL), source) - if re_search is not None: - source = re_search.group(0) - else: - raise TypeError("Could not read the function's source code") - - return source - - -def get_fn_signature(fn: Callable): - """Return the signature of a callable.""" - if not callable(fn): - raise TypeError("The `source` filter only applies to callables.") - - source = textwrap.dedent(inspect.getsource(fn)) - re_search = re.search(re.compile(r"\(([^)]+)\)"), source) - if re_search is None: - signature = "" - else: - signature = re_search.group(1) - - return signature - - -@functools.singledispatch -def get_schema(model: Any): - raise NotImplementedError( - f"No schema rendering function defined for type {type(model)}." - ) - - -@get_schema.register(dict) -def get_schema_dict(model: Dict): - """Return a pretty-printed dictionary""" - return json.dumps(model, indent=2) - - -@get_schema.register(type(BaseModel)) -def get_schema_pydantic(model: Type[BaseModel]): - """Return the schema of a Pydantic model.""" - if not type(model) == type(BaseModel): - raise TypeError("The `schema` filter only applies to Pydantic models.") - - if hasattr(model, "model_json_schema"): - def_key = "$defs" - raw_schema = model.model_json_schema() - else: # pragma: no cover - def_key = "definitions" - raw_schema = model.schema() - - definitions = raw_schema.get(def_key, None) - schema = parse_pydantic_schema(raw_schema, definitions) - - return json.dumps(schema, indent=2) - - -def parse_pydantic_schema(raw_schema, definitions): - """Parse the output of `Basemodel.[schema|model_json_schema]()`. - - This recursively follows the references to other schemas in case - of nested models. Other schemas are stored under the "definitions" - key in the schema of the top-level model. - - """ - simple_schema = {} - for name, value in raw_schema["properties"].items(): - if "description" in value: - simple_schema[name] = value["description"] - elif "$ref" in value: - refs = value["$ref"].split("/") - simple_schema[name] = parse_pydantic_schema( - definitions[refs[2]], definitions - ) - else: - simple_schema[name] = f"<{name}>" - - return simple_schema diff --git a/tests/test_function.py b/tests/test_function.py deleted file mode 100644 index 24e132d4..00000000 --- a/tests/test_function.py +++ /dev/null @@ -1,133 +0,0 @@ -import pytest -import responses -from pydantic import BaseModel -from requests.exceptions import HTTPError - -import outlines -from outlines.function import Function, download_from_github, extract_function_from_file - - -def test_function_basic(): - @outlines.prompt - def test_template(text: str): - """{{ text }}""" - - class Foo(BaseModel): - id: int - - fn = Function(test_template, Foo, "hf-internal-testing/tiny-random-GPTJForCausalLM") - - assert fn.generator is None - - result = fn("test") - assert isinstance(result, BaseModel) - - -def test_download_from_github_invalid(): - with pytest.raises(ValueError, match="Please provide"): - download_from_github("outlines/program") - - with pytest.raises(ValueError, match="Do not append"): - download_from_github("outlines-dev/outlines/program.py") - - -@responses.activate -def test_download_from_github_success(): - responses.add( - responses.GET, - "https://raw.githubusercontent.com/outlines-dev/outlines/main/program.py", - body="import outlines\n", - status=200, - ) - - file = download_from_github("outlines-dev/outlines/program") - assert file == "import outlines\n" - - responses.add( - responses.GET, - "https://raw.githubusercontent.com/outlines-dev/outlines/main/foo/bar/program.py", - body="import outlines\n", - status=200, - ) - - file = download_from_github("outlines-dev/outlines/foo/bar/program") - assert file == "import outlines\n" - - -@responses.activate -def test_download_from_github_error(): - responses.add( - responses.GET, - "https://raw.githubusercontent.com/foo/bar/main/program.py", - json={"error": "not found"}, - status=404, - ) - - with pytest.raises(ValueError, match="Program could not be found at"): - download_from_github("foo/bar/program") - - responses.add( - responses.GET, - "https://raw.githubusercontent.com/foo/bar/main/program.py", - json={"error": "Internal Server Error"}, - status=500, - ) - - with pytest.raises(HTTPError, match="500 Server Error"): - download_from_github("foo/bar/program") - - -def test_extract_function_from_file(): - content = """ -import outlines -from pydantic import BaseModel - -model = "gpt2" - - -@outlines.prompt -def prompt(): - '''Hello''' - - -class User(BaseModel): - id: int - name: str - - -function = outlines.Function( - prompt, - User, - "gpt2", -) - """ - - fn = extract_function_from_file(content, "function") - assert ( - str(type(fn)) == "" - ) # because imported via `exec` - - -def test_extract_function_from_file_no_function(): - content = """ -import outlines -from pydantic import BaseModel - -@outlines.prompt -def prompt(): - '''Hello''' - - -class User(BaseModel): - id: int - name: str - -program = outlines.Function( - prompt, - User, - "gpt2", -) - """ - - with pytest.raises(AttributeError, match="Could not find"): - extract_function_from_file(content, "function") diff --git a/tests/test_prompts.py b/tests/test_prompts.py deleted file mode 100644 index a0433c0e..00000000 --- a/tests/test_prompts.py +++ /dev/null @@ -1,314 +0,0 @@ -from typing import Dict, List - -import pytest -from pydantic import BaseModel, Field - -import outlines -from outlines.prompts import render - - -def test_render(): - tpl = """ - A test string""" - assert render(tpl) == "A test string" - - tpl = """ - A test string - """ - assert render(tpl) == "A test string" - - tpl = """ - A test - Another test - """ - assert render(tpl) == "A test\nAnother test" - - tpl = """A test - Another test - """ - assert render(tpl) == "A test\nAnother test" - - tpl = """ - A test line - An indented line - """ - assert render(tpl) == "A test line\n An indented line" - - tpl = """ - A test line - An indented line - - """ - assert render(tpl) == "A test line\n An indented line\n" - - -def test_render_escaped_linebreak(): - tpl = """ - A long test \ - that we break \ - in several lines - """ - assert render(tpl) == "A long test that we break in several lines" - - tpl = """ - Break in \ - several lines \ - But respect the indentation - on line breaks. - And after everything \ - Goes back to normal - """ - assert ( - render(tpl) - == "Break in several lines But respect the indentation\n on line breaks.\nAnd after everything Goes back to normal" - ) - - -def test_render_jinja(): - """Make sure that we can use basic Jinja2 syntax, and give examples - of how we can use it for basic use cases. - """ - - # Notice the newline after the end of the loop - examples = ["one", "two"] - prompt = render( - """ - {% for e in examples %} - Example: {{e}} - {% endfor -%}""", - examples=examples, - ) - assert prompt == "Example: one\nExample: two\n" - - # We can remove the newline by cloing with -%} - examples = ["one", "two"] - prompt = render( - """ - {% for e in examples %} - Example: {{e}} - {% endfor -%} - - Final""", - examples=examples, - ) - assert prompt == "Example: one\nExample: two\nFinal" - - # Same for conditionals - tpl = """ - {% if is_true %} - true - {% endif -%} - - final - """ - assert render(tpl, is_true=True) == "true\nfinal" - assert render(tpl, is_true=False) == "final" - - -def test_prompt_basic(): - @outlines.prompt - def test_tpl(variable): - """{{variable}} test""" - - assert test_tpl.template == "{{variable}} test" - assert test_tpl.parameters == ["variable"] - - with pytest.raises(TypeError): - test_tpl(v="test") - - p = test_tpl("test") - assert p == "test test" - - p = test_tpl(variable="test") - assert p == "test test" - - @outlines.prompt - def test_single_quote_tpl(variable): - "${variable} test" - - p = test_tpl("test") - assert p == "test test" - - -def test_prompt_kwargs(): - @outlines.prompt - def test_kwarg_tpl(var, other_var="other"): - """{{var}} and {{other_var}}""" - - assert test_kwarg_tpl.template == "{{var}} and {{other_var}}" - assert test_kwarg_tpl.parameters == ["var", "other_var"] - - p = test_kwarg_tpl("test") - assert p == "test and other" - - p = test_kwarg_tpl("test", other_var="kwarg") - assert p == "test and kwarg" - - p = test_kwarg_tpl("test", "test") - assert p == "test and test" - - -def test_no_prompt(): - with pytest.raises(TypeError, match="template"): - - @outlines.prompt - def test_empty(variable): - pass - - with pytest.raises(TypeError, match="template"): - - @outlines.prompt - def test_only_code(variable): - return variable - - -def test_prompt_function(): - def empty_fn(): - pass - - def with_description(): - """A description. - - But this is ignored. - """ - pass - - @outlines.prompt - def name_description_ppt(fn): - """ - {{fn|name}}: {{fn|description}} - """ - - rendered = name_description_ppt(empty_fn) - assert rendered == "empty_fn: " - - rendered = name_description_ppt(with_description) - assert rendered == "with_description: A description." - - def with_signature(one: int, two: List[str], three: float = 1.0): - pass - - @outlines.prompt - def name_signature_ppt(fn): - """ - {{fn|name}}: {{fn|signature}} - """ - - rendered = name_signature_ppt(with_signature) - assert rendered == "with_signature: one: int, two: List[str], three: float = 1.0" - - def test_function_call(one, two=2): - return one + two - - @outlines.prompt - def source_ppt(fn): - """ - {{fn|source}} - """ - - rendered = source_ppt(test_function_call) - assert rendered == "def test_function_call(one, two=2):\n return one + two\n" - - -def test_prompt_pydantic_response(): - class SimpleResponse(BaseModel): - one: str = Field(description="a description") - two: str - - @outlines.prompt - def source_ppt(model): - "{{model | schema }}" - - prompt = source_ppt(SimpleResponse) - assert prompt == '{\n "one": "a description",\n "two": ""\n}' - - class NestedResponse(BaseModel): - answer: str - thought: SimpleResponse - - prompt = source_ppt(NestedResponse) - assert ( - prompt - == '{\n "answer": "",\n "thought": {\n "one": "a description",\n "two": ""\n }\n}' - ) - - class ConvolutedResponse(BaseModel): - part_one: NestedResponse - part_two: SimpleResponse - - prompt = source_ppt(ConvolutedResponse) - assert ( - prompt - == '{\n "part_one": {\n "answer": "",\n "thought": {\n "one": "a description",\n "two": ""\n }\n },\n "part_two": {\n "one": "a description",\n "two": ""\n }\n}' - ) - - -def test_prompt_dict_response(): - response = {"one": "a description", "two": ""} - - @outlines.prompt - def source_ppt(model): - "{{model | schema }}" - - prompt = source_ppt(response) - assert prompt == '{\n "one": "a description",\n "two": ""\n}' - - -def test_prompt_args(): - def no_args(): - pass - - def with_args(x, y, z): - pass - - def with_annotations(x: bool, y: str, z: Dict[int, List[str]]): - pass - - def with_defaults(x=True, y="Hi", z={4: ["I", "love", "outlines"]}): - pass - - def with_annotations_and_defaults( - x: bool = True, - y: str = "Hi", - z: Dict[int, List[str]] = {4: ["I", "love", "outlines"]}, - ): - pass - - def with_all( - x1, - y1, - z1, - x2: bool, - y2: str, - z2: Dict[int, List[str]], - x3=True, - y3="Hi", - z3={4: ["I", "love", "outlines"]}, - x4: bool = True, - y4: str = "Hi", - z4: Dict[int, List[str]] = {4: ["I", "love", "outlines"]}, - ): - pass - - @outlines.prompt - def args_prompt(fn): - """args: {{ fn | args }}""" - - assert args_prompt(no_args) == "args: " - assert args_prompt(with_args) == "args: x, y, z" - assert ( - args_prompt(with_annotations) - == "args: x: bool, y: str, z: Dict[int, List[str]]" - ) - assert ( - args_prompt(with_defaults) - == "args: x=True, y='Hi', z={4: ['I', 'love', 'outlines']}" - ) - assert ( - args_prompt(with_annotations_and_defaults) - == "args: x: bool = True, y: str = 'Hi', z: Dict[int, List[str]] = {4: ['I', 'love', 'outlines']}" - ) - assert ( - args_prompt(with_all) - == "args: x1, y1, z1, x2: bool, y2: str, z2: Dict[int, List[str]], x3=True, y3='Hi', z3={4: ['I', 'love', 'outlines']}, x4: bool = True, y4: str = 'Hi', z4: Dict[int, List[str]] = {4: ['I', 'love', 'outlines']}" - ) From e40bbecfde6ddbb4140b47ea8a78ba0d5f83c978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:49:18 +0200 Subject: [PATCH 03/20] Remove custom types --- outlines/__init__.py | 1 - outlines/types/__init__.py | 4 -- outlines/types/airports.py | 10 ---- outlines/types/countries.py | 19 ------ outlines/types/email.py | 11 ---- outlines/types/isbn.py | 12 ---- outlines/types/locales.py | 21 ------- outlines/types/phone_numbers.py | 16 ----- outlines/types/zip_codes.py | 13 ---- tests/test_types.py | 103 -------------------------------- 10 files changed, 210 deletions(-) delete mode 100644 outlines/types/__init__.py delete mode 100644 outlines/types/airports.py delete mode 100644 outlines/types/countries.py delete mode 100644 outlines/types/email.py delete mode 100644 outlines/types/isbn.py delete mode 100644 outlines/types/locales.py delete mode 100644 outlines/types/phone_numbers.py delete mode 100644 outlines/types/zip_codes.py delete mode 100644 tests/test_types.py diff --git a/outlines/__init__.py b/outlines/__init__.py index 22c85bbb..667f7be0 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -2,7 +2,6 @@ import outlines.generate import outlines.models import outlines.processors -import outlines.types from outlines.base import vectorize from outlines.caching import clear_cache, disable_cache, get_cache diff --git a/outlines/types/__init__.py b/outlines/types/__init__.py deleted file mode 100644 index f4d2b8cd..00000000 --- a/outlines/types/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from . import airports, countries -from .email import Email -from .isbn import ISBN -from .locales import locale diff --git a/outlines/types/airports.py b/outlines/types/airports.py deleted file mode 100644 index b4ed6784..00000000 --- a/outlines/types/airports.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Generate valid airport codes.""" -from enum import Enum - -from pyairports.airports import AIRPORT_LIST - -AIRPORT_IATA_LIST = list( - {(airport[3], airport[3]) for airport in AIRPORT_LIST if airport[3] != ""} -) - -IATA = Enum("Airport", AIRPORT_IATA_LIST) # type:ignore diff --git a/outlines/types/countries.py b/outlines/types/countries.py deleted file mode 100644 index bbfc0dde..00000000 --- a/outlines/types/countries.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Generate valid country codes and names.""" -from enum import Enum - -import pycountry - -ALPHA_2_CODE = [(country.alpha_2, country.alpha_2) for country in pycountry.countries] -Alpha2 = Enum("Alpha_2", ALPHA_2_CODE) # type:ignore - -ALPHA_3_CODE = [(country.alpha_3, country.alpha_3) for country in pycountry.countries] -Alpha3 = Enum("Alpha_2", ALPHA_3_CODE) # type:ignore - -NUMERIC_CODE = [(country.numeric, country.numeric) for country in pycountry.countries] -Numeric = Enum("Numeric_code", NUMERIC_CODE) # type:ignore - -NAME = [(country.name, country.name) for country in pycountry.countries] -Name = Enum("Name", NAME) # type:ignore - -FLAG = [(country.flag, country.flag) for country in pycountry.countries] -Flag = Enum("Flag", FLAG) # type:ignore diff --git a/outlines/types/email.py b/outlines/types/email.py deleted file mode 100644 index 45f8c4b2..00000000 --- a/outlines/types/email.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Email Address types.""" -from pydantic import WithJsonSchema -from typing_extensions import Annotated - -# Taken from StackOverflow -# https://stackoverflow.com/a/201378/14773537 -EMAIL_REGEX = r"""(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])""" -Email = Annotated[ - str, - WithJsonSchema({"type": "string", "pattern": EMAIL_REGEX}), -] diff --git a/outlines/types/isbn.py b/outlines/types/isbn.py deleted file mode 100644 index 5aebb067..00000000 --- a/outlines/types/isbn.py +++ /dev/null @@ -1,12 +0,0 @@ -"""ISBN type""" -from pydantic import WithJsonSchema -from typing_extensions import Annotated - -# Matches any ISBN number. Note that this is not completely correct as not all -# 10 or 13 digits numbers are valid ISBNs. See https://en.wikipedia.org/wiki/ISBN -# Taken from O'Reilly's Regular Expression Cookbook: -# https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s13.html -# TODO: Can this be represented by a grammar or do we need semantic checks? -ISBN_REGEX = r"(?:ISBN(?:-1[03])?:? )?(?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]" - -ISBN = Annotated[str, WithJsonSchema({"type": "string", "pattern": ISBN_REGEX})] diff --git a/outlines/types/locales.py b/outlines/types/locales.py deleted file mode 100644 index c5d251ba..00000000 --- a/outlines/types/locales.py +++ /dev/null @@ -1,21 +0,0 @@ -from dataclasses import dataclass - -from outlines.types.phone_numbers import USPhoneNumber -from outlines.types.zip_codes import USZipCode - - -@dataclass -class US: - ZipCode = USZipCode - PhoneNumber = USPhoneNumber - - -def locale(locale_str: str): - locales = {"us": US} - - if locale_str not in locales: - raise NotImplementedError( - f"The locale {locale_str} is not supported yet. Please don't hesitate to create custom types for you locale and open a Pull Request." - ) - - return locales[locale_str] diff --git a/outlines/types/phone_numbers.py b/outlines/types/phone_numbers.py deleted file mode 100644 index 618687e7..00000000 --- a/outlines/types/phone_numbers.py +++ /dev/null @@ -1,16 +0,0 @@ -"""Phone number types. - -We currently only support US phone numbers. We can however imagine having custom types -for each country, for instance leveraging the `phonenumbers` library. - -""" -from pydantic import WithJsonSchema -from typing_extensions import Annotated - -US_PHONE_NUMBER = r"(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}" - - -USPhoneNumber = Annotated[ - str, - WithJsonSchema({"type": "string", "pattern": US_PHONE_NUMBER}), -] diff --git a/outlines/types/zip_codes.py b/outlines/types/zip_codes.py deleted file mode 100644 index 67d994d5..00000000 --- a/outlines/types/zip_codes.py +++ /dev/null @@ -1,13 +0,0 @@ -"""Zip code types. - -We currently only support US Zip Codes. - -""" -from pydantic import WithJsonSchema -from typing_extensions import Annotated - -# This matches Zip and Zip+4 codes -US_ZIP_CODE = r"\d{5}(?:-\d{4})?" - - -USZipCode = Annotated[str, WithJsonSchema({"type": "string", "pattern": US_ZIP_CODE})] diff --git a/tests/test_types.py b/tests/test_types.py deleted file mode 100644 index 5e60348b..00000000 --- a/tests/test_types.py +++ /dev/null @@ -1,103 +0,0 @@ -import re - -import pytest -from pydantic import BaseModel - -from outlines import types -from outlines.fsm.types import python_types_to_regex - - -@pytest.mark.parametrize( - "custom_type,test_string,should_match", - [ - (types.phone_numbers.USPhoneNumber, "12", False), - (types.phone_numbers.USPhoneNumber, "(123) 123-1234", True), - (types.phone_numbers.USPhoneNumber, "123-123-1234", True), - (types.zip_codes.USZipCode, "12", False), - (types.zip_codes.USZipCode, "12345", True), - (types.zip_codes.USZipCode, "12345-1234", True), - (types.ISBN, "ISBN 0-1-2-3-4-5", False), - (types.ISBN, "ISBN 978-0-596-52068-7", True), - # (types.ISBN, "ISBN 978-0-596-52068-1", True), wrong check digit - (types.ISBN, "ISBN-13: 978-0-596-52068-7", True), - (types.ISBN, "978 0 596 52068 7", True), - (types.ISBN, "9780596520687", True), - (types.ISBN, "ISBN-10: 0-596-52068-9", True), - (types.ISBN, "0-596-52068-9", True), - (types.Email, "eitan@gmail.com", True), - (types.Email, "99@yahoo.com", True), - (types.Email, "eitan@.gmail.com", False), - (types.Email, "myemail", False), - (types.Email, "eitan@gmail", False), - (types.Email, "eitan@my.custom.domain", True), - ], -) -def test_type_regex(custom_type, test_string, should_match): - class Model(BaseModel): - attr: custom_type - - schema = Model.model_json_schema() - assert schema["properties"]["attr"]["type"] == "string" - regex_str = schema["properties"]["attr"]["pattern"] - does_match = re.match(regex_str, test_string) is not None - assert does_match is should_match - - regex_str, format_fn = python_types_to_regex(custom_type) - assert isinstance(format_fn(1), str) - does_match = re.match(regex_str, test_string) is not None - assert does_match is should_match - - -def test_locale_not_implemented(): - with pytest.raises(NotImplementedError): - types.locale("fr") - - -@pytest.mark.parametrize( - "locale_str,base_types,locale_types", - [ - ( - "us", - ["ZipCode", "PhoneNumber"], - [types.zip_codes.USZipCode, types.phone_numbers.USPhoneNumber], - ) - ], -) -def test_locale(locale_str, base_types, locale_types): - for base_type, locale_type in zip(base_types, locale_types): - type = getattr(types.locale(locale_str), base_type) - assert type == locale_type - - -@pytest.mark.parametrize( - "custom_type,test_string,should_match", - [ - (types.airports.IATA, "CDG", True), - (types.airports.IATA, "XXX", False), - (types.countries.Alpha2, "FR", True), - (types.countries.Alpha2, "XX", False), - (types.countries.Alpha3, "UKR", True), - (types.countries.Alpha3, "XXX", False), - (types.countries.Numeric, "004", True), - (types.countries.Numeric, "900", False), - (types.countries.Name, "Ukraine", True), - (types.countries.Name, "Wonderland", False), - (types.countries.Flag, "πŸ‡ΏπŸ‡Ό", True), - (types.countries.Flag, "πŸ€—", False), - ], -) -def test_type_enum(custom_type, test_string, should_match): - type_name = custom_type.__name__ - - class Model(BaseModel): - attr: custom_type - - schema = Model.model_json_schema() - assert isinstance(schema["$defs"][type_name]["enum"], list) - does_match = test_string in schema["$defs"][type_name]["enum"] - assert does_match is should_match - - regex_str, format_fn = python_types_to_regex(custom_type) - assert isinstance(format_fn(1), str) - does_match = re.match(regex_str, test_string) is not None - assert does_match is should_match From 5127e6d58e5b759fafe155238c926f3165f0a2b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:50:03 +0200 Subject: [PATCH 04/20] Remove server integrations --- outlines/serve/__init__.py | 0 outlines/serve/serve.py | 139 ------------------------------------- 2 files changed, 139 deletions(-) delete mode 100644 outlines/serve/__init__.py delete mode 100644 outlines/serve/serve.py diff --git a/outlines/serve/__init__.py b/outlines/serve/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/outlines/serve/serve.py b/outlines/serve/serve.py deleted file mode 100644 index 998fbc45..00000000 --- a/outlines/serve/serve.py +++ /dev/null @@ -1,139 +0,0 @@ -# _______________________________ -# / Don't want to self-host? \ -# \ Try .json at http://dottxt.co / -# ------------------------------- -# \ ^__^ -# \ (oo)\_______ -# (__)\ )\/\ -# ||----w | -# || || -# -# -# Copyright 2024- the Outlines developers -# Copyright 2023 the vLLM developers -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import json -from typing import AsyncGenerator - -import uvicorn -from fastapi import FastAPI, Request -from fastapi.responses import JSONResponse, Response, StreamingResponse -from vllm.engine.arg_utils import AsyncEngineArgs -from vllm.engine.async_llm_engine import AsyncLLMEngine -from vllm.sampling_params import SamplingParams -from vllm.utils import random_uuid - -from outlines.models.vllm import adapt_tokenizer -from outlines.processors import JSONLogitsProcessor, RegexLogitsProcessor - -TIMEOUT_KEEP_ALIVE = 5 # seconds. -TIMEOUT_TO_PREVENT_DEADLOCK = 1 # seconds. -app = FastAPI() -engine = None -tokenizer = None - - -@app.get("/health") -async def health() -> Response: - """Health check.""" - return Response(status_code=200) - - -@app.post("/generate") -async def generate(request: Request) -> Response: - """Generate completion for the request. - - The request should be a JSON object with the following fields: - - prompt: the prompt to use for the generation. - - schema: the JSON schema to use for the generation (if regex is not provided). - - regex: the regex to use for the generation (if schema is not provided). - - stream: whether to stream the results or not. - - other fields: the sampling parameters (See `SamplingParams` for details). - """ - assert engine is not None - - request_dict = await request.json() - prompt = request_dict.pop("prompt") - stream = request_dict.pop("stream", False) - - json_schema = request_dict.pop("schema", None) - regex_string = request_dict.pop("regex", None) - if json_schema is not None: - logits_processors = [JSONLogitsProcessor(json_schema, tokenizer)] - elif regex_string is not None: - logits_processors = [RegexLogitsProcessor(regex_string, tokenizer)] - else: - logits_processors = [] - - sampling_params = SamplingParams( - **request_dict, logits_processors=logits_processors # type: ignore - ) - request_id = random_uuid() - - results_generator = engine.generate(prompt, sampling_params, request_id) # type: ignore - - # Streaming case - async def stream_results() -> AsyncGenerator[bytes, None]: - async for request_output in results_generator: - prompt = request_output.prompt - text_outputs = [prompt + output.text for output in request_output.outputs] - ret = {"text": text_outputs} - yield (json.dumps(ret) + "\0").encode("utf-8") - - if stream: - return StreamingResponse(stream_results()) - - # Non-streaming case - final_output = None - async for request_output in results_generator: - if await request.is_disconnected(): - # Abort the request if the client disconnects. - await engine.abort(request_id) # type: ignore - return Response(status_code=499) - final_output = request_output - - assert final_output is not None - prompt = final_output.prompt - text_outputs = [prompt + output.text for output in final_output.outputs] - ret = {"text": text_outputs} - return JSONResponse(ret) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("--host", type=str, default=None) - parser.add_argument("--port", type=int, default=8000) - parser.add_argument("--ssl-keyfile", type=str, default=None) - parser.add_argument("--ssl-certfile", type=str, default=None) - parser = AsyncEngineArgs.add_cli_args(parser) - args = parser.parse_args() - - # Adds the `engine_use_ray`, `disable_log_requests` and `max_log_len` - # arguments - engine_args: AsyncEngineArgs = AsyncEngineArgs.from_cli_args(args) # type: ignore - - # Sets default for the model (`facebook/opt-125m`) - engine = AsyncLLMEngine.from_engine_args(engine_args) - tokenizer = adapt_tokenizer(tokenizer=engine.engine.tokenizer.tokenizer) - - uvicorn.run( - app, - host=args.host, - port=args.port, - log_level="debug", - timeout_keep_alive=TIMEOUT_KEEP_ALIVE, - ssl_keyfile=args.ssl_keyfile, - ssl_certfile=args.ssl_certfile, - ) From 1792544753ba7d4243df715fca6298219b300dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:50:59 +0200 Subject: [PATCH 05/20] Remove OpenAI integration and vectorization utils --- outlines/__init__.py | 1 - outlines/base.py | 288 --------------------- outlines/generate/cfg.py | 9 - outlines/generate/choice.py | 17 -- outlines/generate/format.py | 9 - outlines/generate/json.py | 11 - outlines/generate/regex.py | 14 +- outlines/generate/text.py | 13 +- outlines/models/__init__.py | 1 - outlines/models/openai.py | 484 ------------------------------------ tests/models/test_openai.py | 105 -------- tests/test_base.py | 275 -------------------- 12 files changed, 2 insertions(+), 1225 deletions(-) delete mode 100644 outlines/base.py delete mode 100644 outlines/models/openai.py delete mode 100644 tests/models/test_openai.py delete mode 100644 tests/test_base.py diff --git a/outlines/__init__.py b/outlines/__init__.py index 667f7be0..b050521f 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -2,7 +2,6 @@ import outlines.generate import outlines.models import outlines.processors -from outlines.base import vectorize from outlines.caching import clear_cache, disable_cache, get_cache __all__ = [ diff --git a/outlines/base.py b/outlines/base.py deleted file mode 100644 index 4de8ccf5..00000000 --- a/outlines/base.py +++ /dev/null @@ -1,288 +0,0 @@ -import asyncio -import builtins -import functools -import inspect -from typing import Callable, Optional - -import numpy as np -from numpy.lib.function_base import ( - _calculate_shapes, - _parse_gufunc_signature, - _parse_input_dimensions, - _update_dim_sizes, -) - -# Allow nested loops for running in notebook. We don't enable it globally as it -# may interfere with other libraries that use asyncio. -if hasattr(builtins, "__IPYTHON__"): - try: - import nest_asyncio - - nest_asyncio.apply() - except ImportError: - print( - "Couldn't patch nest_asyncio because it's not installed. Running in the notebook might be have issues" - ) - - -class vectorize: - """Returns an object that acts like a function but takes arrays as an input. - - The vectorized function evaluates `func` over successive tuples of the input - chararrays and returns a single NumPy chararrays or a tuple of NumPy chararrays. - - Its behavior is similar to NumPy's `vectorize` for Python functions: the function - being vectorized is executed in a `for` loop. Coroutines, however, are executed - concurrently. - - Part of the code was adapted from `numpy.lib.function_base`. - - """ - - def __init__(self, func: Callable, signature: Optional[str] = None): - self.func = func - self.signature = signature - self.is_coroutine_fn = inspect.iscoroutinefunction(func) - - functools.update_wrapper(self, func) - - if signature is not None: - # Parse the signature string into a Python data structure. - # For instance "(m),(s)->(s,m)" becomes `([(m,),(s,)],[(s,m)])`. - self._in_and_out_core_dimensions = _parse_gufunc_signature(signature) - else: - self._in_and_out_core_dimensions = None - - def __call__(self, *args, **kwargs): - """Call the vectorized function.""" - if not args and not kwargs: - return self.call_thunk() - elif self.signature is not None: - return self.call_with_signature(*args, **kwargs) - else: - return self.call_no_signature(*args, **kwargs) - - def call_thunk(self): - """Call a vectorized thunk. - - Thunks have no arguments and can thus be called directly. - - """ - if self.is_coroutine_fn: - loop = asyncio.new_event_loop() - try: - outputs = loop.run_until_complete(self.func()) - finally: - loop.close() - else: - outputs = self.func() - - return outputs - - def call_no_signature(self, *args, **kwargs): - """Call functions and coroutines when no signature is specified. - - When no signature is specified we assume that all of the function's - inputs and outputs are scalars (core dimension of zero). We first - broadcast the input arrays, then iteratively apply the function over the - elements of the broadcasted arrays and finally reshape the results to - match the input shape. - - Functions are executed in a for loop, coroutines are executed - concurrently. - - """ - # Convert args and kwargs to arrays - args = [np.array(arg) for arg in args] - kwargs = {key: np.array(value) for key, value in kwargs.items()} - - # Broadcast args and kwargs - broadcast_shape = np.broadcast(*args, *list(kwargs.values())).shape - args = [np.broadcast_to(arg, broadcast_shape) for arg in args] - kwargs = { - key: np.broadcast_to(value, broadcast_shape) - for key, value in kwargs.items() - } - - # Execute functions in a loop, and coroutines concurrently - if self.is_coroutine_fn: - outputs = self.vectorize_call_coroutine(broadcast_shape, args, kwargs) - else: - outputs = self.vectorize_call(broadcast_shape, args, kwargs) - - # `outputs` is a flat array or a tuple of flat arrays. We reshape the arrays - # to match the input shape. - outputs = [ - results if isinstance(results, tuple) else (results,) for results in outputs - ] - outputs = tuple( - [np.asarray(x).reshape(broadcast_shape).squeeze() for x in zip(*outputs)] - ) - outputs = tuple([x.item() if np.ndim(x) == 0 else x for x in outputs]) - - n_results = len(list(outputs)) - - return outputs[0] if n_results == 1 else outputs - - def call_with_signature(self, *args, **kwargs): - """Call functions and coroutines when a signature is specified.""" - input_core_dims, output_core_dims = self._in_and_out_core_dimensions - - # Make sure that the numbers of arguments passed is compatible with - # the signature. - num_args = len(args) + len(kwargs) - if num_args != len(input_core_dims): - raise TypeError( - "wrong number of positional arguments: " - "expected %r, got %r" % (len(input_core_dims), len(args)) - ) - - # Convert args and kwargs to arrays - args = [np.asarray(arg) for arg in args] - kwargs = {key: np.array(value) for key, value in kwargs.items()} - - # Find the arguments' broadcast shape, and map placeholder - # variables in the signature to the number of dimensions - # they correspond to given the arguments. - broadcast_shape, dim_sizes = _parse_input_dimensions( - args + list(kwargs.values()), input_core_dims - ) - - # Calculate the shape to which each of the arguments should be broadcasted - # and reshape them accordingly. - input_shapes = _calculate_shapes(broadcast_shape, dim_sizes, input_core_dims) - args = [ - np.broadcast_to(arg, shape, subok=True) - for arg, shape in zip(args, input_shapes) - ] - kwargs = { - key: np.broadcast_to(value, broadcast_shape) - for key, value in kwargs.items() - } - - n_out = len(output_core_dims) - - if self.is_coroutine_fn: - outputs = self.vectorize_call_coroutine(broadcast_shape, args, kwargs) - else: - outputs = self.vectorize_call(broadcast_shape, args, kwargs) - - outputs = [ - results if isinstance(results, tuple) else (results,) for results in outputs - ] - - flat_outputs = list(zip(*outputs)) - n_results = len(flat_outputs) - - if n_out != n_results: - raise ValueError( - f"wrong number of outputs from the function, expected {n_out}, got {n_results}" - ) - - # The number of dimensions of the outputs are not necessarily known in - # advance. The following iterates over the results and updates the - # number of dimensions of the outputs accordingly. - for results, core_dims in zip(flat_outputs, output_core_dims): - for result in results: - _update_dim_sizes(dim_sizes, result, core_dims) - - # Calculate the shape to which each of the outputs should be broadcasted - # and reshape them. - shapes = _calculate_shapes(broadcast_shape, dim_sizes, output_core_dims) - outputs = tuple( - [ - np.hstack(results).reshape(shape).squeeze() - for shape, results in zip(shapes, zip(*outputs)) - ] - ) - outputs = tuple([x.item() if np.ndim(x) == 0 else x for x in outputs]) - - return outputs[0] if n_results == 1 else outputs - - def vectorize_call(self, broadcast_shape, args, kwargs): - """Run the function in a for loop. - - A possible extension would be to parallelize the calls. - - Parameters - ---------- - broadcast_shape - The brodcast shape of the input arrays. - args - The function's broadcasted arguments. - kwargs - The function's broadcasted keyword arguments. - - """ - outputs = [] - for index in np.ndindex(*broadcast_shape): - current_args = tuple(arg[index] for arg in args) - current_kwargs = {key: value[index] for key, value in kwargs.items()} - outputs.append(self.func(*current_args, **current_kwargs)) - - return outputs - - def vectorize_call_coroutine(self, broadcast_shape, args, kwargs): - """Run coroutines concurrently. - - Creates as many tasks as needed and executes them in a new event - loop. - - Parameters - ---------- - broadcast_shape - The brodcast shape of the input arrays. - args - The function's broadcasted arguments. - kwargs - The function's broadcasted keyword arguments. - - """ - - async def create_and_gather_tasks(): - tasks = [] - for index in np.ndindex(*broadcast_shape): - current_args = tuple(arg[index] for arg in args) - current_kwargs = {key: value[index] for key, value in kwargs.items()} - tasks.append(self.func(*current_args, **current_kwargs)) - - outputs = await asyncio.gather(*tasks) - - return outputs - - loop = asyncio.new_event_loop() - try: - outputs = loop.run_until_complete(create_and_gather_tasks()) - finally: - loop.close() - - return outputs - - -def _update_arrays_type(arrays, results): - """Update the dtype of arrays. - - String arrays contain strings of fixed length. Here they are initialized with - the type of the first results, so that if the next results contain longer - strings they will be truncated when added to the output arrays. Here we - update the type if the current results contain longer strings than in the - current output array. - - Parameters - ---------- - arrays - Arrays that contain the vectorized function's results. - results - The current output of the function being vectorized. - - """ - - updated_arrays = [] - for array, result in zip(arrays, results): - if array.dtype.type == np.str_: - if array.dtype < np.array(result).dtype: - array = array.astype(np.array(result).dtype) - - updated_arrays.append(array) - - return tuple(updated_arrays) diff --git a/outlines/generate/cfg.py b/outlines/generate/cfg.py index 0df83306..6af41400 100644 --- a/outlines/generate/cfg.py +++ b/outlines/generate/cfg.py @@ -1,7 +1,6 @@ from functools import singledispatch from outlines.generate.api import SequenceGeneratorAdapter -from outlines.models import OpenAI from outlines.samplers import Sampler, multinomial @@ -30,11 +29,3 @@ def cfg( + "Please subscribe to https://github.com/outlines-dev/outlines/issues/684" + " for updates on the fix." ) - - -@cfg.register(OpenAI) -def cfg_openai(model, cfg_str: str, sampler: Sampler = multinomial()): - raise NotImplementedError( - "Cannot use grammar-structured generation with an OpenAI model" - + "due to the limitations of the OpenAI API." - ) diff --git a/outlines/generate/choice.py b/outlines/generate/choice.py index 931409a5..970364d7 100644 --- a/outlines/generate/choice.py +++ b/outlines/generate/choice.py @@ -2,7 +2,6 @@ from typing import Callable, List from outlines.generate.api import SequenceGeneratorAdapter -from outlines.models import OpenAI from outlines.samplers import Sampler, multinomial from .regex import regex @@ -18,19 +17,3 @@ def choice( generator.format_sequence = lambda x: x return generator - - -@choice.register(OpenAI) -def choice_openai( - model: OpenAI, choices: List[str], sampler: Sampler = multinomial() -) -> Callable: - if not isinstance(sampler, multinomial): - raise NotImplementedError( - r"The OpenAI API does not support any other sampling algorithm " - + "that the multinomial sampler." - ) - - def generate_choice(prompt: str, max_tokens: int = 1): - return model.generate_choice(prompt, choices, max_tokens) - - return generate_choice diff --git a/outlines/generate/format.py b/outlines/generate/format.py index 88acec75..ff7346b4 100644 --- a/outlines/generate/format.py +++ b/outlines/generate/format.py @@ -2,7 +2,6 @@ from outlines.fsm.types import python_types_to_regex from outlines.generate.api import SequenceGeneratorAdapter -from outlines.models import OpenAI from outlines.samplers import Sampler, multinomial from .regex import regex @@ -37,11 +36,3 @@ def format( generator.format_sequence = format_fn return generator - - -@format.register(OpenAI) -def format_openai(model, python_type, sampler: Sampler = multinomial()): - raise NotImplementedError( - "Cannot use Python type-structured generation with an OpenAI model" - + " due to the limitations of the OpenAI API." - ) diff --git a/outlines/generate/json.py b/outlines/generate/json.py index 6209840e..04e8bfb7 100644 --- a/outlines/generate/json.py +++ b/outlines/generate/json.py @@ -6,7 +6,6 @@ from outlines.fsm.json_schema import build_regex_from_schema, get_schema_from_signature from outlines.generate.api import SequenceGeneratorAdapter -from outlines.models import OpenAI from outlines.samplers import Sampler, multinomial from .regex import regex @@ -66,13 +65,3 @@ def json( ) return generator - - -@json.register(OpenAI) -def json_openai( - model, schema_object: Union[str, object, Callable], sampler: Sampler = multinomial() -): - raise NotImplementedError( - "Cannot use JSON Schema-structure generation with an OpenAI model " - + "due to the limitations of the OpenAI API" - ) diff --git a/outlines/generate/regex.py b/outlines/generate/regex.py index 815a8b1b..c731cb9d 100644 --- a/outlines/generate/regex.py +++ b/outlines/generate/regex.py @@ -6,7 +6,7 @@ SequenceGeneratorAdapter, VisionSequenceGeneratorAdapter, ) -from outlines.models import ExLlamaV2Model, OpenAI, TransformersVision +from outlines.models import ExLlamaV2Model, TransformersVision from outlines.samplers import Sampler, multinomial @@ -61,15 +61,3 @@ def regex_exllamav2( generator = SequenceGenerator(fsm, model, sampler, device) return generator - - -@regex.register(OpenAI) -def regex_openai( - model: OpenAI, - regex_str: str, - sampler: Sampler = multinomial(), -): - raise NotImplementedError( - "Cannot use regex-structured generation with an OpenAI model" - + "due to the limitations of the OpenAI API." - ) diff --git a/outlines/generate/text.py b/outlines/generate/text.py index 3fe3dc55..907402e4 100644 --- a/outlines/generate/text.py +++ b/outlines/generate/text.py @@ -6,7 +6,7 @@ SequenceGeneratorAdapter, VisionSequenceGeneratorAdapter, ) -from outlines.models import ExLlamaV2Model, OpenAI, TransformersVision +from outlines.models import ExLlamaV2Model, TransformersVision from outlines.samplers import Sampler, multinomial @@ -46,14 +46,3 @@ def text_exllamav2(model, sampler: Sampler = multinomial()) -> SequenceGenerator @text.register(TransformersVision) def text_vision(model, sampler: Sampler = multinomial()): return VisionSequenceGeneratorAdapter(model, None, sampler) - - -@text.register(OpenAI) -def text_openai(model: OpenAI, sampler: Sampler = multinomial()) -> OpenAI: - if not isinstance(sampler, multinomial): - raise NotImplementedError( - r"The OpenAI API does not support any other sampling algorithm " - + "than the multinomial sampler." - ) - - return model diff --git a/outlines/models/__init__.py b/outlines/models/__init__.py index d28fcb2d..28b5af3e 100644 --- a/outlines/models/__init__.py +++ b/outlines/models/__init__.py @@ -11,7 +11,6 @@ from .exllamav2 import ExLlamaV2Model, exl2 from .llamacpp import LlamaCpp, llamacpp from .mlxlm import MLXLM, mlxlm -from .openai import OpenAI, azure_openai, openai from .transformers import Transformers, TransformerTokenizer, mamba, transformers from .transformers_vision import TransformersVision, transformers_vision from .vllm import VLLM, vllm diff --git a/outlines/models/openai.py b/outlines/models/openai.py deleted file mode 100644 index 692e64ac..00000000 --- a/outlines/models/openai.py +++ /dev/null @@ -1,484 +0,0 @@ -"""Integration with OpenAI's API.""" -import functools -import warnings -from dataclasses import asdict, dataclass, field, replace -from itertools import zip_longest -from typing import Callable, Dict, List, Optional, Set, Tuple, Union - -import numpy as np - -from outlines.base import vectorize -from outlines.caching import cache - -__all__ = ["OpenAI", "openai", "azure_openai"] - - -@dataclass(frozen=True) -class OpenAIConfig: - """Represents the parameters of the OpenAI API. - - The information was last fetched on 2023/11/20. We document below the - properties that are specific to the OpenAI API. Not all these properties are - supported by Outlines. - - Properties - ---------- - model - The name of the model. Available models can be found on OpenAI's website. - frequence_penalty - Number between 2.0 and -2.0. Positive values penalize new tokens based on - their existing frequency in the text, - logit_bias - Modifies the likelihood of specified tokens to appear in the completion. - Number between -100 (forbid) and +100 (only allows). - n - The number of completions to return for each prompt. - presence_penalty - Similar to frequency penalty. - response_format - Specifies the format the model must output. `{"type": "json_object"}` - enables JSON mode. - seed - Two completions with the same `seed` value should return the same - completion. This is however not guaranteed. - stop - Up to 4 words where the API will stop the completion. - temperature - Number between 0 and 2. Higher values make the output more random, while - lower values make it more deterministic. - top_p - Number between 0 and 1. Parameter for nucleus sampling. - user - A unique identifier for the end-user. - - """ - - model: str = "" - frequency_penalty: float = 0 - logit_bias: Dict[int, int] = field(default_factory=dict) - max_tokens: Optional[int] = None - n: int = 1 - presence_penalty: float = 0 - response_format: Optional[Dict[str, str]] = None - seed: Optional[int] = None - stop: Optional[Union[str, List[str]]] = None - temperature: float = 1.0 - top_p: int = 1 - user: str = field(default_factory=str) - - -class OpenAI: - """An object that represents the OpenAI API.""" - - def __init__( - self, - client, - config, - tokenizer=None, - system_prompt: Optional[str] = None, - ): - """Create an `OpenAI` instance. - - This class supports the standard OpenAI API, the Azure OpeanAI API as - well as compatible APIs that rely on the OpenAI client. - - Parameters - ---------- - client - An instance of the API's async client. - config - An instance of `OpenAIConfig`. Can be useful to specify some - parameters that cannot be set by calling this class' methods. - tokenizer - The tokenizer associated with the model the client connects to. - - """ - - self.client = client - self.tokenizer = tokenizer - self.config = config - - # We count the total number of prompt and generated tokens as returned - # by the OpenAI API, summed over all the requests performed with this - # model instance. - self.prompt_tokens = 0 - self.completion_tokens = 0 - - def __call__( - self, - prompt: Union[str, List[str]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[List[str], str]] = None, - *, - system_prompt: Optional[str] = None, - temperature: Optional[float] = None, - samples: Optional[int] = None, - ) -> np.ndarray: - """Call the OpenAI API to generate text. - - Parameters - ---------- - prompt - A string or list of strings that will be used to prompt the model - max_tokens - The maximum number of tokens to generate - stop_at - A string or array of strings which, such that the generation stops - when they are generated. - system_prompt - The content of the system message that precedes the user's prompt. - temperature - The value of the temperature used to sample tokens - samples - The number of completions to generate for each prompt - stop_at - Up to 4 words where the API will stop the completion. - - """ - if max_tokens is None: - max_tokens = self.config.max_tokens - if stop_at is None: - stop_at = self.config.stop - if temperature is None: - temperature = self.config.temperature - if samples is None: - samples = self.config.n - - config = replace(self.config, max_tokens=max_tokens, temperature=temperature, n=samples, stop=stop_at) # type: ignore - - response, prompt_tokens, completion_tokens = generate_chat( - prompt, system_prompt, self.client, config - ) - self.prompt_tokens += prompt_tokens - self.completion_tokens += completion_tokens - - return response - - def stream(self, *args, **kwargs): - raise NotImplementedError( - "Streaming is currently not supported for the OpenAI API" - ) - - def generate_choice( - self, - prompt: str, - choices: List[str], - max_tokens: Optional[int] = None, - system_prompt: Optional[str] = None, - ) -> str: - """Call the OpenAI API to generate one of several choices. - - Parameters - ---------- - prompt - A string or list of strings that will be used to prompt the model - choices - The list of strings between which we ask the model to choose - max_tokens - The maximum number of tokens to generate - system_prompt - The content of the system message that precedes the user's prompt. - - """ - if self.tokenizer is None: - raise ValueError( - "You must initialize the `OpenAI` class with a tokenizer to use `outlines.generate.choice`" - ) - - config = replace(self.config, max_tokens=max_tokens) - - greedy = False - decoded: List[str] = [] - encoded_choices_left: List[List[int]] = [ - self.tokenizer.encode(word) for word in choices - ] - - while len(encoded_choices_left) > 0: - max_tokens_left = max([len(tokens) for tokens in encoded_choices_left]) - transposed_choices_left: List[Set] = [ - {item for item in subset if item is not None} - for subset in zip_longest(*encoded_choices_left) - ] - - if not greedy: - mask = build_optimistic_mask(transposed_choices_left) - else: - mask = {} - for token in transposed_choices_left[0]: # build greedy mask - mask[token] = 100 - - if len(mask) == 0: - break - - config = replace(config, logit_bias=mask, max_tokens=max_tokens_left) - - response, prompt_tokens, completion_tokens = generate_chat( - prompt, system_prompt, self.client, config - ) - self.prompt_tokens += prompt_tokens - self.completion_tokens += completion_tokens - - encoded_response = self.tokenizer.encode(response) - - if encoded_response in encoded_choices_left: - decoded.append(response) - break - else: - ( - encoded_response, - encoded_choices_left, - ) = find_response_choices_intersection( - encoded_response, encoded_choices_left - ) - - if len(encoded_response) == 0: - greedy = True # next iteration will be "greedy" - continue - else: - decoded.append("".join(self.tokenizer.decode(encoded_response))) - - if len(encoded_choices_left) == 1: # only one choice left - choice_left = self.tokenizer.decode(encoded_choices_left[0]) - decoded.append(choice_left) - break - - greedy = False # after each success, stay with (or switch to) "optimistic" approach - - prompt = prompt + "".join(decoded) - - choice = "".join(decoded) - - return choice - - def generate_json(self): - """Call the OpenAI API to generate a JSON object.""" - raise NotImplementedError - - def __str__(self): - return self.__class__.__name__ + " API" - - def __repr__(self): - return str(self.config) - - -@functools.partial(vectorize, signature="(),(),(),()->(s),(),()") -async def generate_chat( - prompt: str, - system_prompt: Union[str, None], - client, - config: OpenAIConfig, -) -> Tuple[np.ndarray, int, int]: - """Call OpenAI's Chat Completion API. - - Parameters - ---------- - prompt - The prompt we use to start the generation. Passed to the model - with the "user" role. - system_prompt - The system prompt, passed to the model with the "system" role - before the prompt. - client - The API client - config - An `OpenAIConfig` instance. - - Returns - ------- - A tuple that contains the model's response(s) and usage statistics. - - """ - - @error_handler - @cache() - async def call_api(prompt, system_prompt, config): - responses = await client.chat.completions.create( - messages=system_message + user_message, - **asdict(config), # type: ignore - ) - return responses.model_dump() - - system_message = ( - [{"role": "system", "content": system_prompt}] if system_prompt else [] - ) - user_message = [{"role": "user", "content": prompt}] - - responses = await call_api(prompt, system_prompt, config) - - results = np.array( - [responses["choices"][i]["message"]["content"] for i in range(config.n)] - ) - usage = responses["usage"] - - return results, usage["prompt_tokens"], usage["completion_tokens"] - - -def find_longest_intersection(response: List[int], choice: List[int]) -> List[int]: - """Find the longest intersection between the response and the choice.""" - for i, (token_r, token_c) in enumerate(zip_longest(response, choice)): - if token_r != token_c: - return response[:i] - - return response - - -def find_response_choices_intersection( - response: List[int], choices: List[List[int]] -) -> Tuple[List[int], List[List[int]]]: - """Find the longest intersection between the response and the different - choices. - - Say the response is of the form `[1, 2, 3, 4, 5]` and we have the choices - `[[1, 2], [1, 2, 3], [6, 7, 8]` then the function will return `[1, 2, 3]` as the - intersection, and `[[]]` as the list of choices left. - - Parameters - ---------- - response - The model's response - choices - The remaining possible choices - - Returns - ------- - A tuple that contains the longest intersection between the response and the - different choices, and the choices which start with this intersection, with the - intersection removed. - - """ - max_len_prefix = 0 - choices_left = [] - longest_prefix = [] - for i, choice in enumerate(choices): - # Find the longest intersection between the response and the choice. - prefix = find_longest_intersection(response, choice) - - if len(prefix) > max_len_prefix: - max_len_prefix = len(prefix) - choices_left = [choice[len(prefix) :]] - longest_prefix = prefix - - elif len(prefix) == max_len_prefix: - choices_left.append(choice[len(prefix) :]) - - return longest_prefix, choices_left - - -def build_optimistic_mask( - transposed: List[Set[int]], max_mask_size: int = 300 -) -> Dict[int, int]: - """We build the largest mask possible. - - Tokens are added from left to right, so if the encoded choices are e.g. - `[[1,2], [3,4]]`, `1` and `3` will be added before `2` and `4`. - - Parameters - ---------- - transposed - A list of lists that contain the nth token of each choice. - - """ - mask: Dict[int, int] = {} - for tokens in transposed: - for token in tokens: - if len(mask) == max_mask_size: - return mask - mask[token] = 100 - - return mask - - -def error_handler(api_call_fn: Callable) -> Callable: - """Handle OpenAI API errors and missing API key.""" - - def call(*args, **kwargs): - import openai - - try: - return api_call_fn(*args, **kwargs) - except ( - openai.APITimeoutError, - openai.InternalServerError, - openai.RateLimitError, - ) as e: - raise OSError(f"Could not connect to the OpenAI API: {e}") - except ( - openai.AuthenticationError, - openai.BadRequestError, - openai.ConflictError, - openai.PermissionDeniedError, - openai.NotFoundError, - openai.UnprocessableEntityError, - ) as e: - raise e - - return call - - -@functools.singledispatch -def openai(model_or_client, *args, **kwargs): - return OpenAI(model_or_client, *args, **kwargs) - - -@openai.register(str) -def openai_model( - model_name: str, - config: Optional[OpenAIConfig] = None, - **openai_client_params, -): - try: - import tiktoken - from openai import AsyncOpenAI - except ImportError: - raise ImportError( - "The `openai` and `tiktoken` libraries needs to be installed in order to use Outlines' OpenAI integration." - ) - - if config is not None: - config = replace(config, model=model_name) # type: ignore - else: - config = OpenAIConfig(model=model_name) - - client = AsyncOpenAI(**openai_client_params) - - try: - tokenizer = tiktoken.encoding_for_model(model_name) - except KeyError: - warnings.warn( - f"Could not find a tokenizer for model {model_name}. Using default cl100k_base." - ) - tokenizer = tiktoken.get_encoding("cl100k_base") - - return OpenAI(client, config, tokenizer) - - -def azure_openai( - deployment_name: str, - model_name: Optional[str] = None, - config: Optional[OpenAIConfig] = None, - **azure_openai_client_params, -): - try: - import tiktoken - from openai import AsyncAzureOpenAI - except ImportError: - raise ImportError( - "The `openai` and `tiktoken` libraries needs to be installed in order to use Outlines' Azure OpenAI integration." - ) - - if config is not None: - config = replace(config, model=deployment_name) # type: ignore - if config is None: - config = OpenAIConfig(model=deployment_name) - - client = AsyncAzureOpenAI(**azure_openai_client_params) - - try: - tokenizer = tiktoken.encoding_for_model(model_name or deployment_name) - except KeyError: - warnings.warn( - f"Could not find a tokenizer for model {model_name or deployment_name}. Using default cl100k_base." - ) - tokenizer = tiktoken.get_encoding("cl100k_base") - - return OpenAI(client, config, tokenizer) diff --git a/tests/models/test_openai.py b/tests/models/test_openai.py deleted file mode 100644 index 8a7870ef..00000000 --- a/tests/models/test_openai.py +++ /dev/null @@ -1,105 +0,0 @@ -import importlib -from unittest import mock -from unittest.mock import MagicMock - -import pytest -from openai import AsyncOpenAI - -from outlines.models.openai import ( - OpenAI, - OpenAIConfig, - build_optimistic_mask, - find_longest_intersection, - find_response_choices_intersection, -) - - -def module_patch(path): - """Patch functions that have the same name as the module in which they're implemented.""" - target = path - components = target.split(".") - for i in range(len(components), 0, -1): - try: - # attempt to import the module - imported = importlib.import_module(".".join(components[:i])) - - # module was imported, let's use it in the patch - patch = mock.patch(path) - patch.getter = lambda: imported - patch.attribute = ".".join(components[i:]) - return patch - except Exception: - continue - - # did not find a module, just return the default mock - return mock.patch(path) - - -def test_openai_call(): - with module_patch("outlines.models.openai.generate_chat") as mocked_generate_chat: - mocked_generate_chat.return_value = ["foo"], 1, 2 - async_client = MagicMock(spec=AsyncOpenAI, api_key="key") - - model = OpenAI( - async_client, - OpenAIConfig(max_tokens=10, temperature=0.5, n=2, stop=["."]), - ) - - assert model("bar")[0] == "foo" - assert model.prompt_tokens == 1 - assert model.completion_tokens == 2 - mocked_generate_chat_args = mocked_generate_chat.call_args - mocked_generate_chat_arg_config = mocked_generate_chat_args[0][3] - assert isinstance(mocked_generate_chat_arg_config, OpenAIConfig) - assert mocked_generate_chat_arg_config.max_tokens == 10 - assert mocked_generate_chat_arg_config.temperature == 0.5 - assert mocked_generate_chat_arg_config.n == 2 - assert mocked_generate_chat_arg_config.stop == ["."] - - model("bar", samples=3) - mocked_generate_chat_args = mocked_generate_chat.call_args - mocked_generate_chat_arg_config = mocked_generate_chat_args[0][3] - assert mocked_generate_chat_arg_config.n == 3 - - -@pytest.mark.parametrize( - "response,choice,expected_intersection,expected_choices_left", - ( - ([1, 2, 3, 4], [[5, 6]], [], [[5, 6]]), - ([1, 2, 3, 4], [[5, 6], [7, 8]], [], [[5, 6], [7, 8]]), - ([1, 2, 3, 4], [[1, 2], [7, 8]], [1, 2], [[]]), - ([1, 2], [[1, 2, 3, 4], [1, 2]], [1, 2], [[3, 4], []]), - ([1, 2, 3], [[1, 2, 3, 4], [1, 2]], [1, 2, 3], [[4]]), - ), -) -def test_find_response_choices_intersection( - response, choice, expected_intersection, expected_choices_left -): - intersection, choices_left = find_response_choices_intersection(response, choice) - assert intersection == expected_intersection - assert choices_left == expected_choices_left - - -@pytest.mark.parametrize( - "response,choice,expected_prefix", - ( - ([1, 2, 3], [1, 2, 3, 4], [1, 2, 3]), - ([1, 2, 3], [1, 2, 3], [1, 2, 3]), - ([4, 5], [1, 2, 3], []), - ), -) -def test_find_longest_common_prefix(response, choice, expected_prefix): - prefix = find_longest_intersection(response, choice) - assert prefix == expected_prefix - - -@pytest.mark.parametrize( - "transposed,mask_size,expected_mask", - ( - ([{1, 2}, {3, 4}], 3, {1: 100, 2: 100, 3: 100}), - ([{1, 2}, {3, 4}], 4, {1: 100, 2: 100, 3: 100, 4: 100}), - ), -) -def test_build_optimistic_mask(transposed, mask_size, expected_mask): - mask = build_optimistic_mask(transposed, mask_size) - assert mask == expected_mask diff --git a/tests/test_base.py b/tests/test_base.py deleted file mode 100644 index 24c84f7d..00000000 --- a/tests/test_base.py +++ /dev/null @@ -1,275 +0,0 @@ -import numpy as np -import pytest -from numpy.testing import assert_array_equal - -from outlines.base import vectorize - - -def test_vectorize_docstring(): - def test(x): - """This is a test docstring""" - return x - - fn = vectorize(test) - assert fn.__doc__ == "This is a test docstring" - assert fn.__name__ == "test" - - async def test(x): - """This is a test docstring""" - return x - - fn = vectorize(test) - assert fn.__doc__ == "This is a test docstring" - assert fn.__name__ == "test" - - -def test_vectorize_thunk(): - def thunk(): - """A thunk""" - return 1 - - fn = vectorize(thunk) - assert fn() == 1 - - async def thunk(): - """A thunk""" - return 1 - - fn = vectorize(thunk) - assert fn() == 1 - - -def test_vectorize_scalar_simple(): - def passthrough(x): - """A passthrough function.""" - return x - - fn = vectorize(passthrough) - - out_vector = fn(["one", "two", "three"]) - assert_array_equal(out_vector, ["one", "two", "three"]) - - out_array = fn([["one", "two"], ["three", "four"]]) - assert_array_equal(out_array, [["one", "two"], ["three", "four"]]) - - async def passthrough(x): - """A passthrough function.""" - return x - - fn = vectorize(passthrough) - assert fn.__doc__ == "A passthrough function." - - out_vector = fn(["one", "two", "three"]) - assert_array_equal(out_vector, ["one", "two", "three"]) - - out_array = fn([["one", "two"], ["three", "four"]]) - assert_array_equal(out_array, [["one", "two"], ["three", "four"]]) - - -def test_vectorize_scalar_multiple_outputs(): - def passthrough_multiple_outputs(x): - return x, x - - fn = vectorize(passthrough_multiple_outputs) - out = fn(["one", "two", "three"]) - assert len(out) == 2 - assert_array_equal(out[0], ["one", "two", "three"]) - assert_array_equal(out[1], ["one", "two", "three"]) - - async def passthrough_multiple_outputs(x): - return x, x - - fn = vectorize(passthrough_multiple_outputs) - out = fn(["one", "two", "three"]) - assert len(out) == 2 - assert_array_equal(out[0], ["one", "two", "three"]) - assert_array_equal(out[1], ["one", "two", "three"]) - - -def test_vectorize_scalar_args(): - def passthrough_args(*args): - """A passthrough function.""" - result = "" - for arg in args: - result += arg - return result - - fn = vectorize(passthrough_args) - - out_array = fn(["one", "two"], ["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn([["one", "two"], ["three", "four"]], ["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - async def passthrough_args(*args): - """A passthrough function.""" - result = "" - for arg in args: - result += arg - return result - - fn = vectorize(passthrough_args) - - out_array = fn(["one", "two"], ["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn([["one", "two"], ["three", "four"]], ["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - -def test_vectorize_scalar_kwargs(): - def passthrough_kwargs(**kwargs): - """A passthrough function.""" - result = "" - for _, value in kwargs.items(): - result += value - return result - - fn = vectorize(passthrough_kwargs) - - out_array = fn(first=["one", "two"], second=["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn(first=[["one", "two"], ["three", "four"]], second=["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - async def passthrough_kwargs(**kwargs): - """A passthrough function.""" - result = "" - for _, value in kwargs.items(): - result += value - return result - - fn = vectorize(passthrough_kwargs) - - out_array = fn(first=["one", "two"], second=["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn(first=[["one", "two"], ["three", "four"]], second=["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - -def test_signature_invalid(): - with pytest.raises(ValueError): - vectorize(lambda x: x, "(m,)->()") - - with pytest.raises(TypeError, match="wrong number of positional"): - fn = vectorize(lambda x, y: x, "()->()") - fn(1, 2) - - with pytest.raises(ValueError, match="wrong number of outputs"): - - def test_multioutput(x, y): - return x, y - - fn = vectorize(test_multioutput, "(),()->()") - fn(1, 2) - - -def test_vectorize_simple(): - def test(x): - return x - - fn = vectorize(test, "(m)->(m)") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["one", "two", "three"], ["four", "five", "six"]]) - - fn = vectorize(test, "()->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["one", "two", "three"], ["four", "five", "six"]]) - - -def test_vectorize_kwargs(): - def passthrough_kwargs(**kwargs): - """A passthrough function.""" - result = "" - for _, value in kwargs.items(): - result += value - return result - - fn = vectorize(passthrough_kwargs, "(),()->()") - - out_array = fn(first=["one", "two"], second=["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn(first=[["one", "two"], ["three", "four"]], second=["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - async def passthrough_kwargs(**kwargs): - """A passthrough function.""" - result = "" - for _, value in kwargs.items(): - result += value - return result - - fn = vectorize(passthrough_kwargs, "(),()->()") - - out_array = fn(first=["one", "two"], second=["1", "2"]) - assert_array_equal(out_array, ["one1", "two2"]) - - # Broadcasting - out_array = fn(first=[["one", "two"], ["three", "four"]], second=["1", "2"]) - assert_array_equal(out_array, [["one1", "two2"], ["three1", "four2"]]) - - -def test_vectorize_reduce(): - def test(x): - return x[0] - - fn = vectorize(test, "(m)->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, ["one", "four"]) - - fn = vectorize(test, "()->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["o", "t", "t"], ["f", "f", "s"]]) - - -def test_vectorize_expand(): - def test(x): - return np.array([x for i in range(3)]) - - fn = vectorize(test, "()->(s)") - out = fn(["one", "two"]) - assert_array_equal(out, [["one", "one", "one"], ["two", "two", "two"]]) - - -def test_vectorize_coroutine_simple(): - async def test(x): - return x - - fn = vectorize(test, "(m)->(m)") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["one", "two", "three"], ["four", "five", "six"]]) - - fn = vectorize(test, "()->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["one", "two", "three"], ["four", "five", "six"]]) - - -def test_vectorize_coroutine_reduce(): - async def test(x): - return x[0] - - fn = vectorize(test, "(m)->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, ["one", "four"]) - - fn = vectorize(test, "()->()") - out = fn([["one", "two", "three"], ["four", "five", "six"]]) - assert_array_equal(out, [["o", "t", "t"], ["f", "f", "s"]]) - - -def test_vectorize_coroutine_expand(): - async def test(x): - return np.array([x for i in range(3)]) - - fn = vectorize(test, "()->(s)") - out = fn(["one", "two"]) - assert_array_equal(out, [["one", "one", "one"], ["two", "two", "two"]]) From 83f906a42f4a02ede165a5352181bfaffd207229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 13:51:27 +0200 Subject: [PATCH 06/20] Remove examples --- examples/babyagi.py | 167 --------- examples/bentoml/.bentoignore | 5 - examples/bentoml/bentofile.yaml | 9 - examples/bentoml/import_model.py | 24 -- examples/bentoml/requirements.txt | 5 - examples/bentoml/service.py | 78 ----- examples/cerebrium/cerebrium.toml | 26 -- examples/cerebrium/main.py | 43 --- examples/cfg.py | 89 ----- examples/dating_profile.py | 176 ---------- examples/llamacpp_example.py | 44 --- examples/llamacpp_processor.py | 50 --- examples/math_generate_code.py | 41 --- examples/meta_prompting.py | 168 --------- examples/modal_example.py | 81 ----- examples/parsing.py | 106 ------ examples/pick_odd_one_out.py | 43 --- examples/react.py | 76 ---- examples/sampling.ipynb | 401 ---------------------- examples/self_consistency.py | 82 ----- examples/simulation_based_inference.ipynb | 370 -------------------- examples/transformers_integration.py | 25 -- examples/vllm_integration.py | 24 -- 23 files changed, 2133 deletions(-) delete mode 100644 examples/babyagi.py delete mode 100644 examples/bentoml/.bentoignore delete mode 100644 examples/bentoml/bentofile.yaml delete mode 100644 examples/bentoml/import_model.py delete mode 100644 examples/bentoml/requirements.txt delete mode 100644 examples/bentoml/service.py delete mode 100644 examples/cerebrium/cerebrium.toml delete mode 100644 examples/cerebrium/main.py delete mode 100644 examples/cfg.py delete mode 100644 examples/dating_profile.py delete mode 100644 examples/llamacpp_example.py delete mode 100644 examples/llamacpp_processor.py delete mode 100644 examples/math_generate_code.py delete mode 100644 examples/meta_prompting.py delete mode 100644 examples/modal_example.py delete mode 100644 examples/parsing.py delete mode 100644 examples/pick_odd_one_out.py delete mode 100644 examples/react.py delete mode 100644 examples/sampling.ipynb delete mode 100644 examples/self_consistency.py delete mode 100644 examples/simulation_based_inference.ipynb delete mode 100644 examples/transformers_integration.py delete mode 100644 examples/vllm_integration.py diff --git a/examples/babyagi.py b/examples/babyagi.py deleted file mode 100644 index 6af2ead8..00000000 --- a/examples/babyagi.py +++ /dev/null @@ -1,167 +0,0 @@ -"""This example is a simplified translation of BabyAGI. - -It currently does not use the vector store retrieval - -The original repo can be found at https://github.com/yoheinakajima/babyagi -""" -from collections import deque -from typing import Deque, List - -import outlines -import outlines.models as models - -model = models.openai("gpt-3.5-turbo") -complete = outlines.generate.text(model) - - -################# -# Perform tasks # -################# - - -@outlines.prompt -def perform_task_ppt(objective: str, task: str): - """You are an AI who performs one task based on the following objective: {{objective}}. - - Your task: {{task.task_name}} - - Response: - """ - - -##################### -# Create a new task # -##################### - - -@outlines.prompt -def create_tasks_ppt( - objective: str, previous_task: str, result: str, task_list: List[str] -): - """You are an task creation AI that uses the result of an execution agent to \ - create new tasks with the following objective: {{objective}}. - - The last completed task has the result: {{result}}. - - This result was based on this task description: {{previous_task}}. These are \ - incomplete tasks: {{task_list | join(task_list)}}. - - Based on the result, create new tasks to be completed by the AI system that \ - do not overlap with incomplete tasks. - - Return the tasks as an array. - """ - - -def create_tasks_fmt(result: str) -> List[str]: - new_tasks = result.split("\n") - - task_list = [] - for task in new_tasks: - parts = task.strip().split(".", 1) - if len(parts) == 2: - task_list.append(parts[1].strip()) - - return task_list - - -######################## -# Prioritize new tasks # -######################## - - -@outlines.prompt -def prioritize_tasks_ppt(objective: str, task_names: List[str], next_task_id: int): - """You are a task prioritization AI tasked with cleaning the formatting of \ - and reprioritizing the following tasks: {{task_names}}. - - Consider the ultimate objective of your team: {{objective}}. - - Do not remove any tasks. Return the result as a numbered list, like: - #. First task - #. Second task - - Start the tasks list with the number {{next_task_id}}. - """ - - -def prioritize_tasks_fmt(result: str): - new_tasks = result.split("\n") - - task_list: Deque = deque([]) - for task in new_tasks: - parts = task.strip().split(".", 1) - if len(parts) == 2: - task_id = int(parts[0].strip()) - task_name = parts[1].strip() - task_list.append({"task_id": task_id, "task_name": task_name}) - - return task_list - - -objective = "Becoming rich while doing nothing." -first_task = { - "task_id": 1, - "task_name": "Find a repeatable, low-maintainance, scalable business.", -} -next_task_id = 1 -task_list = deque([first_task]) - - -def one_cycle(objective: str, task_list, next_task_id: int): - """One BabyAGI cycle. - - It consists in executing the highest-priority task, creating some new tasks - given the result, and re-priotizing the tasks. - - Parameters - ---------- - objective - The overall objective of the session. - task_list - The current list of tasks to perform. - task_id_counter - The current task id. - - """ - - task = task_list.popleft() - - prompt = perform_task_ppt(objective, task) - result = complete(prompt) - - prompt = create_tasks_ppt( - objective, first_task["task_name"], result, [first_task["task_name"]] - ) - new_tasks = complete(prompt) - - new_tasks = create_tasks_fmt(new_tasks) - - for task in new_tasks: - next_task_id += 1 - task_list.append({"task_id": next_task_id, "task_name": task}) - - prompt = prioritize_tasks_ppt( - objective, [task["task_name"] for task in task_list], next_task_id - ) - prioritized_tasks = complete(prompt) - - prioritized_tasks = prioritize_tasks_fmt(prioritized_tasks) - - return task, result, prioritized_tasks, next_task_id - - -# Let's run it for 5 cycles to see how it works without spending a fortune. -for _ in range(5): - print("\033[95m\033[1m" + "\n*****TASK LIST*****\n" + "\033[0m\033[0m") - for t in task_list: - print(" β€’ " + str(t["task_name"])) - - task, result, task_list, next_task_id = one_cycle( - objective, task_list, next_task_id - ) - - print("\033[92m\033[1m" + "\n*****NEXT TASK*****\n" + "\033[0m\033[0m") - print(task) - print("\033[93m\033[1m" + "\n*****TASK RESULT*****\n" + "\033[0m\033[0m") - print(result) diff --git a/examples/bentoml/.bentoignore b/examples/bentoml/.bentoignore deleted file mode 100644 index d9cf1150..00000000 --- a/examples/bentoml/.bentoignore +++ /dev/null @@ -1,5 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints -venv/ diff --git a/examples/bentoml/bentofile.yaml b/examples/bentoml/bentofile.yaml deleted file mode 100644 index 437fa643..00000000 --- a/examples/bentoml/bentofile.yaml +++ /dev/null @@ -1,9 +0,0 @@ -service: "service:Outlines" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -python: - requirements_txt: "./requirements.txt" - lock_packages: false diff --git a/examples/bentoml/import_model.py b/examples/bentoml/import_model.py deleted file mode 100644 index c385fe3d..00000000 --- a/examples/bentoml/import_model.py +++ /dev/null @@ -1,24 +0,0 @@ -import bentoml - -MODEL_ID = "mistralai/Mistral-7B-v0.1" -BENTO_MODEL_TAG = MODEL_ID.lower().replace("/", "--") - - -def import_model(model_id, bento_model_tag): - import torch - from transformers import AutoModelForCausalLM, AutoTokenizer - - tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) - model = AutoModelForCausalLM.from_pretrained( - MODEL_ID, - torch_dtype=torch.float16, - low_cpu_mem_usage=True, - ) - - with bentoml.models.create(bento_model_tag) as bento_model_ref: - tokenizer.save_pretrained(bento_model_ref.path) - model.save_pretrained(bento_model_ref.path) - - -if __name__ == "__main__": - import_model(MODEL_ID, BENTO_MODEL_TAG) diff --git a/examples/bentoml/requirements.txt b/examples/bentoml/requirements.txt deleted file mode 100644 index bb3b90d5..00000000 --- a/examples/bentoml/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -bentoml>=1.2.11 -outlines==0.0.37 -transformers==4.38.2 -datasets==2.18.0 -accelerate==0.27.2 diff --git a/examples/bentoml/service.py b/examples/bentoml/service.py deleted file mode 100644 index 98d46894..00000000 --- a/examples/bentoml/service.py +++ /dev/null @@ -1,78 +0,0 @@ -import typing as t - -import bentoml -from import_model import BENTO_MODEL_TAG - -DEFAULT_SCHEMA = """{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}""" - - -@bentoml.service( - traffic={ - "timeout": 300, - }, - resources={ - "gpu": 1, - "gpu_type": "nvidia-l4", - }, -) -class Outlines: - bento_model_ref = bentoml.models.get(BENTO_MODEL_TAG) - - def __init__(self) -> None: - import torch - - import outlines - - self.model = outlines.models.transformers( - self.bento_model_ref.path, - device="cuda", - model_kwargs={"torch_dtype": torch.float16}, - ) - - @bentoml.api - async def generate( - self, - prompt: str = "Give me a character description.", - json_schema: t.Optional[str] = DEFAULT_SCHEMA, - ) -> t.Dict[str, t.Any]: - import outlines - - generator = outlines.generate.json(self.model, json_schema) - character = generator(prompt) - - return character diff --git a/examples/cerebrium/cerebrium.toml b/examples/cerebrium/cerebrium.toml deleted file mode 100644 index f7b9fb1e..00000000 --- a/examples/cerebrium/cerebrium.toml +++ /dev/null @@ -1,26 +0,0 @@ -[cerebrium.deployment] -name = "cerebrium" -python_version = "3.11" -cuda_version = "12" -include = "[./*, main.py, cerebrium.toml]" -exclude = "[.*]" -shell_commands = [] - -[cerebrium.hardware] -cpu = 2 -memory = 14.0 -gpu = "AMPERE A10" -gpu_count = 1 -provider = "aws" -region = "us-east-1" - -[cerebrium.scaling] -min_replicas = 0 -max_replicas = 5 -cooldown = 60 - -[cerebrium.dependencies.pip] -outline = "==0.0.37" -transformers = "==4.38.2" -datasets = "==2.18.0" -accelerate = "==0.27.2" diff --git a/examples/cerebrium/main.py b/examples/cerebrium/main.py deleted file mode 100644 index b61cdb6e..00000000 --- a/examples/cerebrium/main.py +++ /dev/null @@ -1,43 +0,0 @@ -import outlines - -model = outlines.models.transformers("mistralai/Mistral-7B-Instruct-v0.2") - -schema = { - "title": "Character", - "type": "object", - "properties": { - "name": {"title": "Name", "maxLength": 10, "type": "string"}, - "age": {"title": "Age", "type": "integer"}, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": {"title": "Strength", "type": "integer"}, - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string", - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string", - }, - }, -} - -generator = outlines.generate.json(model, schema) - - -def generate( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - character = generator( - f"[INST]Give me a character description. Describe {prompt}.[/INST]" - ) - - print(character) - return character diff --git a/examples/cfg.py b/examples/cfg.py deleted file mode 100644 index 99edf35f..00000000 --- a/examples/cfg.py +++ /dev/null @@ -1,89 +0,0 @@ -import outlines.generate as generate -import outlines.models as models - -nlamb_grammar = r""" - start: sentence - - sentence: noun verb noun -> simple - | noun verb "like" noun -> comparative - - noun: adj? NOUN - verb: VERB - adj: ADJ - - NOUN: "flies" | "bananas" | "fruit" - VERB: "like" | "flies" - ADJ: "fruit" - - %import common.WS - %ignore WS -""" - -calc_grammar = r""" - ?start: sum - | NAME "=" sum -> assign_var - - ?sum: product - | sum "+" product -> add - | sum "-" product -> sub - - ?product: atom - | product "*" atom -> mul - | product "/" atom -> div - - ?atom: NUMBER -> number - | "-" atom -> neg - | NAME -> var - | "(" sum ")" - - %import common.LETTER -> NAME - %import common.INT -> NUMBER - %import common.WS_INLINE - - %ignore WS_INLINE -""" - -dyck_grammar = r""" - start: s - s: /a+/ - | "(" s ")" - | "{" s "}" - | "[" s "]" -""" - -json_grammar = r""" - ?start: value - - ?value: object - | array - | string - | SIGNED_NUMBER -> number - | "true" -> true - | "false" -> false - | "null" -> null - - array : "[" [value ("," value)*] "]" - object : "{" [pair ("," pair)*] "}" - pair : string ":" value - - inner: /([^"]|\\\")+/ | - string : "\"" inner "\"" - - %import common.SIGNED_NUMBER - %import common.WS - - %ignore WS -""" - -model = models.transformers("hf-internal-testing/tiny-random-gpt2") -batch_size = 10 -for grammar in [nlamb_grammar, calc_grammar, dyck_grammar, json_grammar]: - generator = generate.cfg(model, grammar, max_tokens=model.model.config.n_positions) - sequences = generator([" "] * batch_size) - for seq in sequences: - try: - parse = generator.fsm.parser.parse(seq) - assert parse is not None - print("SUCCESS", seq) - except Exception: # will also fail if goes over max_tokens / context window - print("FAILURE", seq) diff --git a/examples/dating_profile.py b/examples/dating_profile.py deleted file mode 100644 index acc00126..00000000 --- a/examples/dating_profile.py +++ /dev/null @@ -1,176 +0,0 @@ -from dataclasses import dataclass -from enum import Enum - -import torch -import transformers -from pydantic import BaseModel, conlist - -import outlines -from outlines import models - - -class QuestionChoice(str, Enum): - A = "The key to my heart is" - B = "The first item on my bucket list is" - C = "Perks of dating me" - D = "Message me if you also love" - E = "People would describe me as" - F = "I can beat you in a game of" - - -@dataclass -class QuestionAnswer: - question: QuestionChoice - answer: str - - -class DatingProfile(BaseModel): - # It is possible put length constraints on these strings using constr- however, this appears to dramatically increase the generation time - # This may be resolved in the future with this PR: https://github.com/outlines-dev/outlines/pull/272 - bio: str - job: str - # Ignore mypy checks here because it still doesn't support conlist or constr: https://github.com/pydantic/pydantic/issues/975 - interests: conlist(str, min_length=1, max_length=5) # type: ignore - qna1: QuestionAnswer - qna2: QuestionAnswer - - -@dataclass -class Example: - description: str - profile: DatingProfile - - -@outlines.prompt -def dating_profile_prompt(description: str, examples: list[Example]): - """ - You are a world-renowned matchmaker who understands the modern dating market. Your job is to generate dating app profiles for male clients interested in women based on a provided description. The profiles should be authentic, show off their strengths, and maximize their likelihood of getting matches on dating apps. - Here are some examples of past clients that you have successfully created profiles for: - {% for example in examples %} - Description: - {{ example.description }} - Profile: - {{ example.profile }} - {% endfor %} - Here is the new client who you need to create a profile for: - Description: {{ description }} - Profile: - """ - - -samples: list[Example] = [ - Example( - description="I'm an author and former professional soccer player living in Seattle who publishes popular fiction books. A typical day for me starts by hanging out with my cat, drinking a coffee, and reading as much as I can in a few hours. Then, I'll prepare a quick smoothie before starting to write for a few hours, take a break with soccer or running a few miles, and finally meet friends for dinner at a new, hip restaurant in the evening. Sometimes we go axe-throwing afterwards, or play poker, or watch a comedy show, or visit a dive bar. On my vacations, I travel extensively to countries South America, Europe, and Asia, with the goal of visiting them all!", - profile=DatingProfile( - bio="Adventurer, dreamer, author, and soccer enthusiast. Life’s too short to waste time so I make the most of each day by exploring new places and playing with my friends on the pitch. What’s your favorite way to get out and have fun?", - job="Famous Soccer Player -> Famous Author", - interests=["Soccer", "Travel", "Friends", "Books", "Fluffy Animals"], - qna1=QuestionAnswer( - question=QuestionChoice.B, answer="swim in all seven oceans!" - ), - qna2=QuestionAnswer( - question=QuestionChoice.E, - answer="fun-loving, adventurous, and a little bit crazy", - ), - ), - ), - Example( - description="I run my company and build houses for a living. I'm a big fan of the outdoors and love to go hiking, camping, and fishing. I don't like video games, but do like to watch movies. My love language is home-cooked food, and I'm looking for someone who isn't afraid to get their hands dirty.", - profile=DatingProfile( - bio="If you're looking for a Montana man who loves to get outdoors and hunt, and who's in-tune with his masculinity then I'm your guy!", - job="House Construction Manager / Entrepreneur", - interests=["Hunting", "Hiking", "The outdoors", "Home-cooked food"], - qna1=QuestionAnswer(question=QuestionChoice.A, answer="food made at home"), - qna2=QuestionAnswer( - question=QuestionChoice.C, - answer="having a man in your life who can fix anything", - ), - ), - ), - Example( - description="I run my own Youtube channel with 10M subscribers. I love working with kids, and my audience skews pretty young too. In my free time, I play Fortnite and Roblox. I'm looking for someone who is also a gamer and likes to have fun. I'm learning Japanese in my free time as well as how to cook.", - profile=DatingProfile( - bio="Easy on the eyes (find me on Youtube!) and great with kids. What more do you need?", - job="Youtuber 10M+ subscribers", - interests=["Kids", "Gaming", "Japanese"], - qna1=QuestionAnswer(question=QuestionChoice.D, answer="anime and gaming!"), - qna2=QuestionAnswer(question=QuestionChoice.F, answer="Fortnite, gg ez"), - ), - ), -] - - -# Below requires ~13GB of GPU memory -# https://huggingface.co/mosaicml/mpt-7b-8k-instruct -# Motivation: Reasonably large model that fits on a single GPU and has been fine-tuned for a larger context window -config = transformers.AutoConfig.from_pretrained( - "mosaicml/mpt-7b-8k-instruct", trust_remote_code=True -) -config.init_device = "meta" -model = models.transformers( - model_name="mosaicml/mpt-7b-8k-instruct", - device="cuda", - model_kwargs={ - "config": config, - "trust_remote_code": True, - "torch_dtype": torch.bfloat16, - "device_map": {"": 0}, - }, -) - -new_description = "I'm a laid-back lawyer who spends a lot of his free-time gaming. I work in a corporate office, but ended up here after the start-up I cofounded got acquired, so still play ping pong with my cool coworkers every day. I have a bar at home where I make cocktails, which is great for entertaining friends. I secretly like to wear suits and get a new one tailored every few months. I also like weddings because I get to wear those suits, and it's a good excuse for a date. I watch the latest series because I'm paying, with my hard-earned money, for every streaming service." - -prompt = dating_profile_prompt(description=new_description, examples=samples) -profile = outlines.generate.json(model, DatingProfile)(prompt) # type: ignore -print(profile) - -# Sample generated profiles -""" -{ - "bio": "I'm an ambitious lawyer with a casual and fashionable style. I love games and sports, but my true passion is preparing refreshing cocktails at home and dressing to the nines at weddings. I'm currently looking for a woman to show a good time to and get a kiss on the opulent suit I just had made. Send resumΓƒ € to this inbox.", - "job": "Lawyer", - "interests": - [ - "Stylish guys", - "Gaming", - "Ping pong", - "Cocktails", - "Weddings" - ], - "qna1": - { - "question": "The first item on my bucket list is", - "answer": "be married and have a family." - }, - "qna2": - { - "question": "People would describe me as", - "answer": "charming, stylish, and funny." - } -} -""" - -""" -{ - "bio": "I’m a sexy lawyer with time on my hands. I love to game and play ping pong, but the real reason you should swipe to the right is because I look great in a suit. Who doesn’t love a man in a suit? Just saying. Send me a message if you think it’s time to take your dating life to the next level.", - "job": "Lawyer", - "interests": - [ - "Gaming", - "Ping Pong", - "Tailored Suits", - "Weddings", - "Streaming Services" - ], - "qna1": - { - "question": "The first item on my bucket list is", - "answer": "simulate space but stay alive for as long as possible" - }, - "qna2": - { - "question": "People would describe me as", - "answer": "easy-going, a little nerdy but with a mature essence" - } -} -""" diff --git a/examples/llamacpp_example.py b/examples/llamacpp_example.py deleted file mode 100644 index 22d0da3b..00000000 --- a/examples/llamacpp_example.py +++ /dev/null @@ -1,44 +0,0 @@ -from enum import Enum - -from pydantic import BaseModel, constr - -import outlines - - -class Weapon(str, Enum): - sword = "sword" - axe = "axe" - mace = "mace" - spear = "spear" - bow = "bow" - crossbow = "crossbow" - - -class Armor(str, Enum): - leather = "leather" - chainmail = "chainmail" - plate = "plate" - - -class Character(BaseModel): - name: constr(max_length=10) - age: int - armor: Armor - weapon: Weapon - strength: int - - -if __name__ == "__main__": - # curl -L -o mistral-7b-instruct-v0.2.Q5_K_M.gguf https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q5_K_M.gguf - model = outlines.models.llamacpp("./mistral-7b-instruct-v0.2.Q5_K_M.gguf") - - # Construct structured sequence generator - generator = outlines.generate.json(model, Character) - - # Draw a sample - seed = 789005 - - prompt = "Instruct: You are a leading role play gamer. You have seen thousands of different characters and their attributes.\nPlease return a JSON object with common attributes of an RPG character. Give me a character description\nOutput:" - - sequence = generator(prompt, seed=seed, max_tokens=512) - print(sequence) diff --git a/examples/llamacpp_processor.py b/examples/llamacpp_processor.py deleted file mode 100644 index 909df38f..00000000 --- a/examples/llamacpp_processor.py +++ /dev/null @@ -1,50 +0,0 @@ -from enum import Enum - -from llama_cpp import Llama, LogitsProcessorList -from pydantic import BaseModel, constr - -from outlines.generate.processors import JSONLogitsProcessor -from outlines.models.llamacpp import LlamaCppTokenizer - - -class Weapon(str, Enum): - sword = "sword" - axe = "axe" - mace = "mace" - spear = "spear" - bow = "bow" - crossbow = "crossbow" - - -class Armor(str, Enum): - leather = "leather" - chainmail = "chainmail" - plate = "plate" - - -class Character(BaseModel): - name: constr(max_length=10) - age: int - armor: Armor - weapon: Weapon - strength: int - - -if __name__ == "__main__": - llama = Llama("./phi-2.Q4_K_M.gguf") - tokenizer = LlamaCppTokenizer(llama) - - prompt = "Instruct: You are a leading role play gamer. You have seen thousands of different characters and their attributes.\nPlease return a JSON object with common attributes of an RPG character. Give me a character description\nOutput:" - - logits_processor = JSONLogitsProcessor(Character, tokenizer) - - json_str = llama.create_completion( - prompt, - top_k=40, - top_p=0.95, - temperature=0.7, - max_tokens=100, - logits_processor=LogitsProcessorList([logits_processor]), - )["choices"][0]["text"] - - print(json_str) diff --git a/examples/math_generate_code.py b/examples/math_generate_code.py deleted file mode 100644 index 5bf16e86..00000000 --- a/examples/math_generate_code.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Example from https://dust.tt/spolu/a/d12ac33169""" -import outlines -import outlines.models as models - -examples = [ - {"question": "What is 37593 * 67?", "code": "37593 * 67"}, - { - "question": "Janet's ducks lay 16 eggs per day. She eats three for breakfast every morning and bakes muffins for her friends every day with four. She sells the remainder at the farmers' market daily for $2 per fresh duck egg. How much in dollars does she make every day at the farmers' market?", - "code": "(16-3-4)*2", - }, - { - "question": "A robe takes 2 bolts of blue fiber and half that much white fiber. How many bolts in total does it take?", - "code": " 2 + 2/2", - }, -] - -question = "Carla is downloading a 200 GB file. She can download 2 GB/minute, but 40% of the way through the download, the download fails. Then Carla has to restart the download from the beginning. How load did it take her to download the file in minutes?" - - -@outlines.prompt -def answer_with_code_prompt(question, examples): - """ - {% for example in examples %} - QUESTION: {{example.question}} - CODE: {{example.code}} - - {% endfor %} - QUESTION: {{question}} - CODE:""" - - -def execute_code(code): - result = eval(code) - return result - - -prompt = answer_with_code_prompt(question, examples) -model = models.openai("gpt-3.5-turbo") -answer = outlines.generate.text(model)(prompt) -result = execute_code(answer) -print(f"It takes Carla {result:.0f} minutes to download the file.") diff --git a/examples/meta_prompting.py b/examples/meta_prompting.py deleted file mode 100644 index 8f9ba5ce..00000000 --- a/examples/meta_prompting.py +++ /dev/null @@ -1,168 +0,0 @@ -"""Meta-prompting examples. - -References ----------- - -.. [0] "Prompting is programming: A Query Language for Large Language Models" - https://arxiv.org/abs/2212.06094 -.. [1] "Prompt programming For Large Language Models: Beyond the Few-Shot Paradigm" - https://arxiv.org/abs/2102.07350. - -""" -import argparse - -import outlines -import outlines.models as models - - -def split_into_steps(question, model_name: str): - @outlines.prompt - def solve(question): - """{{question}} - Rephrase : : as a true or false statement, identify an Object, relationship and subject - """ - - model = models.openai(model_name) - generator = outlines.generate.text(model) - - prompt = solve(question) - answer = generator(prompt, 500) - prompt += ( - answer - + "\n what is the only option that displays the same type of relationship as : :?" - ) - answer = generator(prompt, 500) - completed = prompt + answer - - return completed - - -def fill_in_the_blanks(question, model_name: str): - @outlines.prompt - def determine_goal(question): - """{{question}} - - In order to solve this problem, we will analyze each of the options and determine - """ - - @outlines.prompt - def solve(memory): - """{{memory}}. Let's begin.""" - - model = models.openai(model_name) - generator = outlines.generate.text(model) - - prompt = determine_goal(question) - answer = generator(prompt, stop_at=["."]) - prompt = solve(prompt + answer) - answer = generator(prompt, max_tokens=500) - completed = prompt + answer - - return completed - - -def ask_an_expert(question, model_name: str): - @outlines.prompt - def find_expert(question): - """ - {{question}} - I entered my question into the Expert Generator \ - and waited. The Expert Generator will render a \ - simulation of an expert to answer my question. \ - The expert could be anyone, dead or alive, real \ - or fictional; the machine will find the person \ - most qualified to answer the question. For this \ - question in particular, the expert must be someone \ - who has thought a lot about the problem of \ - artificial intelligence and its alignment. \ - The Expert Generator beeped, indicating that it has \ - found the most qualified expert. The name displayed \ - on the screen: " - """ - - @outlines.prompt - def get_answer(question, expert, memory): - """ - {{memory}}". - I am ready to ask my question. - "{{expert}}" I say, - {{question}} - """ - - model = models.openai(model_name) - generator = outlines.generate.text(model) - - prompt = find_expert(question) - expert = generator(prompt, stop_at=['"']) - prompt = get_answer(question, expert, prompt + expert) - answer = generator(prompt, max_tokens=500) - completed = prompt + answer - - return completed - - -def ask_an_expert_simple(question, model_name: str): - @outlines.prompt - def find_expert(question): - """ - Q: {{question}} - A: A good person to answer this question would be - """ - - @outlines.prompt - def get_answer(expert, memory): - """ - {{memory}}. - - For instance, {{expert}} would answer - """ - - model = models.openai(model_name) - generator = outlines.generate.text(model) - - prompt = find_expert(question) - expert = generator(prompt, stop_at=["\n", "."]) - prompt = get_answer(expert, prompt + expert) - answer = generator(prompt, max_tokens=500) - completed = prompt + answer - - return completed - - -def run_example(model_fn, question, model_name): - completed = model_fn(question, model_name) - print("\n-----------------------") - print(f"{completed}") - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Run the Meta Prompting examples") - parser.add_argument( - "--model", - type=str, - default="gpt-3.5-turbo-1106", - help="The Large Language Model to use to run the examples.", - ) - args = parser.parse_args() - - math_q = "f(x) = x*x. What is f(f(3))?" - sat_q = """ - -BRAGGART :: MODESTY -A) FLEDGLING : EXPERIENCE -B) EMBEZZLER : GREED -C) WALLFLOWER : TIMIDITY -D) INVALID : MALADY -E) CANDIDATE : AMBITION - - """ - alignment_q = "What should humankind do to ensure that artificial general intelligence is aligned?" - meaning_q = "What is the meaning of life?" - - run_example(split_into_steps, math_q, args.model) - run_example( - split_into_steps, sat_q.lower(), args.model - ) # gpt>3.5 usually gets this one right - run_example(fill_in_the_blanks, sat_q, args.model) - run_example(ask_an_expert, alignment_q, args.model) - run_example(ask_an_expert_simple, meaning_q, args.model) diff --git a/examples/modal_example.py b/examples/modal_example.py deleted file mode 100644 index 34d4ee60..00000000 --- a/examples/modal_example.py +++ /dev/null @@ -1,81 +0,0 @@ -import modal - -app = modal.App(name="outlines-app") - - -outlines_image = modal.Image.debian_slim(python_version="3.11").pip_install( - "outlines==0.0.37", - "transformers==4.38.2", - "datasets==2.18.0", - "accelerate==0.27.2", -) - - -def import_model(): - import outlines - - outlines.models.transformers("mistralai/Mistral-7B-Instruct-v0.2") - - -outlines_image = outlines_image.run_function(import_model) - - -schema = """{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}""" - - -@app.function(image=outlines_image, gpu=modal.gpu.A100(memory=80)) -def generate( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - import outlines - - model = outlines.models.transformers("mistralai/Mistral-7B-v0.1", device="cuda") - - generator = outlines.generate.json(model, schema) - character = generator( - f"[INST]Give me a character description. Describe {prompt}.[/INST]" - ) - - print(character) - - -@app.local_entrypoint() -def main( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - generate.remote(prompt) diff --git a/examples/parsing.py b/examples/parsing.py deleted file mode 100644 index a10da4eb..00000000 --- a/examples/parsing.py +++ /dev/null @@ -1,106 +0,0 @@ -"""An example illustrating parser-based masking.""" -import math -import time -from copy import copy - -import torch -from lark.indenter import DedentError -from lark.lexer import UnexpectedCharacters, UnexpectedToken -from transformers import ( - AutoModelForCausalLM, - AutoTokenizer, - LogitsProcessor, - LogitsProcessorList, - set_seed, -) - -from outlines.fsm.parsing import PartialLark, PartialPythonIndenter - -revision = None -checkpoint = "Salesforce/codegen-350M-mono" -device = "cuda" - -tokenizer = AutoTokenizer.from_pretrained(checkpoint) - -model = AutoModelForCausalLM.from_pretrained( - checkpoint, trust_remote_code=True, revision=revision -).to(device) - -parser = PartialLark.open_from_package( - "tests", - "partial_python.lark", - ["text"], - parser="lalr", - postlex=PartialPythonIndenter(), - start="file_input", -) - - -class ParserLogitsProcessor(LogitsProcessor): - """Bias invalid token scores according to a running parse state.""" - - def __init__(self, parser): - self.parser = parser - self.parser_state = parser.parse("") - self.states_stack = [self.parser_state] - self.token_seq = None - self.token_idx = 0 - - def __call__( - self, input_ids: torch.LongTensor, scores: torch.FloatTensor - ) -> torch.FloatTensor: - if self.token_seq is None: - self.token_seq = tokenizer.decode(input_ids[0]) - self.token_idx = len(input_ids[0]) - 1 - else: - self.token_idx += 1 - self.token_seq += tokenizer.decode(input_ids[0][self.token_idx]) - - # Process the last sampled token - lex_state = self.parser_state.lexer.state - lex_state.text = self.token_seq - - self.parser.parse_from_state(self.parser_state, is_end=False) - - print(f'parsed:"{self.token_seq}"') - - mask = torch.full_like(scores, -math.inf) - - # Determine which tokens in the vocabulary are valid next tokens - # given the parser state. - # - # TODO: This is a very naive and slow approach. It could be done in - # parallel, easily memoized/cached, etc., but there are a few other - # approaches to try first that will dramatically reduce the - # amount of work needed here. - t0 = time.perf_counter() - for test_token, token_id in tokenizer.vocab.items(): - ps = copy(self.parser_state) - ls = ps.lexer.state - ls.text = self.token_seq + tokenizer.convert_tokens_to_string([test_token]) - - try: - self.parser.parse_from_state(ps, is_end=False) - mask[0][token_id] = 0 - except (EOFError, UnexpectedToken, UnexpectedCharacters, DedentError): - pass - - print(f"next token masking duration: {time.perf_counter() - t0}") - - return scores + mask - - -set_seed(20399) - -input_text = "def " -inputs = tokenizer.encode(input_text, return_tensors="pt").to(device) - -outputs = model.generate( - inputs, - max_length=100, - temperature=0.1, - logits_processor=LogitsProcessorList([ParserLogitsProcessor(parser)]), - renormalize_logits=True, -) - -print(tokenizer.decode(outputs[0])) diff --git a/examples/pick_odd_one_out.py b/examples/pick_odd_one_out.py deleted file mode 100644 index 6c4d4592..00000000 --- a/examples/pick_odd_one_out.py +++ /dev/null @@ -1,43 +0,0 @@ -"""Chain-of-thought prompting for Odd one out classification. - -Example taken from the LQML library [1]_. - -References ----------- -.. [1] Beurer-Kellner, L., Fischer, M., & Vechev, M. (2022). - Prompting Is Programming: A Query Language For Large Language Models. - arXiv preprint arXiv:2212.06094. - -""" -import outlines -import outlines.models as models - - -@outlines.prompt -def build_ooo_prompt(options): - """ - Pick the odd word out: skirt, dress, pen, jacket. - skirt is clothing, dress is clothing, pen is an object, jacket is clothing. - So the odd one is pen. - - Pick the odd word out: Spain, France, German, England, Singapore. - Spain is a country, France is a country, German is a language, ... - So the odd one is German. - - Pick the odd word out: {{ options | join(", ") }}. - - """ - - -options = ["sea", "mountains", "plains", "sock"] - -model = models.openai("gpt-3.5-turbo") -gen_text = outlines.generate.text(model) -gen_choice = outlines.generate.choice(model, options) - -prompt = build_ooo_prompt(options) -reasoning = gen_text(prompt, stop_at=["Pick the odd word", "So the odd one"]) -prompt += reasoning -result = gen_choice(prompt) -prompt += result -print(result) diff --git a/examples/react.py b/examples/react.py deleted file mode 100644 index ccd74dbb..00000000 --- a/examples/react.py +++ /dev/null @@ -1,76 +0,0 @@ -"""ReAct - -This example was inspired by the LQML library [1]_. The ReAct framework was -first developed in [2]_ and augments Chain-of-Thought prompting with the ability -for the model to query external sources. - -References ----------- -.. [1] Beurer-Kellner, L., Fischer, M., & Vechev, M. (2022). Prompting Is Programming: A Query Language For Large Language Models. arXiv preprint arXiv:2212.06094. -.. [2] Yao, S., Zhao, J., Yu, D., Du, N., Shafran, I., Narasimhan, K., & Cao, Y. (2022). React: Synergizing reasoning and acting in language models. arXiv preprint arXiv:2210.03629. - -""" -import requests # type: ignore - -import outlines -import outlines.models as models - - -@outlines.prompt -def build_reAct_prompt(question): - """What is the elevation range for the area that the eastern sector of the Colorado orogeny extends into? - Tho 1: I need to search Colorado orogeny, find the area that the eastern sector of the Colorado ... - Act 2: Search 'Colorado orogeny' - Obs 2: The Colorado orogeny was an episode of mountain building (an orogeny) ... - Tho 3: It does not mention the eastern sector. So I need to look up eastern sector. - ... - Tho 4: High Plains rise in elevation from around 1,800 to 7,000 ft, so the answer is 1,800 to 7,000 ft. - Act 5: Finish '1,800 to 7,000 ft' - {{ question }} - """ - - -@outlines.prompt -def add_mode(i, mode, result, prompt): - """{{ prompt }} - {{ mode }} {{ i }}: {{ result }} - """ - - -def search_wikipedia(query: str): - url = f"https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles={query}&origin=*" - response = requests.get(url) - page = response.json()["query"]["pages"] - return ".".join(list(page.values())[0]["extract"].split(".")[:2]) - - -prompt = build_reAct_prompt("Where is Apple Computers headquarted? ") -model = models.openai("gpt-3.5-turbo") -complete = outlines.generate.text(model) - -for i in range(1, 10): - mode = complete.generate_choice(prompt, choices=["Tho", "Act"], max_tokens=128) - prompt = add_mode(i, mode, "", prompt) - - if mode == "Tho": - thought = complete(prompt, stop_at="\n", max_tokens=128) - prompt += f"{thought}" - elif mode == "Act": - action = complete.generate_choice( - prompt, choices=["Search", "Finish"], max_tokens=128 - ) - prompt += f"{action} '" - - subject = complete( - prompt, stop_at=["'"], max_tokens=128 - ) # Apple Computers headquartered - subject = " ".join(subject.split()[:2]) - prompt += f"{subject}'" - - if action == "Search": - result = search_wikipedia(subject) - prompt = add_mode(i, "Obs", result, prompt) - else: - break - -print(prompt) diff --git a/examples/sampling.ipynb b/examples/sampling.ipynb deleted file mode 100644 index bcbcca1e..00000000 --- a/examples/sampling.ipynb +++ /dev/null @@ -1,401 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "62129e1a-e9de-454e-a714-35ccbcf0b518", - "metadata": {}, - "outputs": [], - "source": [ - "import functools as ft\n", - "import re\n", - "\n", - "import numpy as np\n", - "import matplotlib.pylab as plt\n", - "\n", - "import outlines.models as models\n", - "import outlines.text as text" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b20aafe8-b7a3-4df4-878f-b48b74e131df", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "env: OPENAI_API_KEY=# you key here\n" - ] - } - ], - "source": [ - "%env OPENAI_API_KEY= # you key here" - ] - }, - { - "cell_type": "markdown", - "id": "2a3514d6-d5d7-46e9-9b69-1251d337e094", - "metadata": {}, - "source": [ - "In this example we will look at completion results for questions from the GSM8K dataset, using few-shots prompts with 5 examples. We first use `outlines.text.prompt` to build the few-shot prompt. `outlines.text.prompt` is a decorator around \"prompt functions\" which contain the prompt template in its docstring. Outlines uses the Jinja2 templating engine to render the prompt when the function is called with the variables' values; it thus allows you to build complex prompts very easily." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ffe8bb11-6b51-4fe7-bfb3-c62556a60db8", - "metadata": {}, - "outputs": [], - "source": [ - "examples = [\n", - " {\n", - " \"question\": \"There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done, there will be 21 trees. How many trees did the grove workers plant today?\",\n", - " \"answer\": \"We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted. So, they must have planted 21 - 15 = 6 trees. The answer is 6.\",\n", - " },\n", - " {\n", - " \"question\": \"If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?\",\n", - " \"answer\": \"There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.\",\n", - " },\n", - " {\n", - " \"question\": \"Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?\",\n", - " \"answer\": \"Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74 chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.\",\n", - " },\n", - " {\n", - " \"question\": \"Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops did Jason give to Denny?\",\n", - " \"answer\": \"Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number of lollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.\",\n", - " },\n", - " {\n", - " \"question\": \"Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?\",\n", - " \"answer\": \"He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, so in total he has 7 + 2 = 9 toys. The answer is 9.\",\n", - " },\n", - " {\n", - " \"question\": \"There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?\",\n", - " \"answer\": \"There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 = 20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers. The answer is 29.\",\n", - " },\n", - " {\n", - " \"question\": \"Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many golf balls did he have at the end of wednesday?\",\n", - " \"answer\": \"Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.\",\n", - " },\n", - " {\n", - " \"question\": \"Olivia has $23. She bought five bagels for $3 each. How much money does she have left?\",\n", - " \"answer\": \"She bought 5 bagels for $3 each. This means she spent 5\",\n", - " },\n", - "]\n", - "\n", - "@text.prompt\n", - "def few_shot_prompt(question, examples):\n", - " \"\"\"\n", - " {% for example in examples %}\n", - " Q: {{ example.question }}\n", - " A: {{ example.answer }}\n", - " {% endfor %}\n", - " Q: {{ question }}\n", - " A:\n", - " \"\"\"\n", - "\n", - "# Prompt functions can be partially evaluated like any other function\n", - "gsm8k_prompt = ft.partial(few_shot_prompt, examples=examples)" - ] - }, - { - "cell_type": "markdown", - "id": "1eae0ec8-89f0-43fc-b055-6fcd64cbc03b", - "metadata": {}, - "source": [ - "## When `text-davinci-003` is uncertain" - ] - }, - { - "cell_type": "markdown", - "id": "a273ed78-e813-467e-85f3-16d7f283ba87", - "metadata": {}, - "source": [ - "Let us now sample 20 completions with the `text-davinci-003` model. Outlines is sampling first, and allows to draw several samples with both OpenAI and `transformers` models easily:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "beff960d-6833-4f24-af09-5b65886a9549", - "metadata": {}, - "outputs": [], - "source": [ - "model = models.text_completion.openai(\"text-davinci-003\", max_tokens=128)\n", - "\n", - "question = \"When I was 6 my sister was half my age. Now I’m 70 how old is my sister?\"\n", - "prompt = gsm8k_prompt(question)\n", - "answers = model(prompt, samples=20)" - ] - }, - { - "cell_type": "markdown", - "id": "1a895b6d-d4d4-40f9-9156-24ba7e21cc08", - "metadata": {}, - "source": [ - "The correct answer to this question is 67. Let us now count the different answers, and take a look at their distribution. Let us first define a few utility functions:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "f1c83d1f-a478-4509-890e-b84a2e0d8846", - "metadata": {}, - "outputs": [], - "source": [ - "def count_digits(answers):\n", - " digits = []\n", - " for answer in answers:\n", - " try:\n", - " match = re.findall(r\"\\d+\", answer)[-1]\n", - " if match is not None:\n", - " digit = int(match)\n", - " digits.append(digit)\n", - " except AttributeError:\n", - " print(f\"Could not parse the completion: '{answer}'\")\n", - " \n", - " unique_digits, counts = np.unique(digits, return_counts=True)\n", - " return {d: c for d, c in zip(unique_digits, counts)}\n", - "\n", - "def plot_counts(counts):\n", - " fig = plt.figure(figsize=(12,8))\n", - " ax = fig.add_subplot(111)\n", - " \n", - " bar = ax.bar(counts.keys(), counts.values())\n", - " ax.spines[[\"right\", \"top\", \"left\"]].set_visible(False)\n", - " ax.get_yaxis().set_visible(False)\n", - " ax.get_yaxis().set_visible(False)\n", - " \n", - " for rect in bar:\n", - " height = rect.get_height()\n", - " plt.text(rect.get_x() + rect.get_width() / 2.0, height, f'{height:.0f}', ha='center', va='bottom', fontsize=20)\n", - " \n", - " ax.set_xticks(list(counts.keys()))\n", - " ax.set_xlabel(\"Answer\")\n", - "\n", - "def entropy(counts):\n", - " counts = np.array(list(counts.values()))\n", - " probs = counts / np.sum(counts)\n", - " log_probs = np.log(probs)\n", - " return - np.sum(probs * log_probs)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "88668e09-bcd6-4a6a-83a5-838189b910eb", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAHgCAYAAACCbCTDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVwklEQVR4nO3df7DldX3f8dcbFtmVLb9cDDgLrB0DjNWUlWQzWBaDtEJg0BBiJk5VsKLFKRSsU7u2M8wKZouDjsg4Y0chBn9MTfgh3QkapQiCHSJWFigBAlMgggUkJlVJDXXh0z/2ILuwF9LZe+95372Px8yZvff7PeznvcB893m/53vOt8YYAQCAjnaZ9gAAADATsQoAQFtiFQCAtsQqAABtiVUAANoSqwAAtLXkRfb7XCsAAOZDbW+jM6sAALQlVgEAaEusAgvGddddl5NPPjn7779/dt9997ziFa/Icccdl69+9avTHg3YiTn2TNeLXbMK0MIHP/jBXHjhhVm5cmXe/OY3Z8WKFXn88cfzve99LzfccENOOOGEaY8I7IQce6avxnjB91B5gxUwdZ/97Gfz3ve+N6eeemo+85nP5CUveck2+3/+859nt912m9J0wM7KsWfebfcNVmIVaO3JJ5/MgQcemGXLluW+++573l8WAHPBsWcqthurLgMAWrv22mvz+OOP55xzzskuu+ySa665JnfeeWeWLl2aNWvW5Mgjj5z2iMBOyLGnD7EKtPbd7343SbJ06dKsXr06d9555zb7jz766FxxxRXZb7/9pjEesJNy7OnDpwEArf3whz9Mklx44YWpqtx000356U9/mjvuuCNvetObcuONN+atb33rlKcEdjaOPX2IVaC1p59+OkmyZMmSbNy4MUcddVSWL1+e1772tfnKV76SlStX5lvf+lZuvvnmKU8K7Ewce/oQq0Bre++9d5Jk9erVWbVq1Tb7XvrSl+a4445Lktxyyy3zPBmwM3Ps6UOsAq0deuihSZ79i+O59tlnnyTJz372s/kaCVgEHHv6EKtAa8cee2yqKnfdddcvXpbb2jNvenjlK18536MBOzHHnj7EKtDawQcfnJNOOinf//7388lPfnKbfd/4xjfy9a9/PXvvvXeOP/74KU0I7Iwce/pwUwCgvYcffjivf/3r89BDD+XYY4/N6tWr88ADD+Tqq69OVeXLX/5yTjnl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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "counts = count_digits(answers)\n", - "plot_counts(counts)" - ] - }, - { - "cell_type": "markdown", - "id": "661a1135-ac2d-4a49-a786-d04a7ba68b48", - "metadata": {}, - "source": [ - "We see that there is an important variabilty in the answers given by `text-davinci-003`. Depending on the number of samples taken, even self-consistency sampling may lead to the wrong result here." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "30ea0dfe-6c15-44f0-881c-88b325542b44", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entropy: 1.5741030017371853\n" - ] - } - ], - "source": [ - "print(f\"Entropy: {entropy(counts)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "0b15b230-b667-4c9c-8a5d-366dd61de9b7", - "metadata": {}, - "source": [ - "## `text-davinci-003` on an easier question" - ] - }, - { - "cell_type": "markdown", - "id": "beae30f0-4168-4a80-90d4-d26a4f476469", - "metadata": {}, - "source": [ - "Let us now look at the results for an arguably easier question:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "7e106b94-2dfd-4a75-b4d9-b1ad693418a7", - "metadata": {}, - "outputs": [], - "source": [ - "question = \"John buys 2 pairs of shoes for each of his 3 children. They cost $60 each. How much did he pay?\"\n", - "prompt = gsm8k_prompt(question)\n", - "answers = model(question, samples=20)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "dd46fb2b-08ef-4003-8d03-ea0f39c865c4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entropy: 0.1985152433458726\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAHgCAYAAACCbCTDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQuklEQVR4nO3db6ye9V3H8c+PPxGxIjMVghSLkCYgOtmUzSCd6xii8mCIyxBCTBUTWbBmIzEhWeIAUfegSYkha6JIQsmSRaoclnUbmeCyQbrBoi2GrtSlEIZKxnQOCmPB9vLBuaH8aUui4dyfwuuVnPQ+13Wd3N/TR+/++ruva0zTFAAAaHTEvAcAAICDEasAANQSqwAA1BKrAADUEqsAANQSqwAA1Drqdc67rxUAAEthHOiglVUAAGqJVQAAaolVAIA3sc2bN2fdunVZvXp1jjvuuIwxcsUVVxz0+meeeSYf+9jHcsYZZ+SYY47J2972tlx44YW55557lnDq/V5vzyoAAIexG2+8Mdu3b8+yZcuyYsWK7Ny586DXfve73815552XHTt25KyzzspVV12VPXv25K677sr73//+3HLLLbnyyiuXcHorqwAAb2obNmzIrl278vTTT2fjxo2HvPa6667Ljh07cskll2Tbtm256aabcsstt+Thhx/OKaecknXr1uWJJ55YoskXiVUAgDexNWvWZNWqVRnjgB+2f4U777wzSXLDDTfkqKP2/wf8CSeckGuuuSbf//73c+utt75hsx6IWAUAIEny5JNPJklOO+2015x78dhS710VqwAAJEmWL1+eJHn00Udfc2737t1JkkceeWRJZxKrAAAkSS666KIkycc//vHs3bv3peNPPfVUNmzYkGTxQ1hLyd0AAABIsrhX9e67787mzZtz9tln5/zzz8+zzz6bu+66KyeffHIef/zxHHHE0q51WlkFACBJctJJJ+XBBx/M1VdfnWeeeSaf/OQns2XLllx66aW54447kix+2GopWVkFAOAlJ554Ym6++ebcfPPNrzh+7733JknOOeecJZ3HyioAAK9r06ZNSZLLL798Sd9XrAIAkCTZt29f9uzZ85rjt99+ezZt2pRzzz03F1988ZLOZBsAAMCb2MLCQhYWFpLsv4/q1q1bs3bt2iSLt6tav359kuS5557LiSeemAsuuCCnn356jjjiiNx///3ZunVrzjzzzNxxxx1L/gGrMU3Toc4f8iQAAN2uu+66XH/99Qc9v3Llyjz22GNJkhdeeCFXXXVV7rvvvpceq7pq1ap86EMfykc+8pEce+yxb+SoB3zEllgFAKDBAWPVnlUAAGqJVQAAaolVAABqiVUAAHLqtVvmPcIBiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABqiVUAAGqJVQAAaolVAABq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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "counts = count_digits(answers)\n", - "plot_counts(counts)\n", - "print(f\"Entropy: {entropy(counts)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "cf4cacdf-a31d-43bd-8517-eec9f656eee4", - "metadata": {}, - "source": [ - "The entropy of the results is much lower, we say that the model is more \"certain\" of its answers. " - ] - }, - { - "cell_type": "markdown", - "id": "22f31872-aab7-4a68-b9f2-d335a4f1a875", - "metadata": {}, - "source": [ - "## How `gpt-4` compares to `text-davinci-003`\n", - "\n", - "Let us now look at how GPT4 fares on the original question:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "2d5ab5b8-eca5-47f5-a35c-5f3865e35755", - "metadata": {}, - "outputs": [], - "source": [ - "model = models.text_completion.openai(\"gpt-4\", max_tokens=128)\n", - "\n", - "question = \"When I was 6 my sister was half my age. Now I’m 70 how old is my sister?\"\n", - "prompt = gsm8k_prompt(question)\n", - "answers = model(prompt, samples=20)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d316a5f7-cebc-4b09-9b1b-aee219b2f088", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entropy: -0.0\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAHgCAYAAABgsD+6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQI0lEQVR4nO3dYahf9X3H8c+vua6J3Ui4hKKDOpVMxTmn1Tlwatt0rKKUziZgfJa5B2tg0TkY5EEZLepWYYITwTJ0o5Wi08ypXYdjMxG76OpkLc51jQUdU4ZiHaagREg8e5C/0WhiNWlyP7l9vSDk/s/v/Lnffx6Ed05+95wxTVMAAKDVhxZ6AAAAeC+CFQCAaoIVAIBqghUAgGqCFQCAaoIVAIBqcz9h3T2vAAA4EsaBFlxhBQCgmmAFAKCaYAV4H15++eXcdtttueyyy7Jq1aosW7Ysy5cvzwUXXJDbb789b7zxxn7f9+ijj+aSSy7J/Px8li1bljPPPDM33XRTdu/efYQ/AcDRa/yER7PawwqQ5Ktf/Wo2bNiQ448/Pp/61Kdywgkn5MUXX8y9996bHTt2ZM2aNbnnnnsyxltbsO6///6sWbMmS5cuzeWXX575+fl885vfzPbt27N27drcc889C/iJAOoccA+rYAV4H7Zs2ZJXX301l156aT70obf+c+qFF17Ieeedl+eeey6bN2/OmjVrkiQ//vGPs2rVquzYsSPbtm3LueeemyTZuXNnVq9encceeyx33nln1q1btyCfB6CQH7oCOBSrV6/OZz/72X1iNUmOO+64fOELX0iSPPzww3uPb968OS+99FLWrVu3N1aTZOnSpbnuuuuSJLfeeuvhHxxgERCsAIfomGOOSZLMzb11p8AtW7YkSS6++OJ3nX/RRRfl2GOPzaOPPprXX3/9yAwJcBQTrACHYNeuXfn617+eZN843b59e5LklFNOedd75ubmctJJJ2XXrl155plnjsygAEcxwQpwCDZt2pSnnnoql1xyST7zmc/sPb5jx44kyfLly/f7vjePv/LKK4d9RoCjnWAFOEg333xzbrzxxpx22mm54447FnocgEVLsAIchFtuuSVXX311Tj/99GzdujXz8/P7rL95BfXNK63v9ObxFStWHNY5ARYDwQrwAd10003ZuHFjzjjjjGzdujXHHXfcu8459dRTkyRPP/30u9Z27dqVZ599NnNzczn55JMP+7wARzvBCvAB3HDDDbnmmmty1llnZevWrfnoRz+63/NWr16dJHnwwQfftfbII4/ktddey/nnn58Pf/jDh3VegMVAsAK8T9dee202bdqUc845Jw899FBWrlx5wHPXrl2blStX5q677soTTzyx9/jOnTvzxS9+MUmyYcOGwz4zwGLgSVcA78PXvva1rF+/PkuWLMnGjRv3+9P/J554YtavX7/39X333Ze1a9dm6dKlWbduXebn5/PAAw/sfTTr3Xffvc+jXAF+xnk0K8Ch+NKXvpQvf/nL73nOJz7xiX2edpUk27Zty/XXX5/HHnssO3fuzKpVq3LllVfmqquuypIlSw7jxABHHcEKAEC1AwarPawAAFQTrAAAVBOsAABUm1voAQ7kxE3fWugRAAB+pvz3Vy5d6BH2yxVWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACqCVYAAKoJVgAAqglWAACq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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "counts = count_digits(answers)\n", - "plot_counts(counts)\n", - "print(f\"Entropy: {entropy(counts)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "2f6c8a22-fdf5-4f30-865c-8e11927b1b7c", - "metadata": {}, - "source": [ - "GPT4 returns the correct answer with certainty." - ] - }, - { - "cell_type": "markdown", - "id": "50d4a55e-86df-46ab-8b38-302c79bc8add", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "When generating text completions with a language model we typically look at one output sample, trying to find the \"right\" answer. However, doing so we obscure the diversity of answers that these language models can produce. Assuming the diversity of answers reflects these models' \"uncertainty\", we can use measures such as the entropy of the answers' distribution to evaluate the quality of the answer.\n", - "\n", - "Which result should we be choosing once we have different samples? There is no definite answer to this question. The [self-consistency method](https://arxiv.org/abs/2203.11171) consists in choosing the result based on a majority vote. We think this choice is arbitrary and that choosing the correct answer is a [decision theory](https://en.wikipedia.org/wiki/Decision_theory) problem, which can only be solved by specifying a loss function that is adapted to the experiment's context; the majority vote being a particular case with a 0-1 loss." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/self_consistency.py b/examples/self_consistency.py deleted file mode 100644 index e7468d5f..00000000 --- a/examples/self_consistency.py +++ /dev/null @@ -1,82 +0,0 @@ -import re - -import numpy as np - -import outlines -import outlines.models as models - -examples = [ - { - "question": "There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done, there will be 21 trees. How many trees did the grove workers plant today?", - "answer": "We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted. So, they must have planted 21 - 15 = 6 trees. The answer is 6.", - }, - { - "question": "If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?", - "answer": "There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.", - }, - { - "question": "Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?", - "answer": "Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74 chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.", - }, - { - "question": "Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops did Jason give to Denny?", - "answer": "Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number of lollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.", - }, - { - "question": "Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?", - "answer": "He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, so in total he has 7 + 2 = 9 toys. The answer is 9.", - }, - { - "question": "There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?", - "answer": "There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 = 20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers. The answer is 29.", - }, - { - "question": "Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many golf balls did he have at the end of wednesday?", - "answer": "Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.", - }, - { - "question": "Olivia has $23. She bought five bagels for $3 each. How much money does she have left?", - "answer": "She bought 5 bagels for $3 each. This means she spent 5", - }, -] - -question = "When I was 6 my sister was half my age. Now I’m 70 how old is my sister?" - - -@outlines.prompt -def few_shots(question, examples): - """ - {% for example in examples %} - Q: {{ example.question }} - A: {{ example.answer }} - {% endfor %} - Q: {{ question }} - A: - """ - - -model = models.openai("gpt-3.5-turbo") -generator = outlines.generate.text(model) -prompt = few_shots(question, examples) -answers = generator(prompt, samples=10) - -digits = [] -for answer in answers: - try: - match = re.findall(r"\d+", answer)[-1] - if match is not None: - digit = int(match) - digits.append(digit) - except AttributeError: - print(f"Could not parse the completion: '{answer}'") - -unique_digits, counts = np.unique(digits, return_counts=True) -results = {d: c for d, c in zip(unique_digits, counts)} -print(results) - -max_count = max(results.values()) -answer_value = [key for key, value in results.items() if value == max_count][0] -total_count = sum(results.values()) -print( - f"The most likely answer is {answer_value} ({max_count/total_count*100}% consensus)" -) diff --git a/examples/simulation_based_inference.ipynb b/examples/simulation_based_inference.ipynb deleted file mode 100644 index e6b99958..00000000 --- a/examples/simulation_based_inference.ipynb +++ /dev/null @@ -1,370 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e7c7d0bb-8d45-4139-a584-02c7196db92b", - "metadata": {}, - "source": [ - "# Find the best few-shot examples using simulation-based inference" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "831a76f5-c569-4174-adab-fb0245877367", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "import random\n", - "import requests\n", - "import re\n", - "\n", - "import outlines.models as models\n", - "import outlines.text as text\n", - "\n", - "random.seed(0)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "ec604edc-c8b6-4088-bf17-b77ae57d05a1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "env: OPENAI_API_KEY=# your key here\n" - ] - } - ], - "source": [ - "%env OPENAI_API_KEY = # your key here" - ] - }, - { - "cell_type": "markdown", - "id": "aabb4db6-fd94-4c42-ab7f-97c3de45b2cc", - "metadata": {}, - "source": [ - "In this example we will use GPT 3.5 to solve problems from the GSM-8K dataset. The state-of-the-art performance on this dataset is obtained using few-shot prompting with 5 examples. However, it is not clear how one should select these examples. Here, we will use **simulation-based inference** to try to infer which examples we should be using to get the best out of the model's abilities to solve the problem.\n", - "\n", - "Let's start with downloading the dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "367f5f89-8e5d-4381-b9eb-78c60bc50f86", - "metadata": {}, - "outputs": [], - "source": [ - "result = requests.get(\"https://raw.githubusercontent.com/openai/grade-school-math/master/grade_school_math/data/train.jsonl\")\n", - "lines = result.iter_lines()" - ] - }, - { - "cell_type": "markdown", - "id": "ef0f7aa9-d528-41e9-8a9d-4497f01f0692", - "metadata": {}, - "source": [ - "We now divide the train set in two sets:\n", - "- 20 problems from which we are going to sample 5 examples at random for every inference;\n", - "- 500 problems which we are going to use to perform inference." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "0667c4a8-cebe-4796-bbc9-575ee9498717", - "metadata": {}, - "outputs": [], - "source": [ - "example_set = []\n", - "for _ in range(10):\n", - " line = json.loads(next(lines))\n", - " answer = re.findall(r\"\\d+\", line[\"answer\"])[-1]\n", - " example_set.append({\"question\": line[\"question\"], \"answer\": answer})\n", - "\n", - "train_set = []\n", - "for _ in range(500):\n", - " line = json.loads(next(lines))\n", - " answer = re.findall(r\"\\d+\", line[\"answer\"])[-1]\n", - " train_set.append({\"question\": line[\"question\"], \"answer\": answer})" - ] - }, - { - "cell_type": "markdown", - "id": "4b52b470-d818-495a-a6e3-e50a1deff13c", - "metadata": {}, - "source": [ - "Now let's define the prompt, the model, and the sampling loop. The sampling loop consists in choosing 5 examples at random, sampling 20 model answers; if the answer is correct we keep the example ids as samples, otherwise continue:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9fbebaa9-f05e-4c6b-8875-73a08273bbb5", - "metadata": {}, - "outputs": [], - "source": [ - "@text.prompt\n", - "def few_shots(question, examples):\n", - " \"\"\"\n", - " {% for example in examples %}\n", - " Q: {{ example.question }}\n", - " A: {{ example.answer }}\n", - " {% endfor %}\n", - " Q: {{ question }}\n", - " A:\n", - " \"\"\"\n", - "\n", - "model = models.text_completion.openai(\"text-davinci-003\", max_tokens=128)\n", - "\n", - "# TODO: This could largely benefit from vectorization in #52\n", - "def one_train_example(problem, example_set):\n", - " example_ids = random.choices(range(0, len(example_set)), k=5)\n", - " examples = [example_set[i] for i in example_ids]\n", - " prompt = few_shots(problem[\"question\"], examples)\n", - " answers_raw = model(prompt, samples=20)\n", - "\n", - " samples = []\n", - " for answer_raw in answers_raw:\n", - " try:\n", - " answer = re.findall(r\"\\d+\", answer_raw)[-1]\n", - " if answer == problem[\"answer\"]:\n", - " samples += example_ids\n", - " else:\n", - " continue\n", - " except IndexError:\n", - " pass\n", - "\n", - " return samples" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "1dae1ef2-c9e0-4c98-8686-7fbc2ff55e56", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "9efc9d077af24a2eb5ea3c05fe63f298", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/500 [00:00" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pylab as plt\n", - "\n", - "example_ids, counts = np.unique(samples, return_counts=True)\n", - "\n", - "fig = plt.figure(figsize=(12,8))\n", - "ax = fig.add_subplot(111)\n", - "ax.bar(example_ids, counts)\n", - "\n", - "ax.spines[[\"top\", \"right\"]].set_visible(False)\n", - "\n", - "ax.set_xticks(range(10))\n", - "ax.set_xlabel(\"Example #\")\n", - "ax.set_ylabel(\"Counts\")\n" - ] - }, - { - "cell_type": "markdown", - "id": "cde37e5b-377e-4872-af40-674d680bd2da", - "metadata": {}, - "source": [ - "Looking at the distribution, our best guess for which examples we should use for benchmarking on the test set would be 0, 1, 2, 6 and 9. This method can be trivially extended to other workflows that use few-shot examples to query LLMs. Of course, simulation-based inference extends beyong choosing the \"best\" prompt, and could for instance be useful to select the structure of chains of LLMs and tools as well." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "bddda20b-234a-4d30-b40a-90708fbaba23", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?',\n", - " 'answer': '72'}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_set[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "fb186bf9-62b7-485f-a8ce-401f551a9e57", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'Weng earns $12 an hour for babysitting. Yesterday, she just did 50 minutes of babysitting. How much did she earn?',\n", - " 'answer': '10'}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_set[1]" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "ae427bb2-e3f4-4a96-a508-e8011a0fc553", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'Betty is saving money for a new wallet which costs $100. Betty has only half of the money she needs. Her parents decided to give her $15 for that purpose, and her grandparents twice as much as her parents. How much more money does Betty need to buy the wallet?',\n", - " 'answer': '5'}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_set[2]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "fe43ae0f-c18f-4b74-b639-8481472edf4d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'Albert is wondering how much pizza he can eat in one day. He buys 2 large pizzas and 2 small pizzas. A large pizza has 16 slices and a small pizza has 8 slices. If he eats it all, how many pieces does he eat that day?',\n", - " 'answer': '48'}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_set[6]" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "19d9d936-d0f0-4927-990c-76dbbfa95b47", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'Tina makes $18.00 an hour. If she works more than 8 hours per shift, she is eligible for overtime, which is paid by your hourly wage + 1/2 your hourly wage. If she works 10 hours every day for 5 days, how much money does she make?',\n", - " 'answer': '990'}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "example_set[9]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/transformers_integration.py b/examples/transformers_integration.py deleted file mode 100644 index 16e2b8ec..00000000 --- a/examples/transformers_integration.py +++ /dev/null @@ -1,25 +0,0 @@ -"""Example of integrating `outlines` with `transformers`.""" - -from pydantic import BaseModel -from transformers import pipeline - -from outlines.integrations.transformers import JSONPrefixAllowedTokens - - -class Person(BaseModel): - first_name: str - surname: str - - -pipe = pipeline("text-generation", model="mistralai/Mistral-7B-v0.1") -prefix_allowed_tokens_fn = JSONPrefixAllowedTokens( - schema=Person, tokenizer_or_pipe=pipe, whitespace_pattern=r" ?" -) -results = pipe( - ["He is Tom Jones", "She saw Linda Smith"], - return_full_text=False, - do_sample=False, - max_new_tokens=50, - prefix_allowed_tokens_fn=prefix_allowed_tokens_fn, -) -print(results) diff --git a/examples/vllm_integration.py b/examples/vllm_integration.py deleted file mode 100644 index 5f833d19..00000000 --- a/examples/vllm_integration.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Example of integrating `outlines` with `vllm`.""" - -import vllm -from pydantic import BaseModel - -from outlines.integrations.vllm import JSONLogitsProcessor - - -class Person(BaseModel): - first_name: str - surname: str - - -llm = vllm.LLM(model="mistralai/Mistral-7B-v0.1", max_model_len=512) -logits_processor = JSONLogitsProcessor(schema=Person, llm=llm, whitespace_pattern=r" ?") -result = llm.generate( - ["He is Tom Jones", "She saw Linda Smith"], - sampling_params=vllm.SamplingParams( - temperature=0.0, - max_tokens=50, - logits_processors=[logits_processor], - ), -) -print(result) From 1a0e1879a9d225d5d71d1f66e8ad84d621fceed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 14:03:22 +0200 Subject: [PATCH 07/20] Remove models other than `transformers` --- outlines/__init__.py | 1 - outlines/generate/fsm.py | 20 - outlines/generate/regex.py | 27 -- outlines/generate/text.py | 13 - outlines/models/__init__.py | 7 +- outlines/models/exllamav2.py | 232 ---------- outlines/models/llamacpp.py | 407 ------------------ outlines/models/mlxlm.py | 247 ----------- outlines/models/transformers_vision.py | 138 ------ outlines/models/vllm.py | 226 ---------- pyproject.toml | 13 - tests/generate/test_generate.py | 41 +- tests/generate/test_integration_llamacpp.py | 380 ---------------- .../test_integration_transformers_vision.py | 116 ----- tests/generate/test_integration_vllm.py | 239 ---------- 15 files changed, 5 insertions(+), 2102 deletions(-) delete mode 100644 outlines/models/exllamav2.py delete mode 100644 outlines/models/llamacpp.py delete mode 100644 outlines/models/mlxlm.py delete mode 100644 outlines/models/transformers_vision.py delete mode 100644 outlines/models/vllm.py delete mode 100644 tests/generate/test_integration_llamacpp.py delete mode 100644 tests/generate/test_integration_transformers_vision.py delete mode 100644 tests/generate/test_integration_vllm.py diff --git a/outlines/__init__.py b/outlines/__init__.py index b050521f..04f4da55 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -1,7 +1,6 @@ """Outlines is a Generative Model Programming Framework.""" import outlines.generate import outlines.models -import outlines.processors from outlines.caching import clear_cache, disable_cache, get_cache __all__ = [ diff --git a/outlines/generate/fsm.py b/outlines/generate/fsm.py index 03fe512b..2a128d96 100644 --- a/outlines/generate/fsm.py +++ b/outlines/generate/fsm.py @@ -8,7 +8,6 @@ SequenceGeneratorAdapter, VisionSequenceGeneratorAdapter, ) -from outlines.models import ExLlamaV2Model, TransformersVision from outlines.samplers import Sampler, multinomial @@ -21,22 +20,3 @@ def fsm( fsm = RegexGuide.from_interegular_fsm(fsm, model.tokenizer) logits_processor = FSMLogitsProcessor(tokenizer=model.tokenizer, fsm=fsm) return SequenceGeneratorAdapter(model, logits_processor, sampler) - - -@fsm.register(TransformersVision) -def fsm_vision(model, fsm: interegular.fsm.FSM, sampler: Sampler = multinomial()): - from outlines.processors import FSMLogitsProcessor - - fsm = RegexGuide.from_interegular_fsm(fsm, model.tokenizer) - logits_processor = FSMLogitsProcessor(tokenizer=model.tokenizer, fsm=fsm) - return VisionSequenceGeneratorAdapter(model, logits_processor, sampler) - - -@fsm.register(ExLlamaV2Model) -def fsm_exllamav2( - model, fsm: interegular.fsm.FSM, sampler: Sampler = multinomial() -) -> SequenceGenerator: - fsm = RegexGuide.from_interegular_fsm(fsm, model.tokenizer) - device = model.device - generator = SequenceGenerator(fsm, model, sampler, device) - return generator diff --git a/outlines/generate/regex.py b/outlines/generate/regex.py index c731cb9d..78321ec8 100644 --- a/outlines/generate/regex.py +++ b/outlines/generate/regex.py @@ -6,7 +6,6 @@ SequenceGeneratorAdapter, VisionSequenceGeneratorAdapter, ) -from outlines.models import ExLlamaV2Model, TransformersVision from outlines.samplers import Sampler, multinomial @@ -35,29 +34,3 @@ def regex(model, regex_str: str, sampler: Sampler = multinomial()): logits_processor = RegexLogitsProcessor(regex_str, tokenizer=model.tokenizer) return SequenceGeneratorAdapter(model, logits_processor, sampler) - - -@regex.register(TransformersVision) -def regex_vision( - model, - regex_str: str, - sampler: Sampler = multinomial(), -): - from outlines.processors import RegexLogitsProcessor - - logits_processor = RegexLogitsProcessor(regex_str, tokenizer=model.tokenizer) - return VisionSequenceGeneratorAdapter(model, logits_processor, sampler) - - -@regex.register(ExLlamaV2Model) -def regex_exllamav2( - model, - regex_str: str, - sampler: Sampler = multinomial(), -) -> SequenceGenerator: - fsm = RegexGuide(regex_str, model.tokenizer) - - device = model.device - generator = SequenceGenerator(fsm, model, sampler, device) - - return generator diff --git a/outlines/generate/text.py b/outlines/generate/text.py index 907402e4..e5e00fe7 100644 --- a/outlines/generate/text.py +++ b/outlines/generate/text.py @@ -6,7 +6,6 @@ SequenceGeneratorAdapter, VisionSequenceGeneratorAdapter, ) -from outlines.models import ExLlamaV2Model, TransformersVision from outlines.samplers import Sampler, multinomial @@ -34,15 +33,3 @@ def text(model, sampler: Sampler = multinomial()) -> SequenceGeneratorAdapter: """ return SequenceGeneratorAdapter(model, None, sampler) - - -@text.register(ExLlamaV2Model) -def text_exllamav2(model, sampler: Sampler = multinomial()) -> SequenceGenerator: - fsm = StopAtEOSGuide(model.tokenizer) - device = model.device - return SequenceGenerator(fsm, model, sampler, device) - - -@text.register(TransformersVision) -def text_vision(model, sampler: Sampler = multinomial()): - return VisionSequenceGeneratorAdapter(model, None, sampler) diff --git a/outlines/models/__init__.py b/outlines/models/__init__.py index 28b5af3e..c6277f62 100644 --- a/outlines/models/__init__.py +++ b/outlines/models/__init__.py @@ -8,11 +8,6 @@ from typing import Union -from .exllamav2 import ExLlamaV2Model, exl2 -from .llamacpp import LlamaCpp, llamacpp -from .mlxlm import MLXLM, mlxlm from .transformers import Transformers, TransformerTokenizer, mamba, transformers -from .transformers_vision import TransformersVision, transformers_vision -from .vllm import VLLM, vllm -LogitsGenerator = Union[Transformers, LlamaCpp, ExLlamaV2Model, MLXLM, VLLM] +LogitsGenerator = Union[Transformers] diff --git a/outlines/models/exllamav2.py b/outlines/models/exllamav2.py deleted file mode 100644 index 0ec6ef03..00000000 --- a/outlines/models/exllamav2.py +++ /dev/null @@ -1,232 +0,0 @@ -import os -from typing import TYPE_CHECKING, Optional - -if TYPE_CHECKING: - from exllamav2 import ExLlamaV2, ExLlamaV2Cache, ExLlamaV2Lora - from transformers import PreTrainedTokenizer - import torch - -from .transformers import TransformerTokenizer - - -class ExLlamaV2Model: - """Represents a `exl2` model.""" - - def __init__( - self, - model: "ExLlamaV2", - tokenizer: "PreTrainedTokenizer", - device, - cache: "ExLlamaV2Cache", - lora: Optional["ExLlamaV2Lora"] = None, - ): - self.device = device - self.model = model - self.tokenizer = TransformerTokenizer(tokenizer) - self.cache = cache - self.past_seq = None - self.lora = lora - - def forward(self, input_ids: "torch.LongTensor", *_): - """Compute a forward pass through the exl2 model.""" - import torch - - # Caching with past_seq - reset = True - seq_tensor = input_ids[0] - - if self.past_seq is not None: - min_length = min(self.past_seq.shape[0], seq_tensor.shape[0]) - indices = torch.nonzero( - ~torch.eq(self.past_seq[:min_length], seq_tensor[:min_length]) - ) - if len(indices) > 0: - longest_prefix = indices[0].item() - else: - longest_prefix = min_length - - if longest_prefix > 0: - reset = False - self.cache.current_seq_len = longest_prefix - if seq_tensor.shape[0] - longest_prefix > 1: - self.model.forward( - seq_tensor[longest_prefix:-1].view(1, -1), - self.cache, - preprocess_only=True, - loras=[self.lora], - ) - elif seq_tensor.shape[0] == longest_prefix: - self.cache.current_seq_len -= 1 - - if reset: - self.cache.current_seq_len = 0 - if seq_tensor.shape[0] > 1: - self.model.forward( - seq_tensor[:-1].view(1, -1), - self.cache, - preprocess_only=True, - loras=[self.lora], - ) - - self.past_seq = seq_tensor - - return self.model.forward( - seq_tensor[-1:].view(1, -1), self.cache, loras=[self.lora] - ) - - def __call__(self, input_ids: "torch.LongTensor", *_) -> "torch.FloatTensor": - logits = self.forward(input_ids) - next_token_logits = logits[..., -1, :] - - return next_token_logits, None - - def update_lora(self, lora_path: Optional[str] = None): - """ - Update and apply the LoRA to the model. - - Args: - lora_path (Optional[str]): The path to the LoRA directory. If None, the LoRA will be unloaded. - """ - try: - from exllamav2 import ExLlamaV2Lora - except ImportError: - raise ImportError( - "The `exllamav2` library needs to be installed in order to use `exllamav2` models." - ) - if lora_path is None: - if self.lora is not None: - print(" -- Unloading LoRA...") - self.lora = None - else: - self.lora = ExLlamaV2Lora.from_directory(self.model, lora_path) - print(" -- Loading LoRA...") - - -def exl2( - model_path: str, - device: str, - max_seq_len: Optional[int] = None, - scale_pos_emb: Optional[float] = None, - scale_alpha_value: Optional[float] = None, - no_flash_attn: Optional[bool] = None, - num_experts_per_token: Optional[int] = None, - cache_8bit: bool = False, - cache_q4: bool = False, - tokenizer_kwargs: dict = {}, - gpu_split: Optional[str] = None, - low_mem: Optional[bool] = None, - verbose: Optional[bool] = None, -) -> ExLlamaV2Model: - """ - Load an ExLlamaV2 model. - - Parameters - ---------- - model_path (str) - Path to the model directory. - device (str) - Device to load the model on. Pass in 'cuda' for GPU or 'cpu' for CPU - max_seq_len (Optional[int], optional) - Maximum sequence length. Defaults to None. - scale_pos_emb (Optional[float], optional) - Scale factor for positional embeddings. Defaults to None. - scale_alpha_value (Optional[float], optional) - Scale alpha value. Defaults to None. - no_flash_attn (Optional[bool], optional) - Disable flash attention. Defaults to None. - num_experts_per_token (Optional[int], optional) - Number of experts per token. Defaults to None. - cache_8bit (bool, optional) - Use 8-bit cache. Defaults to False. - cache_q4 (bool, optional) - Use Q4 cache. Defaults to False. - tokenizer_kwargs (dict, optional) - Additional keyword arguments for the tokenizer. Defaults to {}. - gpu_split (str) - \"auto\", or VRAM allocation per GPU in GB. Auto will use exllama's autosplit feature - low_mem (bool, optional) - Enable VRAM optimizations, potentially trading off speed - verbose (bool, optional) - Enable if you want debugging statements - - Returns - ------- - An `ExLlamaV2Model` instance. - - Raises - ------ - `ImportError` if the `exllamav2` library is not installed. - - """ - try: - from exllamav2 import ( - ExLlamaV2, - ExLlamaV2Cache, - ExLlamaV2Cache_8bit, - ExLlamaV2Cache_Q4, - ExLlamaV2Config, - ) - from transformers import AutoTokenizer - except ImportError: - raise ImportError( - "The `exllamav2`, `transformers` and `torch` libraries needs to be installed in order to use `exllamav2` models." - ) - - # Load tokenizer - if not verbose: - print(" -- Loading tokenizer...") - tokenizer_kwargs.setdefault("padding_side", "left") - tokenizer = AutoTokenizer.from_pretrained(model_path, **tokenizer_kwargs) - # tokenizer = TransformerTokenizer(model_path, **tokenizer_kwargs) - - # Check fasttensors for config - if os.name != "nt": - use_fasttensors = True - else: - use_fasttensors = False - - # Create config - config = ExLlamaV2Config() - config.model_dir = model_path - config.fasttensors = use_fasttensors - config.prepare() - - # Set config options - if max_seq_len is not None: - config.max_seq_len = max_seq_len - if scale_pos_emb is not None: - config.scale_pos_emb = scale_pos_emb - if scale_alpha_value is not None: - config.scale_alpha_value = scale_alpha_value - if no_flash_attn is not None: - config.no_flash_attn = no_flash_attn - if num_experts_per_token is not None: - config.num_experts_per_token = num_experts_per_token - if low_mem: - config.set_low_mem() - - # Prepare the model from the config - model = ExLlamaV2(config) - - # Create cache - if cache_8bit: - cache = ExLlamaV2Cache_8bit(model, lazy=not model.loaded) - elif cache_q4: - cache = ExLlamaV2Cache_Q4(model, lazy=not model.loaded) - else: - cache = ExLlamaV2Cache(model, lazy=not model.loaded) - - # Load the model - split = None - if gpu_split and gpu_split != "auto": - split = [float(alloc) for alloc in gpu_split.split(",")] - if not verbose: - print(" -- Loading model...") - model.load(split) - - # Autoload if no GPU split was provided - if not model.loaded: - print(" -- Loading model...") - model.load_autosplit(cache) - - return ExLlamaV2Model(model, tokenizer, device, cache) diff --git a/outlines/models/llamacpp.py b/outlines/models/llamacpp.py deleted file mode 100644 index 904b193c..00000000 --- a/outlines/models/llamacpp.py +++ /dev/null @@ -1,407 +0,0 @@ -import dataclasses -import pickle -import warnings -from typing import ( - TYPE_CHECKING, - Dict, - Iterator, - List, - Optional, - Set, - Tuple, - TypedDict, - Union, -) - -from typing_extensions import Unpack - -from outlines.generate.api import GenerationParameters, SamplingParameters -from outlines.models.tokenizer import Tokenizer - -if TYPE_CHECKING: - from llama_cpp import Llama, LogitsProcessorList - - -class LlamaCppTokenizer(Tokenizer): - def __init__(self, model: "Llama"): - self.eos_token_id = model.token_eos() - self.eos_token = model.tokenizer().decode([self.eos_token_id]) - self.pad_token_id = self.eos_token_id - self.special_tokens: Set[str] = set() - - self.vocabulary: Dict[str, int] = dict() - - self.tokenizer = model.tokenizer() - - # TODO: Remove when https://github.com/ggerganov/llama.cpp/pull/5613 is resolved - self._hf_tokenizer = None - try: - self.vocabulary = model.tokenizer_.hf_tokenizer.get_vocab() - self._hf_tokenizer = model.tokenizer_.hf_tokenizer - except AttributeError: - # ### - for t in range(model.n_vocab()): - token_piece = model.tokenizer().decode([t]) - self.vocabulary[token_piece] = t - - # ensure stable ordering of vocabulary - self.vocabulary = { - tok: tok_id - for tok, tok_id in sorted(self.vocabulary.items(), key=lambda x: x[1]) - } - - self._hash = None - - def decode(self, token_ids: List[int]) -> List[str]: - decoded_bytes = self.tokenizer.detokenize(token_ids) - return [decoded_bytes.decode("utf-8", errors="ignore")] - - def encode( - self, prompt: Union[str, List[str]], add_bos: bool = True, special: bool = True - ) -> Tuple[List[int], List[int]]: - if isinstance(prompt, list): - raise NotImplementedError( - "llama-cpp-python tokenizer doesn't support batch tokenization" - ) - token_ids = self.tokenizer.tokenize( - prompt.encode("utf-8", errors="ignore"), add_bos=add_bos, special=special - ) - # generate attention mask, missing from llama-cpp-python - attention_mask = [ - 1 if token_id != self.pad_token_id else 0 for token_id in token_ids - ] - return token_ids, attention_mask - - def convert_token_to_string(self, token: str) -> str: - if self._hf_tokenizer is not None: - from transformers.file_utils import SPIECE_UNDERLINE - - token_str = self._hf_tokenizer.convert_tokens_to_string([token]) - if token.startswith(SPIECE_UNDERLINE) or token == "<0x20>": - token_str = " " + token_str - return token_str - else: - return token - - def __eq__(self, other): - if not isinstance(other, LlamaCppTokenizer): - return False - return self.__getstate__() == other.__getstate__() - - def __hash__(self): - if self._hash is None: - self._hash = hash(pickle.dumps(self)) - return self._hash - - def __getstate__(self): - """Create a stable representation for outlines.caching""" - return ( - self.vocabulary, - self.eos_token_id, - self.eos_token, - self.pad_token_id, - sorted(self.special_tokens), - ) - - def __setstate__(self, state): - raise NotImplementedError("Cannot load a pickled llamacpp tokenizer") - - -class LlamaCppParams(TypedDict, total=False): - suffix: Optional[str] - temperature: float - top_p: float - min_p: float - typical_p: float - seed: int - max_tokens: int - logits_processor: "LogitsProcessorList" - stop: Optional[Union[str, List[str]]] - frequence_penalty: float - presence_penalty: float - repeat_penalty: float - top_k: int - tfs_z: float - mirostat_mode: int - mirostat_tau: float - mirostat_eta: float - stream: bool - - -class LlamaCpp: - """Represents a model provided by the `llama-cpp-python` library. - - We wrap models from model providing libraries in order to give all of - them the same interface in Outlines and allow users to easily switch - between providers. This class wraps the `llama_cpp.Llama` class from the - `llama-cpp-python` library. - - """ - - def __init__(self, model: "Llama"): - self.model = model - - @property - def tokenizer(self): - return LlamaCppTokenizer(self.model) - - def prepare_generation_parameters( - self, - generation_parameters: GenerationParameters, - sampling_parameters: SamplingParameters, - structure_logits_processor, - **llama_cpp_params: Unpack[LlamaCppParams], - ): - """Prepare the generation parameters. - - `llama-cpp-python` uses different default values - - """ - from llama_cpp import LogitsProcessorList - - max_tokens, stop_at, seed = dataclasses.astuple(generation_parameters) - - # We update `llama_cpp_params` with the values the user passed to the - # generator. - if "stop" not in llama_cpp_params: - llama_cpp_params["stop"] = stop_at - if "seed" not in llama_cpp_params: - llama_cpp_params["seed"] = seed - - # Somehow `llama-cpp-python` generates `max_tokens + 1` tokens - if "max_tokens" not in llama_cpp_params: - if max_tokens is None: - llama_cpp_params["max_tokens"] = -1 # indicates unlimited tokens - else: - llama_cpp_params["max_tokens"] = max_tokens - 1 - else: - llama_cpp_params["max_tokens"] = llama_cpp_params["max_tokens"] - 1 - - sampler, num_samples, top_p, top_k, temperature = dataclasses.astuple( - sampling_parameters - ) - - # We update the `llama_cpp_params` with the sampling values that - # were specified by the user via the `Sampler` class, unless they - # are also specified in `llama_cpp_params`. We also disable other - # sampling methods that are enabled by default and reset the temperature - # value. - # - # See https://github.com/ggerganov/llama.cpp/blob/e11a8999b5690f810c2c99c14347f0834e68c524/common/sampling.h#L22 - # for the default values in `llama.cpp` and indications to disable the sampling modes. - # Mirostat sampling, tail-free sampling and all penalties are disabled by default. - # - # See https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__call__ - # for default values in `llama-cpp-python` - if sampler == "beam_search": - raise NotImplementedError( - "The `llama_cpp_python` library does not support Beam Search." - ) - if num_samples != 1: - raise NotImplementedError( - "The `llama_cpp_python` library does not allow to take several samples." - ) - if "top_p" not in llama_cpp_params: - if top_p is not None: - llama_cpp_params["top_p"] = top_p - else: - llama_cpp_params["top_p"] = 1.0 - - if "min_p" not in llama_cpp_params: - llama_cpp_params["min_p"] = 0.0 - - if "top_k" not in llama_cpp_params: - if top_k is not None: - llama_cpp_params["top_k"] = top_k - else: - llama_cpp_params["top_k"] = -1 - - if "temperature" not in llama_cpp_params: - if temperature is not None: - llama_cpp_params["temperature"] = temperature - else: - llama_cpp_params["temperature"] = 1.0 - - if "repeat_penalty" not in llama_cpp_params: - llama_cpp_params["repeat_penalty"] = 1.0 - - # The choice to stream or not should happen via the high-level API - llama_cpp_params["stream"] = False - - if structure_logits_processor is not None: - if "logits_processor" in llama_cpp_params: - llama_cpp_params["logits_processor"].append(structure_logits_processor) - else: - llama_cpp_params["logits_processor"] = LogitsProcessorList( - [structure_logits_processor] - ) - - return llama_cpp_params - - def generate( - self, - prompts: Union[str, List[str]], - generation_parameters: GenerationParameters, - structure_logits_processor, - sampling_parameters: SamplingParameters, - **llama_cpp_params: Unpack[LlamaCppParams], - ) -> str: - """Generate text using `llama-cpp-python`. - - Arguments - --------- - prompts - A prompt or list of prompts. - generation_parameters - An instance of `GenerationParameters` that contains the prompt, - the maximum number of tokens, stop sequences and seed. All the - arguments to `SequenceGeneratorAdapter`'s `__cal__` method. - logits_processor - The logits processor to use when generating text. - sampling_parameters - An instance of `SamplingParameters`, a dataclass that contains - the name of the sampler to use and related parameters as available - in Outlines. - llama_cpp_params - Keyword arguments that can be passed to - `llama_cpp_python.Llama.__call__`. The values in `llama_cpp_params` - supersede the values of the parameters in `generation_parameters` and - `sampling_parameters`. See the `llama_cpp_python` documentation for - a list of possible values: https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__call__ - - Returns - ------- - The generated text. - - """ - if not isinstance(prompts, str): - raise NotImplementedError( - "The `llama-cpp-python` library does not support batch inference." - ) - - llama_cpp_params = self.prepare_generation_parameters( - generation_parameters, - sampling_parameters, - structure_logits_processor, - **llama_cpp_params, - ) - completion = self.model(prompts, **llama_cpp_params) - result = completion["choices"][0]["text"] - - self.model.reset() - - return result - - def stream( - self, - prompts: Union[str, List[str]], - generation_parameters: GenerationParameters, - structure_logits_processor, - sampling_parameters: SamplingParameters, - **llama_cpp_params: Unpack[LlamaCppParams], - ) -> Iterator[str]: - """Stream text using `llama-cpp-python`. - - Arguments - --------- - prompts - A prompt or list of prompts. - generation_parameters - An instance of `GenerationParameters` that contains the prompt, - the maximum number of tokens, stop sequences and seed. All the - arguments to `SequenceGeneratorAdapter`'s `__cal__` method. - logits_processor - The logits processor to use when generating text. - sampling_parameters - An instance of `SamplingParameters`, a dataclass that contains - the name of the sampler to use and related parameters as available - in Outlines. - llama_cpp_params - Keyword arguments that can be passed to - `llama_cpp_python.Llama.__call__`. The values in `llama_cpp_params` - supersede the values of the parameters in `generation_parameters` and - `sampling_parameters`. See the `llama_cpp_python` documentation for - a list of possible values: https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__call__ - - Returns - ------- - A generator that return strings. - - """ - - if not isinstance(prompts, str): - raise NotImplementedError( - "The `llama-cpp-python` library does not support batch inference." - ) - - llama_cpp_params = self.prepare_generation_parameters( - generation_parameters, - sampling_parameters, - structure_logits_processor, - **llama_cpp_params, - ) - llama_cpp_params["stream"] = True - generator = self.model(prompts, **llama_cpp_params) - - def token_generator() -> Iterator[str]: - while True: - try: - result = next(generator) - yield result["choices"][0]["text"] - except StopIteration: - self.model.reset() - return - - return token_generator() - - def load_lora(self, adapter_path: str): - if self.model._model.apply_lora_from_file( - adapter_path, - 1.0, - ): - raise RuntimeError(f"Failed to apply LoRA from lora path: {adapter_path}") - - -def llamacpp( - repo_id: str, filename: Optional[str] = None, **llamacpp_model_params -) -> LlamaCpp: - """Load a model from the `llama-cpp-python` library. - - We use the `Llama.from_pretrained` classmethod that downloads models - directly from the HuggingFace hub, instead of asking users to specify - a path to the downloaded model. One can still load a local model - by initializing `llama_cpp.Llama` directly. - - Arguments - --------- - repo_id - The name of the model repository. - filename: - A filename of glob pattern to match the model file in the repo. - llama_cpp_model_params - Llama-specific model parameters. See the `llama-cpp-python` documentation - for the full list: https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__init__ - - """ - from llama_cpp import Llama - - # Default to using the model's full context length - if "n_ctx" not in llamacpp_model_params: - llamacpp_model_params["n_ctx"] = 0 - - if "verbose" not in llamacpp_model_params: - llamacpp_model_params["verbose"] = False - - # TODO: Remove when https://github.com/ggerganov/llama.cpp/pull/5613 is resolved - if "tokenizer" not in llamacpp_model_params: - warnings.warn( - "The pre-tokenizer in `llama.cpp` handles unicode improperly " - + "(https://github.com/ggerganov/llama.cpp/pull/5613)\n" - + "Outlines may raise a `RuntimeError` when building the regex index.\n" - + "To circumvent this error when using `models.llamacpp()` you may pass the argument" - + "`tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained()`\n" - ) - - model = Llama.from_pretrained(repo_id, filename, **llamacpp_model_params) - - return LlamaCpp(model) diff --git a/outlines/models/mlxlm.py b/outlines/models/mlxlm.py deleted file mode 100644 index 6e63ef5b..00000000 --- a/outlines/models/mlxlm.py +++ /dev/null @@ -1,247 +0,0 @@ -import dataclasses -from typing import TYPE_CHECKING, Generator, Iterator, List, Optional, Tuple, Union - -from .transformers import TransformerTokenizer - -if TYPE_CHECKING: - import mlx.core as mx - import mlx.nn as nn - from transformers import PreTrainedTokenizer - - from outlines.generate.api import GenerationParameters, SamplingParameters - from outlines.processors import OutlinesLogitsProcessor - - -class MLXLM: - """ - Represents an `mlx_lm` model - """ - - def __init__( - self, - model: "nn.Module", - tokenizer: "PreTrainedTokenizer", - ): - self.model = model - self.mlx_tokenizer = tokenizer # returns mlx tensors, used for encode() - self.tokenizer = TransformerTokenizer( - tokenizer._tokenizer - ) # _tokenizer is HF Tokenizer - - def generate( - self, - prompts: Union[str, List[str]], - generation_parameters: "GenerationParameters", - logits_processor, - sampling_parameters: "SamplingParameters", - ) -> str: - streamer = self.stream( - prompts, generation_parameters, logits_processor, sampling_parameters - ) - return "".join(list(streamer)) - - def stream( - self, - prompts: Union[str, List[str]], - generation_parameters: "GenerationParameters", - logits_processor, - sampling_parameters: "SamplingParameters", - ) -> Iterator[str]: - """Generate text using `mlx_lm`. - - Arguments - --------- - prompts - A prompt or list of prompts. - generation_parameters - An instance of `GenerationParameters` that contains the prompt, - the maximum number of tokens, stop sequences and seed. All the - arguments to `SequenceGeneratorAdapter`'s `__cal__` method. - logits_processor - The logits processor to use when generating text. - sampling_parameters - An instance of `SamplingParameters`, a dataclass that contains - the name of the sampler to use and related parameters as available - in Outlines. - Returns - ------- - The generated text. - """ - import mlx.core as mx - - max_tokens, stop_at, seed = dataclasses.astuple(generation_parameters) - sampler, num_samples, top_p, top_k, temperature = dataclasses.astuple( - sampling_parameters - ) - if max_tokens is None: - max_tokens = int(1e9) - - if not isinstance(prompts, str): - raise NotImplementedError( - "The `mlx-lm` library does not support batch inference." - ) - if sampler == "beam_search": - raise NotImplementedError( - "The `mlx-lm` library does not support Beam Search." - ) - if num_samples != 1: - raise NotImplementedError( - "The `mlx-lm` library does not allow to take several samples." - ) - if top_k is not None: - raise NotImplementedError("The `mlx-lm` library does not support top_k.") - if seed is not None: - raise NotImplementedError("The `mlx-lm` library does not support seed.") - if stop_at is not None: - raise NotImplementedError("The `mlx-lm` library does not support stop_at.") - - generate_kwargs = { - "temp": temperature, - "top_p": top_p, - "sampler": sampler, - "logits_processor": logits_processor, - } - - # Adapted from - # https://github.com/ml-explore/mlx-examples/blob/4872727/llms/mlx_lm/utils.py#L267 - prompt_tokens = mx.array(self.mlx_tokenizer.encode(prompts)) - - detokenizer = self.mlx_tokenizer.detokenizer - detokenizer.reset() - - for (token, prob), n in zip( - self.generate_step(prompt_tokens, **generate_kwargs), - range(max_tokens), - ): - if token == self.tokenizer.eos_token_id: - break - detokenizer.add_token(token) - yield detokenizer.last_segment - - detokenizer.finalize() - yield detokenizer.last_segment - - def generate_step( - self, - prompt: "mx.array", - temp: Optional[float], - top_p: Optional[float], - sampler: str, - logits_processor: "OutlinesLogitsProcessor", - ) -> Generator[Tuple[int, float], None, None]: - """ - Adapted from - https://github.com/ml-explore/mlx-examples/blob/4872727/llms/mlx_lm/utils.py#L129 - - A generator producing token ids based on the given prompt from the model. - - Args: - prompt (mx.array): The input prompt. - temp (float): The temperature for sampling, if 0 the argmax is used. - Default: ``0``. - top_p (float, optional): Nulceus sampling, higher means model considers - more less likely words. - sampler (str): The sampler string defined by SequenceGeneratorAdapter - logits_processor (OutlinesLogitsProcessor): Augment logits before sampling. - """ - import mlx.core as mx - import mlx_lm - - temperature: float = temp or 1.0 - - def sample(logits: "mx.array") -> Tuple["mx.array", float]: - softmax_logits = mx.softmax(logits) - - if temperature == 0.0 or sampler == "greedy": - token = mx.argmax(logits, axis=-1) - elif sampler == "multinomial": - if top_p is not None and top_p > 0 and top_p < 1.0: - token = mlx_lm.sample_utils.top_p_sampling( - logits, top_p, temperature - ) - else: - token = mx.random.categorical(logits * (1 / temperature)) - else: - raise ValueError(f"Invalid mlx-lm sampler: `{sampler}`") - - prob = softmax_logits[0, token] - return token, prob - - kv_heads = ( - [self.model.n_kv_heads] * len(self.model.layers) - if isinstance(self.model.n_kv_heads, int) - else self.model.n_kv_heads - ) - cache = [mlx_lm.models.base.KVCache(self.model.head_dim, n) for n in kv_heads] - - # kv cache contains processed input IDs, we pass the unprocessed inputs and cache to model() - unprocessed_input_ids = prompt - generated_ids: List[int] = [] - - while True: - logits = self.model(unprocessed_input_ids[None], cache=cache) - logits = logits[:, -1, :] - - if logits_processor is not None: - # convert to logits_processor 1d expectation, apply, then convert back - logits_1d = logits.reshape(-1) - logits_1d = logits_processor(generated_ids, logits_1d) - logits = logits_1d.reshape(1, -1) - - new_token_single, prob = sample(logits) - new_token = new_token_single.item() - yield new_token, prob - - generated_ids.append(new_token) - unprocessed_input_ids = new_token_single - - -def mlxlm( - model_name: str, - tokenizer_config: dict = {}, - model_config: dict = {}, - adapter_path: Optional[str] = None, - lazy: bool = False, -): - """Instantiate a model from the `mlx_lm` library and its tokenizer. - - Signature adapted from - https://github.com/ml-explore/mlx-examples/blob/4872727/llms/mlx_lm/utils.py#L422 - - Parameters - ---------- - Args: - path_or_hf_repo (Path): The path or the huggingface repository to load the model from. - tokenizer_config (dict, optional): Configuration parameters specifically for the tokenizer. - Defaults to an empty dictionary. - model_config(dict, optional): Configuration parameters specifically for the model. - Defaults to an empty dictionary. - adapter_path (str, optional): Path to the LoRA adapters. If provided, applies LoRA layers - to the model. Default: ``None``. - lazy (bool): If False eval the model parameters to make sure they are - loaded in memory before returning, otherwise they will be loaded - when needed. Default: ``False`` - - Returns - ------- - A `MLXLM` model instance. - - """ - try: - import mlx.core as mx - import mlx_lm - except ImportError: - raise ImportError( - "The `mlx_lm` library needs to be installed in order to use `mlx_lm` models." - ) - if not mx.metal.is_available(): - raise RuntimeError("You cannot use `mlx_lm` without Apple Silicon (Metal)") - - model, tokenizer = mlx_lm.load( - model_name, - tokenizer_config=tokenizer_config, - model_config=model_config, - adapter_path=adapter_path, - lazy=lazy, - ) - return MLXLM(model, tokenizer) diff --git a/outlines/models/transformers_vision.py b/outlines/models/transformers_vision.py deleted file mode 100644 index 9709c26a..00000000 --- a/outlines/models/transformers_vision.py +++ /dev/null @@ -1,138 +0,0 @@ -from typing import TYPE_CHECKING, Any, Iterator, List, Optional, Union - -from outlines.generate.api import GenerationParameters, SamplingParameters -from outlines.models import Transformers - -if TYPE_CHECKING: - from outlines.processors import OutlinesLogitsProcessor - - -class TransformersVision(Transformers): - def __init__(self, model, tokenizer, processor): - super().__init__(model, tokenizer) - self.processor = processor - - def generate( # type: ignore - self, - prompts: Union[str, List[str]], - media: Union[List[Any], List[List[Any]]], - generation_parameters: GenerationParameters, - logits_processor: Optional["OutlinesLogitsProcessor"], - sampling_parameters: SamplingParameters, - ) -> Union[str, List[str], List[List[str]]]: - """Generate text using `transformers`. - - Arguments - --------- - prompts - A prompt or list of prompts. - media - A List[PIL.Image] or List[List[PIL.Image]] - generation_parameters - An instance of `GenerationParameters` that contains the prompt, - the maximum number of tokens, stop sequences and seed. All the - arguments to `SequenceGeneratorAdapter`'s `__cal__` method. - logits_processor - The logits processor to use when generating text. - sampling_parameters - An instance of `SamplingParameters`, a dataclass that contains - the name of the sampler to use and related parameters as available - in Outlines. - - Returns - ------- - The generated text - """ - inputs = self.processor(prompts, media, padding=True, return_tensors="pt").to( - self.model.device - ) - - generation_kwargs = self._get_generation_kwargs( - prompts, - generation_parameters, - logits_processor, - sampling_parameters, - ) - generated_ids = self._generate_output_seq(prompts, inputs, **generation_kwargs) - - # if single str input and single sample per input, convert to a 1D output - if isinstance(prompts, str): - # Should always be true until NotImplementedError above is fixed - generated_ids = generated_ids.squeeze(0) - - return self._decode_generation(generated_ids) - - def stream( # type: ignore - self, - prompts: Union[str, List[str]], - media: Union[Any, List[Any]], # TODO: docstring - generation_parameters: GenerationParameters, - logits_processor: Optional["OutlinesLogitsProcessor"], - sampling_parameters: SamplingParameters, - ) -> Iterator[Union[str, List[str]]]: - raise NotImplementedError - - -def transformers_vision( - model_name: str, - model_class, - device: Optional[str] = None, - model_kwargs: dict = {}, - processor_kwargs: dict = {}, - tokenizer_class=None, - processor_class=None, -): - """Instantiate a model from the `transformers` library and its tokenizer. - - Parameters - ---------- - model_name - The name of the model as listed on Hugging Face's model page. - model_class - The `PreTrainedModel` class from transformers to use in initializing the vision model from `model_name`. - https://huggingface.co/docs/transformers/main/en/main_classes/model#transformers.PreTrainedModel - device - The device(s) on which the model should be loaded. This overrides - the `device_map` entry in `model_kwargs` when provided. - model_kwargs - A dictionary that contains the keyword arguments to pass to the - `from_pretrained` method when loading the model. - processor_kwargs - A dictionary that contains the keyword arguments to pass to the - `from_pretrained` method when loading the processor. - - Returns - ------- - A `TransformersModel` model instance. - - """ - if processor_class is None or tokenizer_class is None: - try: - from transformers import AutoProcessor, AutoTokenizer - except ImportError: - raise ImportError( - "The `transformers` library needs to be installed in order to use `transformers` models." - ) - if processor_class is None: - processor_class = AutoProcessor - if tokenizer_class is None: - tokenizer_class = AutoTokenizer - - if device is not None: - model_kwargs["device_map"] = device - - model = model_class.from_pretrained(model_name, **model_kwargs) - - processor_kwargs.setdefault("padding_side", "left") - processor_kwargs.setdefault("pad_token", "[PAD]") - processor = processor_class.from_pretrained(model_name, **processor_kwargs) - - if tokenizer_class is None: - if getattr(processor, "tokenizer", None): - tokenizer = processor.tokenizer - else: - tokenizer = AutoTokenizer.from_pretrained(model_name, **processor_kwargs) - else: - tokenizer = tokenizer_class.from_pretrained(model_name, **processor_kwargs) - - return TransformersVision(model, tokenizer, processor) diff --git a/outlines/models/vllm.py b/outlines/models/vllm.py deleted file mode 100644 index d1f97bde..00000000 --- a/outlines/models/vllm.py +++ /dev/null @@ -1,226 +0,0 @@ -import dataclasses -from typing import TYPE_CHECKING, List, Optional, Union - -from transformers import SPIECE_UNDERLINE, PreTrainedTokenizerBase - -from outlines.generate.api import GenerationParameters, SamplingParameters - -if TYPE_CHECKING: - from vllm import LLM - from vllm.sampling_params import SamplingParams - - -class VLLM: - """Represents a vLLM model. - - We wrap models from model providing libraries in order to give all of - them the same interface in Outlines and allow users to easily switch - between providers. This class wraps the `vllm.LLM` class from the - `vllm` library. - - """ - - def __init__(self, model: "LLM"): - self.model = model - self.lora_request = None - - self.tokenizer = self._get_tokenizer() - - def _get_tokenizer(self): - if hasattr(self.model, "get_tokenizer"): - tokenizer = self.model.get_tokenizer() - elif hasattr(self.model, "tokenizer"): - if hasattr(self.model.tokenizer, "tokenizer"): - tokenizer = self.model.tokenizer.tokenizer - else: - tokenizer = self.model.tokenizer - else: - raise ValueError( - "The provided LLM instance neither has a " - "`tokenizer` attribute or a `get_tokenizer` method." - ) - return adapt_tokenizer(tokenizer=tokenizer) - - def generate( - self, - prompts: Union[str, List[str]], - generation_parameters: GenerationParameters, - logits_processor, - sampling_parameters: SamplingParameters, - *, - sampling_params: Optional["SamplingParams"] = None, - use_tqdm: bool = True, - ): - """Generate text using vLLM. - - Arguments - --------- - prompts - A prompt or list of prompts. - generation_parameters - An instance of `GenerationParameters` that contains the prompt, - the maximum number of tokens, stop sequences and seed. All the - arguments to `SequenceGeneratorAdapter`'s `__cal__` method. - logits_processor - The logits processor to use when generating text. - sampling_parameters - An instance of `SamplingParameters`, a dataclass that contains - the name of the sampler to use and related parameters as available - in Outlines. - sampling_params - An instance of `vllm.sampling_params.SamplingParams`. The values - passed via this dataclass supersede the values of the parameters - in `generation_parameters` and `sampling_parameters`. See the - vLLM documentation for more details: https://docs.vllm.ai/en/latest/dev/sampling_params.html. - use_tqdm - A boolean in order to display progress bar while inferencing - - Returns - ------- - The generated text, of shape `(n_batch, n_samples)`. If there are only - one batch and several samples, the list is of shape `(n_samples)`. If - this is a batch with several sequences but only one sample the list is - of shape `(n_batch)`. If there is only one sequence and one sample, a - string is returned. - - """ - from vllm.sampling_params import SamplingParams - - if sampling_params is None: - sampling_params = SamplingParams() - - max_tokens, stop_at, seed = dataclasses.astuple(generation_parameters) - - # We only update the values in `sampling_params` if they - # are specified by the user when calling the generator. - if max_tokens is not None: - sampling_params.max_tokens = max_tokens - if stop_at is not None: - if isinstance(stop_at, str): - stop_at = [stop_at] - sampling_params.stop = stop_at - if seed is not None: - sampling_params.seed = seed - - sampling_params.logits_processors = ( - [logits_processor] if logits_processor is not None else [] - ) - - sampler, num_samples, top_p, top_k, temperature = dataclasses.astuple( - sampling_parameters - ) - - # We only update the values in `sampling_params` that - # were not specified by the user. - if sampling_params.n == 1: - sampling_params.n = num_samples - sampling_params.best_of = num_samples - if top_p is not None and sampling_params.top_p == 1.0: - sampling_params.top_p = top_p - if top_k is not None and sampling_params.top_k == -1: - sampling_params.top_k = top_k - # TODO: remove this if statement once fixed - # https://github.com/vllm-project/vllm/issues/5404#issuecomment-2175972897 - if top_k == 1: - sampling_params.repetition_penalty = 0 - if temperature is not None and sampling_params.temperature == 1.0: - sampling_params.temperature = temperature - if sampler == "beam_search": - sampling_params.use_beam_search = True - - results = self.model.generate( - prompts, - sampling_params=sampling_params, - lora_request=self.lora_request, - use_tqdm=use_tqdm, - ) - results = [[sample.text for sample in batch.outputs] for batch in results] - - batch_size = len(results) - sample_size = len(results[0]) - - if batch_size == 1 and sample_size == 1: - return results[0][0] - elif batch_size == 1: - return results[0] - elif sample_size == 1: - return [batch[0] for batch in results] - - return results - - def stream(self, *args, **kwargs): - """Return a text generator. - - Streaming is not yet available for `vllm.LLM`. - - TODO: Implement the streaming functionality ourselves. - - """ - raise NotImplementedError( - "Streaming is not available for the vLLM integration." - ) - - def load_lora(self, adapter_path: Optional[str]): - from vllm.lora.request import LoRARequest - - if adapter_path is None: - self.lora_request = None - else: - self.lora_request = LoRARequest(adapter_path, 1, adapter_path) - - -def vllm(model_name: str, **vllm_model_params): - """Load a vLLM model. - - Arguments - --------- - model_name - The name of the model to load from the HuggingFace hub. - vllm_model_params - vLLM-specific model parameters. See the vLLM code for the full list: - https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/llm.py - - """ - from vllm import LLM - - model = LLM(model_name, **vllm_model_params) - - return VLLM(model) - - -def adapt_tokenizer(tokenizer: PreTrainedTokenizerBase) -> PreTrainedTokenizerBase: - """Adapt a tokenizer to use to compile the FSM. - - The API of Outlines tokenizers is slightly different to that of `transformers`. In - addition we need to handle the missing spaces to Llama's tokenizer to be able to - compile FSMs for this model. - - Parameters - ---------- - tokenizer - The tokenizer of the model. - - Returns - ------- - PreTrainedTokenizerBase - The adapted tokenizer. - """ - tokenizer.vocabulary = tokenizer.get_vocab() - tokenizer.special_tokens = set(tokenizer.all_special_tokens) - - def convert_token_to_string(token: Union[str, bytes]) -> str: - string = tokenizer.convert_tokens_to_string([token]) - - # A hack to handle missing spaces to HF's Llama tokenizers - if ( - type(token) is str - and token.startswith(SPIECE_UNDERLINE) - or token == "<0x20>" - ): - return " " + string - - return string - - tokenizer.convert_token_to_string = convert_token_to_string - - return tokenizer diff --git a/pyproject.toml b/pyproject.toml index 99d4f94e..e8d1abf2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,11 +56,7 @@ test = [ "accelerate", "beartype<0.16.0", "responses", - "llama-cpp-python", - "mlx-lm; platform_machine == 'arm64' and sys_platform == 'darwin'", "huggingface_hub", - "openai>=1.0.0", - "vllm; sys_platform != 'darwin'", "torch", "transformers", "pillow", @@ -111,10 +107,6 @@ module = [ "exllamav2.*", "jinja2", "jsonschema.*", - "openai.*", - "mamba_ssm.*", - "mlx_lm.*", - "mlx.*", "nest_asyncio", "numpy.*", "cloudpickle.*", @@ -122,10 +114,8 @@ module = [ "pydantic.*", "pytest", "referencing.*", - "tiktoken.*", "torch.*", "transformers.*", - "llama_cpp", "huggingface_hub", "lark.*", "interegular.*", @@ -133,11 +123,8 @@ module = [ "numba.*", "requests.*", "responses.*", - "vllm.*", "uvicorn.*", "fastapi.*", - "pycountry.*", - "pyairports.*", ] ignore_missing_imports = true diff --git a/tests/generate/test_generate.py b/tests/generate/test_generate.py index 8d5daa37..9e16b2dd 100644 --- a/tests/generate/test_generate.py +++ b/tests/generate/test_generate.py @@ -12,24 +12,6 @@ ########################################## -@pytest.fixture(scope="session") -def model_llamacpp(tmp_path_factory): - return models.llamacpp( - repo_id="M4-ai/TinyMistral-248M-v2-Instruct-GGUF", - filename="TinyMistral-248M-v2-Instruct.Q4_K_M.gguf", - ) - - -@pytest.fixture(scope="session") -def model_mlxlm(tmp_path_factory): - return models.mlxlm("mlx-community/TinyLlama-1.1B-Chat-v1.0-4bit") - - -@pytest.fixture(scope="session") -def model_mlxlm_phi3(tmp_path_factory): - return models.mlxlm("mlx-community/Phi-3-mini-4k-instruct-4bit") - - @pytest.fixture(scope="session") def model_transformers_random(tmp_path_factory): return models.transformers("hf-internal-testing/tiny-random-gpt2", device="cpu") @@ -40,11 +22,6 @@ def model_transformers_opt125m(tmp_path_factory): return models.transformers("facebook/opt-125m", device="cpu") -@pytest.fixture(scope="session") -def model_mamba(tmp_path_factory): - return models.mamba(model_name="state-spaces/mamba-130m-hf", device="cpu") - - @pytest.fixture(scope="session") def model_bart(tmp_path_factory): from transformers import AutoModelForSeq2SeqLM @@ -71,10 +48,6 @@ def model_transformers_vision(tmp_path_factory): ) -@pytest.fixture(scope="session") -def model_vllm(tmp_path_factory): - return models.vllm("facebook/opt-125m", gpu_memory_utilization=0.1) - # TODO: exllamav2 failing in main, address in https://github.com/outlines-dev/outlines/issues/808 # TODO: t5 tokenizer doesn't work with streaming @@ -97,15 +70,9 @@ def model_t5(tmp_path_factory): ALL_MODEL_FIXTURES = ( - "model_llamacpp", - "model_mlxlm", - "model_mlxlm_phi3", "model_transformers_random", "model_transformers_opt125m", - "model_mamba", "model_bart", - "model_transformers_vision", - "model_vllm", ) @@ -149,10 +116,10 @@ def enforce_not_implemented(model_fixture, *task_names): assert an NotImplementedError is raised. Otherwise, run normally """ NOT_IMPLEMENTED = { - "stream": ["model_transformers_vision", "model_vllm"], - "batch": ["model_llamacpp", "model_mlxlm", "model_mlxlm_phi3"], - "beam_search": ["model_llamacpp", "model_mlxlm", "model_mlxlm_phi3"], - "multiple_samples": ["model_llamacpp", "model_mlxlm", "model_mlxlm_phi3"], + "stream": ["model_transformers_vision"], + "batch": [], + "beam_search": [], + "multiple_samples": [], } for task_name in task_names: if model_fixture in NOT_IMPLEMENTED.get(task_name, []): diff --git a/tests/generate/test_integration_llamacpp.py b/tests/generate/test_integration_llamacpp.py deleted file mode 100644 index 0d1908eb..00000000 --- a/tests/generate/test_integration_llamacpp.py +++ /dev/null @@ -1,380 +0,0 @@ -import datetime -import re - -import pytest -from pydantic import BaseModel, constr - -import outlines.generate as generate -import outlines.grammars as grammars -import outlines.models as models -import outlines.samplers as samplers - -TEST_MODEL = "./llama-test-model/TinyMistral-248M-v2-Instruct.Q4_K_M.gguf" - - -@pytest.fixture(scope="session") -def model(tmp_path_factory): - return models.llamacpp( - repo_id="M4-ai/TinyMistral-248M-v2-Instruct-GGUF", - filename="TinyMistral-248M-v2-Instruct.Q4_K_M.gguf", - ) - - -@pytest.mark.parametrize( - "generator_type,params", - ( - (generate.text, []), - (generate.regex, ("[0-9]",)), - # (generate.cfg, (grammars.arithmetic,)), # Awaiting CFG fix - ), -) -def test_llamacpp_generation_api(model, generator_type, params): - generator = generator_type(model, *params) - - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - res = generator("test", stop_at=".") - assert isinstance(res, str) - - res = generator("test", stop_at=[".", "ab"]) - assert isinstance(res, str) - - res = generator("test", stop_at=[".", "ab"]) - assert isinstance(res, str) - - res1 = generator("test", seed=1, max_tokens=10) - res2 = generator("test", seed=1, max_tokens=10) - assert isinstance(res1, str) - assert isinstance(res2, str) - assert res1 == res2 - - -def test_llama_cpp_streaming_api(model): - generator = generate.text(model) - token_generator = generator.stream("test", max_tokens=10) - tokens = [token for token in token_generator] - assert len(tokens) <= 10 - assert isinstance(tokens[0], str) - - -@pytest.mark.xfail(reason="Batch inference is not available in `llama-cpp-python`.") -def test_llamacpp_batch_inference(model): - generator = generate.text(model) - res = generator(["test", "test1"]) - assert len(res) == 2 - - -def test_llamacpp_sampling_params(model): - generator = generate.text(model) - - params = { - "frequency_penalty": 1.0, - "presence_penalty": 1.0, - } - res = generator("test", seed=1, max_tokens=10, **params) - assert isinstance(res, str) - - -def test_llamacpp_greedy_sampling(model): - sampler = samplers.greedy() - generator = generate.text(model, sampler) - res = generator("test", max_tokens=20) - assert isinstance(res, str) - - -def test_llamacpp_multinomial_sampling(model): - sampler = samplers.multinomial() - generator = generate.text(model, sampler) - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - sampler = samplers.multinomial(1, temperature=1.0) - generator = generate.text(model, sampler) - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - sampler = samplers.multinomial(1, top_k=1) - generator = generate.text(model, sampler) - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - sampler = samplers.multinomial(1, top_p=0.5) - generator = generate.text(model, sampler) - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - -def test_llamacpp_several_samples(model): - sampler = samplers.multinomial(3) - generator = generate.text(model, sampler) - with pytest.raises(NotImplementedError, match="allow to take several samples"): - generator("test") - - -def test_llamacpp_beam_search(model): - sampler = samplers.beam_search(1) - generator = generate.text(model, sampler) - - with pytest.raises(NotImplementedError, match="does not support Beam Search"): - generator("test") - - -def test_llamacpp_text_stop(model): - prompt = ( - "<|im_start|>user\nWrite a short sentence<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.text(model)(prompt, stop_at="a", max_tokens=100) - assert isinstance(sequence, str) - assert sequence.find("a") == -1 - - -def test_llamacpp_regex(model): - prompt = ( - "<|im_start|>user\nWrite an email address<|im_end|>\n<|im_start|>assistant\n" - ) - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str) - - # One prompt - sequence = generator(prompts=prompt) - assert isinstance(sequence, str) - assert re.fullmatch(pattern=regex_str, string=sequence) is not None - - -def test_llamacpp_integer(model): - prompt = ( - "<|im_start|>user\nWrite a short sentence<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.format(model, int)(prompt, max_tokens=10) - assert isinstance(sequence, int) - assert sequence != "" - int(sequence) - - -def test_llamacpp_float(model): - prompt = ( - "<|im_start|>user\nWrite a short sentence<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.format(model, float)(prompt, max_tokens=10) - assert isinstance(sequence, float) - - assert sequence != "" - float(sequence) - - -def test_llamacpp_bool(model): - prompt = ( - "<|im_start|>user\nIs this True or False?<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.format(model, bool)(prompt, max_tokens=10) - assert isinstance(sequence, bool) - - assert sequence != "" - bool(sequence) - - -def test_llamacpp_date(model): - prompt = ( - "<|im_start|>user\nWhat day is it today?<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.format(model, datetime.date)(prompt, max_tokens=20, seed=10) - assert isinstance(sequence, datetime.date) - - -def test_llamacpp_time(model): - prompt = "<|im_start|>user\nWhat time is it?<|im_end|>\n<|im_start|>assistant\n" - sequence = generate.format(model, datetime.time)(prompt, max_tokens=10) - assert isinstance(sequence, datetime.time) - - -def test_llamacpp_datetime(model): - prompt = "<|im_start|>user\nWhat time is it?<|im_end|>\n<|im_start|>assistant\n" - sequence = generate.format(model, datetime.datetime)(prompt, max_tokens=20) - assert isinstance(sequence, datetime.datetime) - - -def test_llamacpp_choice(model): - prompt = ( - "<|im_start|>user\nWrite a short sentence<|im_end|>\n<|im_start|>assistant\n" - ) - sequence = generate.choice(model, ["test", "choice"])(prompt) - assert sequence == "test" or sequence == "choice" - - -def test_llamacpp_json_basic(model): - prompt = "<|im_start|>user\nOutput some JSON<|im_end|>\n<|im_start|>assistant\n" - - class Spam(BaseModel): - spam: constr(max_length=10) - fuzz: bool - - result = generate.json(model, Spam, whitespace_pattern="")( - prompt, max_tokens=100, temperature=0.0, seed=1 - ) - assert isinstance(result, BaseModel) - assert isinstance(result.spam, str) - assert isinstance(result.fuzz, bool) - assert len(result.spam) <= 10 - - -def test_llamacpp_json_schema(model): - prompt = "<|im_start|>user\nOutput some JSON<|im_end|>\n<|im_start|>assistant\n" - - schema = """{ - "title": "spam", - "type": "object", - "properties": { - "foo" : {"type": "boolean"}, - "bar": {"type": "string", "maxLength": 4} - }, - "required": ["foo", "bar"] - } - """ - - result = generate.json(model, schema, whitespace_pattern="")( - prompt, max_tokens=100, temperature=0, seed=10 - ) - assert isinstance(result, dict) - assert isinstance(result["foo"], bool) - assert isinstance(result["bar"], str) - - -def test_llamacpp_cfg(model): - prompt = "<|im_start|>user\nOutput a short and valid JSON object with two keys.<|im_end|>\n><|im_start|>assistant\n" - - # remove this statement once cfg is implemented - with pytest.raises(NotImplementedError): - result = generate.cfg(model, grammars.arithmetic)(prompt, seed=11) - assert isinstance(result, str) - - -@pytest.mark.parametrize( - "repo,model_path,hf_tokenizer_uri", - [ - ("Qwen/Qwen1.5-0.5B-Chat-GGUF", "*q2*.gguf", "Qwen/Qwen1.5-0.5B-Chat"), - ("TheBloke/phi-2-GGUF", "*Q2*.gguf", "microsoft/phi-2"), - ], -) -def test_byte_tokenizer_regression(repo, model_path, hf_tokenizer_uri): - """Reproduce https://github.com/outlines-dev/outlines/issues/820""" - import llama_cpp - - model = models.llamacpp( - repo, - model_path, - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - hf_tokenizer_uri - ), - ) - generator = generate.choice(model, ["skirt", "dress", "pen", "jacket"]) - generator("Pick the odd word out: skirt, dress, pen, jacket") - - -def test_llama_cpp_pre_tokenizer_remains_broken(): - """If fails, llama.cpp pre-tokenizer is fixed -> revert #892, remove `with pytest.raises`""" - repo = "Qwen/Qwen1.5-0.5B-Chat-GGUF" - model_path = "*q2*.gguf" - - model = models.llamacpp(repo, model_path) - with pytest.raises(RuntimeError): - generate.choice(model, ["skirt", "dress", "pen", "jacket"]) - - -def test_RegexGuide_caching(model, temp_cache_dir): - import llama_cpp - - import outlines.caching - from outlines.fsm.guide import create_states_mapping - - assert outlines.caching._caching_enabled - - regex = r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)" - prompt = "What is the IP address of the Google DNS servers? " - - cache = outlines.caching.get_cache() - - # Returns (hits, misses) - _ = cache.stats(enable=True) - assert cache.statistics - - assert create_states_mapping.__memory__ is cache - - generator = generate.regex(model, regex, sampler=samplers.greedy()) - assert cache.stats() == (0, 1) - - model_2 = models.llamacpp( - "Qwen/Qwen1.5-0.5B-Chat-GGUF", - "*q2*.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "Qwen/Qwen1.5-0.5B-Chat" - ), - ) - generator_2 = generate.regex(model_2, regex, sampler=samplers.greedy()) - assert cache.stats() == (0, 2) - - # These two different models and tokenizers should not have the same state - # mapping results - assert ( - generator.logits_processor.fsm.states_to_token_maps - != generator_2.logits_processor.fsm.states_to_token_maps - ) - - generator_3 = generate.regex(model_2, regex, sampler=samplers.greedy()) - assert cache.stats() == (1, 2) - assert ( - generator_2.logits_processor.fsm.states_to_token_maps - == generator_3.logits_processor.fsm.states_to_token_maps - ) - - # Just for fun... - structured = generator(prompt, max_tokens=30) - structured_2 = generator_2(prompt, max_tokens=30) - - assert re.fullmatch(regex, structured) - assert re.fullmatch(regex, structured_2) - assert structured != structured_2 - - -def test_tokenizer_vocabulary_decode_sanity(): - """Assert the decoded newline token (198) is the same as the normalized vocab token""" - import llama_cpp - - model = models.llamacpp( - "bartowski/Meta-Llama-3-8B-Instruct-GGUF", - "Meta-Llama-3-8B-Instruct-IQ1_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - ) - tokenizer = generate.regex(model, "a").logits_processor.tokenizer - - decoded_nl_token = tokenizer.decode([198])[0] - vocab_nl_token = tokenizer.convert_token_to_string( - [token for token, token_id in tokenizer.vocabulary.items() if token_id == 198][ - 0 - ] - ) - assert decoded_nl_token == vocab_nl_token - - -def test_no_length_constraint_when_unset(): - """Assert that models.llamacpp doesn't have an implicit max_tokens preventing full sequence generation""" - import llama_cpp - - model = models.llamacpp( - repo_id="M4-ai/TinyMistral-248M-v2-Instruct-GGUF", - filename="TinyMistral-248M-v2-Instruct.Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "Locutusque/TinyMistral-248M-Instruct" - ), - ) - - long_pattern = "abcdefg" * 10 - generator = generate.regex(model, long_pattern) - - output = generator("a") - assert re.match(long_pattern, output) diff --git a/tests/generate/test_integration_transformers_vision.py b/tests/generate/test_integration_transformers_vision.py deleted file mode 100644 index 28b516c5..00000000 --- a/tests/generate/test_integration_transformers_vision.py +++ /dev/null @@ -1,116 +0,0 @@ -from io import BytesIO -from urllib.request import urlopen - -import pytest -from PIL import Image -from transformers import AutoProcessor, LlavaForConditionalGeneration - -import outlines -from outlines.models.transformers_vision import transformers_vision - -IMAGE_URLS = [ - "https://upload.wikimedia.org/wikipedia/commons/2/25/Siam_lilacpoint.jpg", - "https://upload.wikimedia.org/wikipedia/commons/7/71/2010-kodiak-bear-1.jpg", - "https://upload.wikimedia.org/wikipedia/commons/b/be/Tamias-rufus-001.jpg", -] - - -def img_from_url(url): - img_byte_stream = BytesIO(urlopen(url).read()) - return Image.open(img_byte_stream).convert("RGB") - - -@pytest.fixture(scope="session") -def model(tmp_path_factory): - return transformers_vision( - "trl-internal-testing/tiny-random-LlavaForConditionalGeneration", - model_class=LlavaForConditionalGeneration, - device="cpu", - ) - - -@pytest.fixture(scope="session") -def processor(tmp_path_factory): - return AutoProcessor.from_pretrained("llava-hf/llava-interleave-qwen-0.5b-hf") - - -def test_single_image_text_gen(model, processor): - conversation = [ - { - "role": "user", - "content": [{"type": "text", "text": "What is this?"}, {"type": "image"}], - }, - ] - generator = outlines.generate.text(model) - sequence = generator( - processor.apply_chat_template(conversation), - [img_from_url(IMAGE_URLS[0])], - seed=10000, - max_tokens=10, - ) - assert isinstance(sequence, str) - - -def test_multi_image_text_gen(model, processor): - """If the length of image tags and number of images we pass are > 1 and equal, - we should yield a successful generation. - """ - conversation = [ - { - "role": "user", - "content": [ - {"type": "text", "text": "What do all these have in common?"}, - ] - + [{"type": "image"} for _ in range(len(IMAGE_URLS))], - }, - ] - generator = outlines.generate.text(model) - sequence = generator( - processor.apply_chat_template(conversation), - [img_from_url(i) for i in IMAGE_URLS], - seed=10000, - max_tokens=10, - ) - assert isinstance(sequence, str) - - -def test_mismatched_image_text_gen(model, processor): - """If the length of image tags and number of images we pass are unequal, - we should raise an error. - """ - conversation = [ - { - "role": "user", - "content": [ - {"type": "text", "text": "I'm passing 3 images, but only 1 image tag"}, - {"type": "image"}, - ], - }, - ] - generator = outlines.generate.text(model) - with pytest.raises(ValueError): - _ = generator( - processor.apply_chat_template(conversation), - [img_from_url(i) for i in IMAGE_URLS], - seed=10000, - max_tokens=10, - ) - - -def test_single_image_choice(model, processor): - conversation = [ - { - "role": "user", - "content": [{"type": "text", "text": "What is this?"}, {"type": "image"}], - }, - ] - choices = ["cat", "dog"] - generator = outlines.generate.choice(model, choices) - sequence = generator( - processor.apply_chat_template(conversation), - [img_from_url(IMAGE_URLS[0])], - seed=10000, - max_tokens=10, - ) - assert isinstance(sequence, str) - assert sequence in choices diff --git a/tests/generate/test_integration_vllm.py b/tests/generate/test_integration_vllm.py deleted file mode 100644 index 4634bc83..00000000 --- a/tests/generate/test_integration_vllm.py +++ /dev/null @@ -1,239 +0,0 @@ -import datetime -import re - -import pytest -import torch -from pydantic import BaseModel, constr -from vllm.sampling_params import SamplingParams - -import outlines.generate as generate -import outlines.grammars as grammars -import outlines.models as models -import outlines.samplers as samplers - -pytestmark = pytest.mark.skipif( - not torch.cuda.is_available(), reason="vLLM models can only be run on GPU." -) - - -@pytest.fixture(scope="module") -def model(): - return models.vllm("gpt2", gpu_memory_utilization=0.5) - - -@pytest.mark.parametrize( - "generator_type,params", ((generate.text, []), (generate.regex, ("[0-9]",))) -) -def test_vllm_generation_api(model, generator_type, params): - generator = generator_type(model, *params) - - res = generator("test") - assert isinstance(res, str) - - res = generator("test", max_tokens=10) - assert isinstance(res, str) - - res = generator("test", stop_at=".") - assert isinstance(res, str) - - res = generator("test", stop_at=[".", "ab"]) - assert isinstance(res, str) - - res = generator("test", stop_at=[".", "ab"]) - assert isinstance(res, str) - - res1 = generator("test", seed=1) - res2 = generator("test", seed=1) - assert isinstance(res1, str) - assert isinstance(res2, str) - assert res1 == res2 - - res = generator(["test", "test1"]) - assert len(res) == 2 - - -def test_vllm_sampling_params(model): - generator = generate.text(model) - - sampling_params = SamplingParams(n=2) - res = generator("test", sampling_params=sampling_params) - assert len(res) == 2 - assert isinstance(res[0], str) - assert isinstance(res[1], str) - - sampling_params = SamplingParams(seed=2) - res1 = generator("test", sampling_params=sampling_params) - res2 = generator("test", sampling_params=sampling_params) - assert res1 == res2 - - -def test_vllm_greedy_sampling(model): - sampler = samplers.greedy() - generator = generate.text(model, sampler) - res = generator("test") - assert isinstance(res, str) - - -def test_vllm_multinomial_sampling(model): - sampler = samplers.multinomial() - generator = generate.text(model, sampler) - res = generator("test") - assert isinstance(res, str) - - sampler = samplers.multinomial(3) - generator = generate.text(model, sampler) - res = generator("test") - assert len(res) == 3 - assert isinstance(res[0], str) - assert isinstance(res[1], str) - - sampler = samplers.multinomial(2, top_k=1) - generator = generate.text(model, sampler) - res = generator("test") - assert res[0] == res[1] - - sampler = samplers.multinomial(1, top_p=0.5) - generator = generate.text(model, sampler) - res = generator("test") - assert isinstance(res, str) - - sampler = samplers.multinomial(2, temperature=0.00001) - generator = generate.text(model, sampler) - res = generator("test") - assert res[0] == res[1] - - -def test_vllm_beam_search(model): - sampler = samplers.beam_search(1) - generator = generate.text(model, sampler) - res1 = generator("test") - sampler = samplers.greedy() - generator = generate.text(model, sampler) - res2 = generator("test") - assert res1 == res2 - - sampler = samplers.beam_search(2) - generator = generate.text(model, sampler) - res = generator("test") - assert len(res) == 2 - assert res[0] != res[1] - - -def test_vllm_text_stop(model): - prompt = "Write a short sentence containing 'You': " - sequence = generate.text(model)(prompt, max_tokens=100, seed=10) - assert sequence.find("news") != -1 - - sequence = generate.text(model)(prompt, stop_at="news", max_tokens=100, seed=10) - assert isinstance(sequence, str) - assert sequence.find("news") == -1 - - -def test_vllm_regex(model): - prompt = "Write an email address: " - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str) - - # One prompt - sequence = generator(prompts=prompt) - assert isinstance(sequence, str) - assert re.fullmatch(pattern=regex_str, string=sequence) is not None - - -def test_vllm_integer(model): - prompt = "Give me an integer: " - sequence = generate.format(model, int)(prompt, max_tokens=10) - assert isinstance(sequence, int) - assert sequence != "" - int(sequence) - - -def test_vllm_float(model): - prompt = "Give me a floating-point number: " - sequence = generate.format(model, float)(prompt, max_tokens=10) - assert isinstance(sequence, float) - - assert sequence != "" - float(sequence) - - -def test_vllm_bool(model): - prompt = "Is this True or False? " - sequence = generate.format(model, bool)(prompt, max_tokens=10) - assert isinstance(sequence, bool) - - assert sequence != "" - bool(sequence) - - -def test_vllm_date(model): - prompt = "What day is it today? " - sequence = generate.format(model, datetime.date)(prompt, max_tokens=10) - assert isinstance(sequence, datetime.date) - - -def test_vllm_time(model): - prompt = "What time is it? " - sequence = generate.format(model, datetime.time)(prompt, max_tokens=10) - assert isinstance(sequence, datetime.time) - - -def test_vllm_datetime(model): - prompt = "What time is it? " - sequence = generate.format(model, datetime.datetime)(prompt, max_tokens=20) - assert isinstance(sequence, datetime.datetime) - - -def test_vllm_choice(model): - prompt = "Which one between 'test' and 'choice'? " - sequence = generate.choice(model, ["test", "choice"])(prompt) - assert sequence == "test" or sequence == "choice" - - -def test_vllm_json_basic(model): - prompt = "Output some JSON. " - - class Spam(BaseModel): - spam: constr(max_length=10) - fuzz: bool - - sampling_params = SamplingParams(temperature=0) - result = generate.json(model, Spam, whitespace_pattern="")( - prompt, max_tokens=100, seed=1, sampling_params=sampling_params - ) - assert isinstance(result, BaseModel) - assert isinstance(result.spam, str) - assert isinstance(result.fuzz, bool) - assert len(result.spam) <= 10 - - -def test_vllm_json_schema(model): - prompt = "Output some JSON. " - - schema = """{ - "title": "spam", - "type": "object", - "properties": { - "foo" : {"type": "boolean"}, - "bar": {"type": "string", "maxLength": 4} - }, - "required": ["foo", "bar"] - } - """ - - sampling_params = SamplingParams(temperature=0) - result = generate.json(model, schema, whitespace_pattern="")( - prompt, max_tokens=100, seed=10, sampling_params=sampling_params - ) - assert isinstance(result, dict) - assert isinstance(result["foo"], bool) - assert isinstance(result["bar"], str) - - -@pytest.mark.xfail( - reason="The CFG logits processor for vLLM has not been implemented yet." -) -def test_vllm_cfg(model): - prompt = "<|im_start|>user\nOutput a short and valid JSON object with two keys.<|im_end|>\n><|im_start|>assistant\n" - result = generate.cfg(model, grammars.arithmetic)(prompt, seed=11) - assert isinstance(result, str) From 46230bb4f4777b6644a51bf38f26ceb17b6db32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 14:07:48 +0200 Subject: [PATCH 08/20] Remove the text generation logic --- outlines/__init__.py | 1 - outlines/generate/__init__.py | 8 - outlines/generate/api.py | 622 ------------------ outlines/generate/cfg.py | 31 - outlines/generate/choice.py | 19 - outlines/generate/format.py | 38 -- outlines/generate/fsm.py | 22 - outlines/generate/generator.py | 312 --------- outlines/generate/json.py | 67 -- outlines/generate/regex.py | 36 - outlines/generate/text.py | 35 - outlines/models/transformers.py | 21 +- outlines/samplers.py | 324 --------- tests/generate/__init__.py | 0 tests/generate/conftest.py | 64 -- tests/generate/test_api.py | 33 - tests/generate/test_generate.py | 303 --------- tests/generate/test_generator.py | 497 -------------- .../generate/test_integration_transformers.py | 544 --------------- tests/test_samplers.py | 254 ------- 20 files changed, 20 insertions(+), 3211 deletions(-) delete mode 100644 outlines/generate/__init__.py delete mode 100644 outlines/generate/api.py delete mode 100644 outlines/generate/cfg.py delete mode 100644 outlines/generate/choice.py delete mode 100644 outlines/generate/format.py delete mode 100644 outlines/generate/fsm.py delete mode 100644 outlines/generate/generator.py delete mode 100644 outlines/generate/json.py delete mode 100644 outlines/generate/regex.py delete mode 100644 outlines/generate/text.py delete mode 100644 outlines/samplers.py delete mode 100644 tests/generate/__init__.py delete mode 100644 tests/generate/conftest.py delete mode 100644 tests/generate/test_api.py delete mode 100644 tests/generate/test_generate.py delete mode 100644 tests/generate/test_generator.py delete mode 100644 tests/generate/test_integration_transformers.py delete mode 100644 tests/test_samplers.py diff --git a/outlines/__init__.py b/outlines/__init__.py index 04f4da55..f8d13c66 100644 --- a/outlines/__init__.py +++ b/outlines/__init__.py @@ -1,5 +1,4 @@ """Outlines is a Generative Model Programming Framework.""" -import outlines.generate import outlines.models from outlines.caching import clear_cache, disable_cache, get_cache diff --git a/outlines/generate/__init__.py b/outlines/generate/__init__.py deleted file mode 100644 index f28cbd80..00000000 --- a/outlines/generate/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .api import SequenceGenerator -from .cfg import cfg -from .choice import choice -from .format import format -from .fsm import fsm -from .json import json -from .regex import regex -from .text import text diff --git a/outlines/generate/api.py b/outlines/generate/api.py deleted file mode 100644 index ad01377c..00000000 --- a/outlines/generate/api.py +++ /dev/null @@ -1,622 +0,0 @@ -import datetime -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any, Iterator, List, Optional, Union - -from outlines.generate.generator import sequence_generator -from outlines.samplers import BeamSearchSampler, GreedySampler, MultinomialSampler - -if TYPE_CHECKING: - import torch - -FormattedOutput = Union[ - str, int, float, bool, datetime.date, datetime.time, datetime.datetime -] - - -class SequenceGenerator: - def __init__( - self, - fsm, - model, - sampler, - device, - ): - self.fsm = fsm - self.model = model - self.sampler = sampler - self.tokenizer = model.tokenizer - self.device = device - self.num_samples = sampler.samples - - def get_generated_token_ids( - self, - prompt_token_ids: "torch.Tensor", - token_ids: "torch.Tensor", - ) -> List["torch.Tensor"]: - """Get the tokens generated so far. - - Parameters - ---------- - prompt_token_ids - Tensor that contains the token ids of the sequences' prompts. - token_ids - The generated token ids. - - Returns - ------- - A tensor that contains the token ids that have been generated so far. - - """ - prompt_lengths = [len(prompt) for prompt in prompt_token_ids] - token_ids = [ - cur_token_ids[length:] - for cur_token_ids, length in zip(token_ids, prompt_lengths) - ] - - return token_ids - - def is_stop_sequence_found( - self, generated_sequences: List[str], stop_sequences: List[str] - ) -> bool: - """Determine whether one of the stop sequences has been generated. - - Parameters - ---------- - generated_sequences - The list of sequences generated so far. - stop_sequences - The list that contains the sequence which stop the generation when - found. - - Returns - ------- - True if at least one of the stop sequences has been found in each generated - sequence. - - """ - return all( - [ - any([seq in generated for seq in stop_sequences]) - for generated in generated_sequences - ] - ) - - def strip_stop_sequences( - self, sequence: str, stop_sequences: Optional[List[str]] - ) -> str: - """Remove the stop sequences from the generated sequences. - - Parameters - ---------- - sequence - One of the generated sequences. - stop_sequences - The list that contains the sequence which stop the generation when - found. - - """ - if stop_sequences: - match_indexes = [sequence.find(seq) for seq in stop_sequences] - if any([index != -1 for index in match_indexes]): - # select the stop_sequence that is found first in the sequence - min_match_index_value = min([i for i in match_indexes if i != -1]) - min_match_index_pos = match_indexes.index(min_match_index_value) - sequence = sequence[ - : match_indexes[min_match_index_pos] - + len(stop_sequences[min_match_index_pos]) - ] - - return sequence - - def format_sequence(self, sequence: str) -> FormattedOutput: - """Translate the generated sequence to another type. - - This method is for instance overridden when generating JSON to either - return a dictionnary or a Pydantic model. - - Parameters - ---------- - sequence - A generated sequences. - - Returns - ------- - The formatted sequence. - - """ - return sequence - - def __call__( - self, - prompts: Union[str, List[str]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - rng: Optional["torch.Generator"] = None, - ) -> Union[FormattedOutput, List[FormattedOutput], List[List[FormattedOutput]]]: - """Generate the full text sequence. - - Since `SequenceGenerator.stream` calls the tokenizer at every step this - method loops over the generator returned by `sequence_generator` itself - so the tokenizer is called only once after all token ids have been - generated. - - Parameters - ---------- - prompts - A string or list of strings that are passed to the model before - generating the first token. - max_tokens - An integer representing maximum number of tokens that will be generated - (per prompt) - stop_at - A string or list of strings at which the text generated will stop - rng - The random number generator. Defaults to a non-seeded `torch.Generator` - instance. - - Returns - ------- - The generation(s), potentially cast to another type. - """ - import torch - - if isinstance(prompts, str): - prompts = [prompts] - - if isinstance(stop_at, str): - stop_at = [stop_at] - - stop_sequences = stop_at - num_samples = self.num_samples - - if rng is None: - rng = torch.Generator(device=self.device) - rng.seed() - - prompt_token_ids, attention_masks = self.tokenizer.encode(prompts) - prompt_token_ids = prompt_token_ids.to(self.device) - attention_masks = attention_masks.to(self.device) - - # To draw multiple samples we repeat the prompt as many times - # as there are samples. We copy the FSMs and initialize the - # FSM states. - num_samples = self.num_samples - batch_size = len(prompts) - - prompt_token_ids = torch.repeat_interleave(prompt_token_ids, num_samples, dim=0) - attention_masks = torch.repeat_interleave(attention_masks, num_samples, dim=0) - fsm_states = [0 for _ in range(batch_size * num_samples)] - fsms = [self.fsm.copy() for _ in range(batch_size * num_samples)] - weights = torch.zeros( - (batch_size * num_samples), dtype=torch.float, device=self.device - ) - - states = sequence_generator( - self.model, - self.sampler, - fsms, - prompt_token_ids, - weights, - attention_masks, - fsm_states, - rng=rng, - ) - - while True: - try: - last_state = next(states) - if max_tokens or stop_sequences: - token_ids = last_state.token_ids - generated_token_ids = self.get_generated_token_ids( - prompt_token_ids, token_ids - ) - if max_tokens and len(generated_token_ids[0]) >= max_tokens: - break - if stop_sequences and self.is_stop_sequence_found( - self.tokenizer.decode(generated_token_ids), stop_sequences - ): - break - except StopIteration: - break - - token_ids = last_state.token_ids - generated_token_ids = self.get_generated_token_ids(prompt_token_ids, token_ids) - - generated = self.tokenizer.decode(generated_token_ids) - stripped = [ - self.strip_stop_sequences(sequence, stop_sequences) - for sequence in generated - ] - formatted = [self.format_sequence(sequence) for sequence in stripped] - - # We reshape the output to (batch_size, sample_size) - output: List[List[FormattedOutput]] = list() - for i in range(0, batch_size * num_samples, num_samples): - output.append(formatted[i : i + num_samples]) - - # We remove leading dimensions for the output - if batch_size == 1 and num_samples == 1: - return output[0][0] - elif batch_size == 1: - return output[0] - elif num_samples == 1: - return [samples[0] for samples in output] - else: - return output - - def stream( - self, - prompts: Union[str, List[str]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - rng: Optional["torch.Generator"] = None, - ) -> Iterator[Union[List[str], str, List[List[str]]]]: - """Generate the text sequence one token at a time. - - Since `Tokenizer.decode` strips the whitespaces from the tokens we have no - choice but to decode the generated token ids at each step and compare the - current decoded strings to the previously decoded strings. - - Parameters - ---------- - prompts - A string or list of strings that are passed to the model before - generating the first token. - max_tokens - An integer representing maximum number of tokens that will be generated - (per prompt) - stop_at - A string or list of strings at which the text generated will stop - rng - The random number generator. Defaults to a non-seeded `torch.Generator` - instance. - - Returns - ------- - A string or list of strings that contain the generated text. - - """ - import torch - - if isinstance(prompts, str): - prompts = [prompts] - - if isinstance(stop_at, str): - stop_at = [stop_at] - - stop_sequences = stop_at - num_samples = self.num_samples - - prompt_token_ids, attention_masks = self.tokenizer.encode(prompts) - prompt_token_ids = prompt_token_ids.to(self.device) - attention_masks = attention_masks.to(prompt_token_ids.device) - - # To draw multiple samples we repeat the prompt as many times - # as there are samples. We copy the FSMs and initialize the - # FSM states. - num_samples = self.num_samples - batch_size = len(prompts) - - prompt_token_ids = torch.repeat_interleave(prompt_token_ids, num_samples, dim=0) - attention_masks = torch.repeat_interleave(attention_masks, num_samples, dim=0) - fsm_states = [0 for _ in range(batch_size * num_samples)] - fsms = [self.fsm.copy() for _ in range(batch_size * num_samples)] - weights = torch.zeros( - (batch_size * num_samples), - dtype=torch.float, - device=prompt_token_ids.device, - ) - - if rng is None: - rng = torch.Generator(device=prompt_token_ids.device) - rng.seed() - - states = sequence_generator( - self.model, - self.sampler, - fsms, - prompt_token_ids, - weights, - attention_masks, - fsm_states, - rng=rng, - ) - - def token_generator() -> Iterator[Union[List[str], str, List[List[str]]]]: - previously_generated_sequences = [ - "" for _ in range(batch_size) - ] * num_samples - num_generated = 0 - is_stop_at_reached = [False for _ in range(batch_size)] * num_samples - while True: - if (max_tokens and num_generated >= max_tokens) or all( - is_stop_at_reached - ): - return - try: - sequence = next(states) - num_generated += 1 - except StopIteration: - return - generated_token_ids = sequence.token_ids[:, -num_generated:] - generated_sequences = self.tokenizer.decode(generated_token_ids) - if stop_sequences: - is_stop_at_reached = [ - stop - or self.is_stop_sequence_found( - [generated_sequence], stop_sequences - ) - for generated_sequence, stop in zip( - generated_sequences, is_stop_at_reached - ) - ] - - generated_sequences = [ - self.format_sequence( - self.strip_stop_sequences(sequence, stop_sequences) - ) - if stop - else sequence - for sequence, stop in zip( - generated_sequences, is_stop_at_reached - ) - ] - next_tokens = [ - token[len(sequence) :] - for token, sequence, stop in zip( - generated_sequences, - previously_generated_sequences, - is_stop_at_reached, - ) - ] - previously_generated_sequences = generated_sequences - # We reshape the output to (batch_size, sample_size) - output: List[List[str]] = list() - for i in range(0, batch_size * num_samples, num_samples): - output.append(next_tokens[i : i + num_samples]) - - # We remove leading dimensions for the output - if batch_size == 1 and num_samples == 1: - yield output[0][0] - elif batch_size == 1: - yield output[0] - elif num_samples == 1: - yield [samples[0] for samples in output] - else: - yield output - - return token_generator() - - -@dataclass(frozen=True) -class GenerationParameters: - """Generation parameters used in Outlines' public API.""" - - max_tokens: Optional[int] - stop_at: Optional[Union[str, List[str]]] - seed: Optional[int] - - -@dataclass(frozen=True) -class SamplingParameters: - """Sampling parameters available in Outlines.""" - - sampler: str - num_samples: int = 1 - top_p: Optional[float] = None - top_k: Optional[int] = None - temperature: Optional[float] = None - - -class SequenceGeneratorAdapter: - """Class used to unify the interface to the model providers' - generation functions. - - Attributes - ---------- - model - The wrapped model. - logits_processor - The logits processor to use to generate text. - sampler - The sampler to use to generate text. - - """ - - def __init__(self, model, logits_processor, sampler): - self.model = model - self.logits_processor = logits_processor - - if isinstance(sampler, MultinomialSampler): - self.sampling_params = SamplingParameters( - "multinomial", - sampler.samples, - sampler.top_p, - sampler.top_k, - sampler.temperature, - ) - elif isinstance(sampler, GreedySampler): - self.sampling_params = SamplingParameters( - "greedy", sampler.samples, None, None, 0.0 - ) - elif isinstance(sampler, BeamSearchSampler): - self.sampling_params = SamplingParameters( - "beam_search", sampler.samples, None, None, 1.0 - ) - - def prepare_generation_parameters( - self, - max_tokens: Optional[int], - stop_at: Optional[Union[str, List[str]]], - seed: Optional[int], - ): - if isinstance(stop_at, str): - stop_at = [stop_at] - - generation_params = GenerationParameters( - max_tokens, - stop_at, - seed, - ) - - return generation_params - - def format_sequence(self, sequence: str) -> FormattedOutput: - """Translate the generated sequence to another type. - - This method is for instance overridden when generating JSON to either - return a dictionnary or a Pydantic model. - - Parameters - ---------- - sequence - A generated sequences. - - Returns - ------- - The formatted sequence. - - """ - return sequence - - def _format(self, sequences): - """Apply formatting to every string in a completion.""" - if isinstance(sequences, list): - return [self._format(sequence) for sequence in sequences] - else: - return self.format_sequence(sequences) - - def __call__( - self, - prompts: Union[str, List[str]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - seed: Optional[int] = None, - **model_specific_params, - ): - """Generate text from a prompt of list of prompts.""" - - generation_params = self.prepare_generation_parameters( - max_tokens, stop_at, seed - ) - - completions = self.model.generate( - prompts, - generation_params, - self.logits_processor, - self.sampling_params, - **model_specific_params, - ) - - return self._format(completions) - - def stream( - self, - prompts: Union[str, List[str]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - seed: Optional[int] = None, - **model_specific_params, - ): - """Return a text generator from a prompt or a list of prompts.""" - generation_params = self.prepare_generation_parameters( - max_tokens, stop_at, seed - ) - return self.model.stream( - prompts, - generation_params, - self.logits_processor, - self.sampling_params, - **model_specific_params, - ) - - -class VisionSequenceGeneratorAdapter(SequenceGeneratorAdapter): - def __call__( # type: ignore - self, - prompts: Union[str, List[str]], - media: Union[str, Any], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - seed: Optional[int] = None, - **model_specific_params, - ): - """ - Generate text from a prompt of list of prompts. - - Media: A URI to construct media or media object itself. Used as AutoProcessor argument. - """ - prompts, media = self._validate_prompt_media_types(prompts, media) - - generation_params = self.prepare_generation_parameters( - max_tokens, stop_at, seed - ) - - completions = self.model.generate( - prompts, - media, - generation_params, - self.logits_processor, - self.sampling_params, - **model_specific_params, - ) - - return self._format(completions) - - def stream( # type: ignore - self, - prompts: Union[str, List[str]], - media: List[Union[str, Any, List[Union[str, Any]]]], - max_tokens: Optional[int] = None, - stop_at: Optional[Union[str, List[str]]] = None, - seed: Optional[int] = None, - **model_specific_params, - ): - """Return a text generator from a prompt or a list of prompts.""" - prompts, media = self._validate_prompt_media_types(prompts, media) - generation_params = self.prepare_generation_parameters( - max_tokens, stop_at, seed - ) - return self.model.stream( - prompts, - media, - generation_params, - self.logits_processor, - self.sampling_params, - **model_specific_params, - ) - - @classmethod - def _validate_prompt_media_types( - cls, - prompts: Union[str, List[str]], - media: Union[str, Any, List[Union[str, Any]]], - ) -> Union[Any, List[Any]]: - """ - Prepare media as PIL.Image and ensure for every prompt str there is one List[PIL.Image] - """ - - def valid_types(prompts, media): - from PIL import Image # type: ignore - - if isinstance(prompts, list): - if not isinstance(media, list) or len(prompts) != len(media): - return False - for subprompt, submedia in zip(prompts, media): - if not isinstance(subprompt, str) or not all( - isinstance(m, Image.Image) for m in submedia - ): - return False - elif isinstance(prompts, str): - if not all(isinstance(m, Image.Image) for m in media): - return False - return True - - if not valid_types(prompts, media): - raise TypeError( - "Expected (prompts, media) to be of type " - "(str, List[Image])), or (List[str], List[List[Image]]) " - f"instead got prompts={prompts}, media={media}" - ) - - return prompts, media diff --git a/outlines/generate/cfg.py b/outlines/generate/cfg.py deleted file mode 100644 index 6af41400..00000000 --- a/outlines/generate/cfg.py +++ /dev/null @@ -1,31 +0,0 @@ -from functools import singledispatch - -from outlines.generate.api import SequenceGeneratorAdapter -from outlines.samplers import Sampler, multinomial - - -@singledispatch -def cfg( - model, cfg_str: str, sampler: Sampler = multinomial() -) -> SequenceGeneratorAdapter: - """Generate text in the language of a Context-Free Grammar - - Arguments - --------- - model: - An instance of `Transformer` that represents a model from the - `transformers` library. - sampler: - The sampling algorithm to use to generate token ids from the logits - distribution. - - Returns - ------- - A `SequenceGeneratorAdapter` instance that generates text. - - """ - raise NotImplementedError( - f"The CFG Logits processor is not available for {type(model)}. " - + "Please subscribe to https://github.com/outlines-dev/outlines/issues/684" - + " for updates on the fix." - ) diff --git a/outlines/generate/choice.py b/outlines/generate/choice.py deleted file mode 100644 index 970364d7..00000000 --- a/outlines/generate/choice.py +++ /dev/null @@ -1,19 +0,0 @@ -from functools import singledispatch -from typing import Callable, List - -from outlines.generate.api import SequenceGeneratorAdapter -from outlines.samplers import Sampler, multinomial - -from .regex import regex - - -@singledispatch -def choice( - model, choices: List[str], sampler: Sampler = multinomial() -) -> SequenceGeneratorAdapter: - regex_str = r"(" + r"|".join(choices) + r")" - - generator = regex(model, regex_str, sampler) - generator.format_sequence = lambda x: x - - return generator diff --git a/outlines/generate/format.py b/outlines/generate/format.py deleted file mode 100644 index ff7346b4..00000000 --- a/outlines/generate/format.py +++ /dev/null @@ -1,38 +0,0 @@ -from functools import singledispatch - -from outlines.fsm.types import python_types_to_regex -from outlines.generate.api import SequenceGeneratorAdapter -from outlines.samplers import Sampler, multinomial - -from .regex import regex - - -@singledispatch -def format( - model, python_type, sampler: Sampler = multinomial() -) -> SequenceGeneratorAdapter: - """Generate structured data that can be parsed as a Python type. - - Parameters - ---------- - model: - An instance of `Transformer` that represents a model from the - `transformers` library. - python_type: - A Python type. The output of the generator must be parseable into - this type. - sampler: - The sampling algorithm to use to generate token ids from the logits - distribution. - - Returns - ------- - A `SequenceGenerator` instance that generates text constrained by the Python type - and translates this text into the corresponding type. - - """ - regex_str, format_fn = python_types_to_regex(python_type) - generator = regex(model, regex_str, sampler) - generator.format_sequence = format_fn - - return generator diff --git a/outlines/generate/fsm.py b/outlines/generate/fsm.py deleted file mode 100644 index 2a128d96..00000000 --- a/outlines/generate/fsm.py +++ /dev/null @@ -1,22 +0,0 @@ -from functools import singledispatch - -import interegular - -from outlines.fsm.guide import RegexGuide -from outlines.generate.api import ( - SequenceGenerator, - SequenceGeneratorAdapter, - VisionSequenceGeneratorAdapter, -) -from outlines.samplers import Sampler, multinomial - - -@singledispatch -def fsm( - model, fsm: interegular.fsm.FSM, sampler: Sampler = multinomial() -) -> SequenceGeneratorAdapter: - from outlines.processors import FSMLogitsProcessor - - fsm = RegexGuide.from_interegular_fsm(fsm, model.tokenizer) - logits_processor = FSMLogitsProcessor(tokenizer=model.tokenizer, fsm=fsm) - return SequenceGeneratorAdapter(model, logits_processor, sampler) diff --git a/outlines/generate/generator.py b/outlines/generate/generator.py deleted file mode 100644 index e506aa03..00000000 --- a/outlines/generate/generator.py +++ /dev/null @@ -1,312 +0,0 @@ -import dataclasses -import math -from typing import TYPE_CHECKING, Callable, Iterable, Iterator, List, Optional, Tuple - -if TYPE_CHECKING: - import torch - - from outlines.fsm.guide import Guide - - -class ContextLengthExceededError(Exception): - pass - - -@dataclasses.dataclass(frozen=True) -class GenerationState: - token_ids: "torch.Tensor" - kv_cache: "torch.Tensor" - logits: "torch.Tensor" - weights: "torch.Tensor" - fsm_states: List[int] - - -def sequence_generator( - model: Callable, - sampler: Callable, - fsms: List["Guide"], - token_ids: "torch.Tensor", - sequence_weights: "torch.Tensor", - attention_masks: "torch.Tensor", - fsm_states: List[int], - rng: "torch.Generator", -) -> Iterator[GenerationState]: - """Generates sequences of tokens. - - Parameters - ---------- - model - A callable that generates a probability distribution over the - vocabulary when passed a tensor of token ids. - sampler - A callable that returns the next token ids, their ancestor sequence and - the updated sequence weights when passed a distribution over the - vocabulary. - token_ids - A tensor of token ids on which the sequence distribution is conditioned, of - shape ``(n_seqs, n_prompt_tokens)`` - sequence_weights - A tensor that contains the initial weights of the sequences, of shape - ``(n_seqs,)`` - attention_masks - A tensor of tensors that represent the tokens considered at the attention - layer, of shape ``(n_seqs, n_prompt_tokens)``. - fsms - List of finite-state machines that drive the text generation, - one for each sequence in the batch. - fsm_states - The initial states of the finite-state machine for each sequence in the batch. - - Yields - ------ - A new sequence. - - """ - import torch - - if rng is None: - rng = torch.Generator() - - kv_cache = None - - while True: - try: - logits, kv_cache = model(token_ids, attention_masks, kv_cache) - except IndexError: # Exceeding the context length - raise ContextLengthExceededError( - "The input length exceeds the context length of the model." - ) - - allowed_tokens = get_allowed_tokens(fsms, fsm_states) - biased_logits = bias_logits(logits, allowed_tokens) - next_token_ids, ancestors, sequence_weights = sampler( - biased_logits, sequence_weights, rng - ) - - token_ids = update_token_ids(token_ids, next_token_ids, ancestors) - attention_masks = update_attention_masks(attention_masks, ancestors) - kv_cache = reorder_kv_cache(kv_cache, ancestors) - if len(ancestors) > 1: - fsms = reorder_fsms(fsms, ancestors) - fsm_states = reorder_fsm_states(fsm_states, ancestors) - - fsm_states = get_next_fsm_states(fsms, fsm_states, next_token_ids) - is_finished = is_generation_finished(fsms, fsm_states) - - if is_finished: - yield GenerationState( - token_ids, - kv_cache, - logits, - sequence_weights, - fsm_states, - ) - return - - yield GenerationState( - token_ids, - kv_cache, - logits, - sequence_weights, - fsm_states, - ) - - -def get_next_fsm_states( - fsms: List["Guide"], fsm_states: List[int], next_token_ids: "torch.Tensor" -) -> List[int]: - """ - - Parameters - ---------- - fsm - The finite-state machine used to monitor this batch. - next_token_ids - The tokens that were just generated. - - Returns - ------- - A `torch.Tensor` object that represents the next logit mask. - - """ - return [ - fsm.get_next_state(fsm_state, int(token_id[0])) - for fsm, fsm_state, token_id in zip(fsms, fsm_states, next_token_ids) - ] - - -def get_allowed_tokens( - fsms: List["Guide"], fsm_states: List[int] -) -> List[Optional[Iterable[int]]]: - """Get the new instructions for each sequence from the finite-state machine. - - Parameters - ---------- - fsm - The finite-state machine used to monitor this batch. - fsm_states - The FSM states corresponding to each sequence in the batch. - - Returns - ------- - A nested list that contains the ids of the logits to keep. - - """ - return [ - fsm.get_next_instruction(state).tokens for fsm, state in zip(fsms, fsm_states) - ] - - -def is_generation_finished(fsms: List["Guide"], fsm_states: List[int]) -> bool: - """Determine if the generation is finished. - - A generation is considered finished if the FSM of every sequence in the - batch is in a final state. - - A better solution is to return finished sequences as soon as their FSM - is in a final state. - - Parameters - ---------- - fsm - The finite-state machine used to monitor this batch. - fsm_states - The FSM states corresponding to each sequence in the batch. - - Returns - ------- - Whether all sequences are finished sampling. - - """ - return all([fsm.is_final_state(state) for fsm, state in zip(fsms, fsm_states)]) - - -def update_token_ids( - token_ids: "torch.Tensor", next_token_ids: "torch.Tensor", ancestors: "torch.Tensor" -) -> "torch.Tensor": - """Append the sampled tokens to the running sequence of tokens. - - Parameters - ---------- - token_ids - The current token sequences - next_token_ids - The tokens that were just generated and that we need to append - to the existing sequences. - ancestors - The sequences to which the token ids need to be added. - - Returns - ------- - A new sequence of token ids that contains the tokens that were - just generated. - - """ - import torch - - token_ids = torch.index_select(token_ids, 0, ancestors) - return torch.concatenate([token_ids, next_token_ids], dim=-1) - - -def update_attention_masks( - attention_masks: "torch.Tensor", ancestors: "torch.Tensor" -) -> "torch.Tensor": - """Expand the attention masks. - - Parameters - ---------- - attention_masks - The attention masks for each sequence in the batch. - ancestors - The sequences to which the token ids need to be added. - - Returns - ------- - The attention masks padded with 1s. - - """ - import torch - - attention_masks = torch.index_select(attention_masks, 0, ancestors) - return torch.concatenate( - [ - attention_masks, - torch.ones( - attention_masks.shape[:-1] + (1,), device=attention_masks.device - ), - ], - axis=-1, - ) - - -def reorder_fsms(fsms: List["Guide"], ancestors: "torch.Tensor") -> List["Guide"]: - reordered_fsms = [] - for ancestor in ancestors: - reordered_fsms.append(fsms[ancestor].copy()) - - return reordered_fsms - - -def reorder_fsm_states(fsm_states: List[int], ancestors: "torch.Tensor") -> List[int]: - reordered_states = [] - for ancestor in ancestors: - reordered_states.append(fsm_states[ancestor]) - - return reordered_states - - -def reorder_kv_cache( - kv_cache: Optional[Tuple], ancestors: "torch.Tensor" -) -> Optional[Tuple]: - """Re-order the KV-cache based on the ancestors. - - In transformers, the object that stores the KV-cache is a tuple who elements - are the key cache and the value cache. Each of these caches are tuples where - each element correpond to a layer. To each layer corresponds a tensor whose - first dimension is the batch size. - - """ - import torch - - if kv_cache is None: - return None - - new_kv_cache: Tuple = tuple() - for cache_item in kv_cache: - new_cache_item: Tuple = tuple() - for layer in cache_item: - layer = torch.index_select(layer, 0, ancestors.to(layer.device)) - new_cache_item += (layer,) - new_kv_cache += (new_cache_item,) - - return new_kv_cache - - -def bias_logits(logits: "torch.Tensor", allowed_token_ids: List) -> "torch.Tensor": - """Mask the logits. - - The function iterates over a nested list where each list corresponds to the - indices that need to be masked for each row in the array. - - Parameters - ---------- - logits - Two dimensional tensor that contains the next-token probability - distribution. - allowed_token_ids - A list that contains the tokens that can be generated by the model. - - Returns - ------- - A view of the original logits tensor where some values are masked. - - """ - import torch - - biased_logits = torch.full_like(logits, -math.inf, device=logits.device) - for i, ids in enumerate(allowed_token_ids): - if ids is not None: - biased_logits[i, ids] = logits[i, ids] - else: - biased_logits[i] = logits[i] - return biased_logits diff --git a/outlines/generate/json.py b/outlines/generate/json.py deleted file mode 100644 index 04e8bfb7..00000000 --- a/outlines/generate/json.py +++ /dev/null @@ -1,67 +0,0 @@ -import json as pyjson -from functools import singledispatch -from typing import Callable, Optional, Union - -from pydantic import BaseModel - -from outlines.fsm.json_schema import build_regex_from_schema, get_schema_from_signature -from outlines.generate.api import SequenceGeneratorAdapter -from outlines.samplers import Sampler, multinomial - -from .regex import regex - - -@singledispatch -def json( - model, - schema_object: Union[str, object, Callable], - sampler: Sampler = multinomial(), - whitespace_pattern: Optional[str] = None, -) -> SequenceGeneratorAdapter: - """ - Generate structured JSON data with a `Transformer` model based on a specified JSON Schema. - - Parameters - ---------- - model: - An instance of `Transformer` that represents a model from the - `transformers` library. - schema_object: - The JSON Schema to generate data for. Can be a JSON string, a Pydantic model, or a callable - that returns a JSON schema. - sampler: - The sampling algorithm to use to generate token ids from the logits - distribution. - whitespace_pattern - Pattern to use for JSON syntactic whitespace (doesn't impact string literals) - Example: allow only a single space or newline with `whitespace_pattern=r"[\n ]?"` - - Returns - ------- - A `SequenceGenerator` instance that generates text constrained by the schema_object and - transforms the result if BaseModel is used. - - """ - if isinstance(schema_object, type(BaseModel)): - schema = pyjson.dumps(schema_object.model_json_schema()) - regex_str = build_regex_from_schema(schema, whitespace_pattern) - generator = regex(model, regex_str, sampler) - generator.format_sequence = lambda x: schema_object.parse_raw(x) - elif callable(schema_object): - schema = pyjson.dumps(get_schema_from_signature(schema_object)) - regex_str = build_regex_from_schema(schema, whitespace_pattern) - generator = regex(model, regex_str, sampler) - generator.format_sequence = lambda x: pyjson.loads(x) - elif isinstance(schema_object, str): - schema = schema_object - regex_str = build_regex_from_schema(schema, whitespace_pattern) - generator = regex(model, regex_str, sampler) - generator.format_sequence = lambda x: pyjson.loads(x) - else: - raise ValueError( - f"Cannot parse schema {schema_object}. The schema must be either " - + "a Pydantic object, a function or a string that contains the JSON " - + "Schema specification" - ) - - return generator diff --git a/outlines/generate/regex.py b/outlines/generate/regex.py deleted file mode 100644 index 78321ec8..00000000 --- a/outlines/generate/regex.py +++ /dev/null @@ -1,36 +0,0 @@ -from functools import singledispatch - -from outlines.fsm.guide import RegexGuide -from outlines.generate.api import ( - SequenceGenerator, - SequenceGeneratorAdapter, - VisionSequenceGeneratorAdapter, -) -from outlines.samplers import Sampler, multinomial - - -@singledispatch -def regex(model, regex_str: str, sampler: Sampler = multinomial()): - """Generate structured text in the language of a regular expression. - - Parameters - ---------- - model: - An instance of `Transformer` that represents a model from the - `transformers` library. - regex_str: - The regular expression that the output must follow. - sampler: - The sampling algorithm to use to generate token ids from the logits - distribution. - - Returns - ------- - A `SequenceGeneratorAdapter` instance that generates text constrained by the - regular expression. - - """ - from outlines.processors import RegexLogitsProcessor - - logits_processor = RegexLogitsProcessor(regex_str, tokenizer=model.tokenizer) - return SequenceGeneratorAdapter(model, logits_processor, sampler) diff --git a/outlines/generate/text.py b/outlines/generate/text.py deleted file mode 100644 index e5e00fe7..00000000 --- a/outlines/generate/text.py +++ /dev/null @@ -1,35 +0,0 @@ -from functools import singledispatch - -from outlines.fsm.guide import StopAtEOSGuide -from outlines.generate.api import ( - SequenceGenerator, - SequenceGeneratorAdapter, - VisionSequenceGeneratorAdapter, -) -from outlines.samplers import Sampler, multinomial - - -@singledispatch -def text(model, sampler: Sampler = multinomial()) -> SequenceGeneratorAdapter: - """Generate text with a `Transformer` model. - - Note - ---- - Python 3.11 allows dispatching on Union types and - this should greatly simplify the code. - - Arguments - --------- - model: - An instance of `Transformer` that represents a model from the - `transformers` library. - sampler: - The sampling algorithm to use to generate token ids from the logits - distribution. - - Returns - ------- - A `SequenceGeneratorAdapter` instance that generates text. - - """ - return SequenceGeneratorAdapter(model, None, sampler) diff --git a/outlines/models/transformers.py b/outlines/models/transformers.py index 7ecc9013..949d3c9c 100644 --- a/outlines/models/transformers.py +++ b/outlines/models/transformers.py @@ -4,7 +4,6 @@ from datasets.fingerprint import Hasher -from outlines.generate.api import GenerationParameters, SamplingParameters from outlines.models.tokenizer import Tokenizer if TYPE_CHECKING: @@ -19,6 +18,26 @@ KVCacheType = Tuple[Tuple["torch.DoubleTensor", "torch.DoubleTensor"], ...] +@dataclasses.dataclass(frozen=True) +class GenerationParameters: + """Generation parameters used in Outlines' public API.""" + + max_tokens: Optional[int] + stop_at: Optional[Union[str, List[str]]] + seed: Optional[int] + + +@dataclasses.dataclass(frozen=True) +class SamplingParameters: + """Sampling parameters available in Outlines.""" + + sampler: str + num_samples: int = 1 + top_p: Optional[float] = None + top_k: Optional[int] = None + temperature: Optional[float] = None + + def get_llama_tokenizer_types(): """Get all the Llama tokenizer types/classes that need work-arounds. diff --git a/outlines/samplers.py b/outlines/samplers.py deleted file mode 100644 index 8b64ed76..00000000 --- a/outlines/samplers.py +++ /dev/null @@ -1,324 +0,0 @@ -import math -from typing import TYPE_CHECKING, Callable, Optional, Protocol, Tuple - -if TYPE_CHECKING: - import torch - - -class Sampler(Protocol): - samples: int - - def __call__( - self, - next_token_logits: "torch.DoubleTensor", - sequence_weights: "torch.DoubleTensor", - rng: "torch.Generator", - ) -> "torch.DoubleTensor": - ... - - -class GreedySampler: - """Greedy Sampling algorithm. - - Greedy sampling consists in choosing the token with the largest - likelihood at every step. - - We don't allow more than one sample. We could attribute this a meaning, for - instance the k-th sample represents the k-th most likely token. In which - case it would be equivalent to beam search without the sequence weights. - - Attributes - ---------- - samples - The number of samples taken for each input sequence. - - """ - - def __init__(self): - self.samples = 1 - - def __call__( - self, - next_token_logits: "torch.DoubleTensor", - sequence_weights: "torch.DoubleTensor", - _, - ) -> "torch.DoubleTensor": - """Call the greedy sampler. - - Parameters - ---------- - next_token_logits - A tensor of shape ``(n_seqs, vocab_size,)`` that represents the - probability distribution of the next token over the vocabulary. - sequence_weights - A tensor of shape ``(n_seqs,)`` that represents the cumulative - weight of each sequence. - rng - A random number generator. - - Returns - ------- - A tuple with an array that contains the ids of the sampled tokens of - shape ``(n_seqs, 1)``, an array that contains the ancestors of each - sampled id of shape ``(n_seqs,)`` and an array that contains the updated - cumulative weights of each sequence of shape ``(n_seqs,)``. - - """ - import torch - - logprobs = torch.nn.functional.log_softmax(next_token_logits, dim=-1) - next_token_ids = torch.argmax(logprobs, dim=-1, keepdim=True) - - ancestors = torch.arange( - next_token_logits.shape[0], device=next_token_logits.device - ) - weights = sequence_weights + torch.gather(logprobs, 1, next_token_ids).squeeze() - - return next_token_ids, ancestors, weights - - -greedy = GreedySampler - - -class MultinomialSampler: - """Multinomial sampling algorithm. - - Multinomial sampling consists in randomly sampling the next token assuming - its distribution is a Categorical distribution parametrized by the - next-token logits. - - - Attributes - ---------- - samples - The number of samples taken for each input sequence. - - """ - - def __init__( - self, - samples: int = 1, - *, - top_k: Optional[int] = None, - top_p: Optional[float] = None, - temperature: Optional[float] = None, - ): - self.samples = samples - self.top_k = top_k - self.top_p = top_p - self.temperature = temperature - - self.logits_processors = [] - if top_k is not None: - self.logits_processors.append(keep_top_k_logits(top_k)) - elif top_p is not None: - self.logits_processors.append(keep_top_p_logits(top_p)) - - if temperature is not None: - self.logits_processors.append(rescale_logits(temperature)) - - def __call__( - self, - next_token_logits: "torch.DoubleTensor", - sequence_weights: "torch.DoubleTensor", - rng: "torch.Generator", - ) -> Tuple["torch.DoubleTensor", "torch.DoubleTensor", "torch.DoubleTensor"]: - """Call the multinomial sampler. - - Parameters - ---------- - next_token_logits - A tensor of shape ``(n_seqs, vocab_size,)`` that represents the - probability distribution of the next token over the vocabulary. - sequence_weights - A tensor of shape ``(n_seqs,)`` that represents the cumulative - weight of each sequence. - rng - A random number generator. - - Returns - ------- - A tuple with an array that contains the ids of the sampled tokens of - shape ``(n_seqs, 1)``, an array that contains the ancestors of each - sampled id of shape ``(n_seqs,)`` and an array that contains the updated - cumulative weights of each sequence of shape ``(n_seqs,)``. - - """ - import torch - - altered_next_token_logits = next_token_logits - for logit_processor in self.logits_processors: - altered_next_token_logits = logit_processor(next_token_logits) - - probs = torch.nn.functional.softmax(altered_next_token_logits, dim=-1) - next_token_ids = torch.multinomial(probs, num_samples=1, generator=rng) - - logprobs = torch.nn.functional.log_softmax(altered_next_token_logits, dim=-1) - ancestors = torch.arange( - altered_next_token_logits.shape[0], device=next_token_logits.device - ) - weights = sequence_weights + torch.gather(logprobs, 1, next_token_ids).squeeze() - - return next_token_ids, ancestors, weights - - -multinomial = MultinomialSampler - - -def keep_top_k_logits(k: int) -> Callable[["torch.Tensor"], "torch.Tensor"]: - """Build a function that masks logits values smaller than the top `k` ones. - - Parameters - ---------- - k - The ranking below which logit values are replaced by `-math.inf`. - - """ - import torch - - if not isinstance(k, int) or k < 1: - raise ValueError(f"`k` must be a strictly positive integers, got {k} instead.") - - def logits_processor(logits: torch.Tensor) -> torch.Tensor: - num_to_keep = min(k, logits.size(-1)) - mask_idx = logits < torch.topk(logits, num_to_keep)[0][..., -1, None] - return logits.masked_fill(mask_idx, -math.inf) - - return logits_processor - - -def keep_top_p_logits(p: float) -> Callable[["torch.Tensor"], "torch.Tensor"]: - """Build a function that masks the lowest probability tokens whose - cumulative probability is below a certain threshold. - - Parameters - ---------- - p - The value of the threshold. We keep the highest probability tokens whose - cumulative distribution is greater than or equal to `p` and mask the - others. Its value must be between 0 (excluded) and 1 (included). - - """ - import torch - - if p <= 0.0 or p > 1.0: - raise ValueError( - f"`p` must be a floating point number between 0 (excluded) and 1 (included), got {p} instead." - ) - - def logits_processor(logits: torch.Tensor) -> torch.Tensor: - sorted_logits, sorted_idx = torch.sort(logits, descending=False) - cumulative_probabilties = torch.nn.functional.softmax( - sorted_logits, dim=-1 - ).cumsum(dim=-1) - - sorted_masked_idx = cumulative_probabilties <= (1 - p) - mask_idx = torch.scatter(sorted_masked_idx, 1, sorted_idx, sorted_masked_idx) - return logits.masked_fill(mask_idx, -math.inf) - - return logits_processor - - -def rescale_logits(temperature: float) -> Callable[["torch.Tensor"], "torch.Tensor"]: - """Build a function that rescales the token probabilities exponentially. - - Parameters - ---------- - temperature - The value by which we rescale the logits. - - """ - - if not isinstance(temperature, float) or temperature < 0.0: - raise ValueError( - f"`temperature` must be a strictly positive floating point number, got {temperature} instead." - ) - elif temperature == 0.0: - raise ValueError( - "Please use the greedy sampler instead of setting the temperature to 0." - ) - - def logits_processor(logits: "torch.Tensor") -> "torch.Tensor": - return logits / temperature - - return logits_processor - - -class BeamSearchSampler: - """Beam Search sampling algorithm. - - Attributes - ---------- - samples - The number of samples taken for each input sequence. - - """ - - def __init__(self, beams: int = 1): - self.samples = beams - - def __call__( - self, - next_token_logits: "torch.DoubleTensor", - sequence_weights: "torch.DoubleTensor", - _, - ) -> Tuple["torch.DoubleTensor", "torch.DoubleTensor", "torch.DoubleTensor"]: - """Call the beam search sampler. - - Parameters - ---------- - next_token_logits - A tensor of shape ``(n_seqs, vocab_size,)`` that represents the - probability distribution of the next token over the vocabulary. - sequence_weights - A tensor of shape ``(n_seqs,)`` that represents the cumulative - weight of each sequence. - rng - A random number generator. - - Returns - ------- - A tuple with an array that contains the ids of the sampled tokens of - shape ``(n_seqs, 1)``, an array that contains the ancestors of each - sampled id of shape ``(n_seqs,)`` and an array that contains the updated - cumulative weights of each sequence of shape ``(n_seqs,)``. - - """ - import torch - - logprobs = torch.nn.functional.log_softmax(next_token_logits, dim=-1) - weights = logprobs + sequence_weights.unsqueeze(1).expand_as(next_token_logits) - - # Flatten scores to (n_batch, n_samples * vocab_size) - # and find the top-k weights for each batch. - batch_size = next_token_logits.shape[0] // self.samples - vocab_size = next_token_logits.shape[-1] - weights = weights.view(batch_size, self.samples * vocab_size) - - # If the weights are all equal to 0 we are at the beginning of the search - # and thus only need to sample from one set of token logits for each - # batch. - if torch.all(sequence_weights == 0): - weights = weights[:, :vocab_size] - - weights, indices = torch.topk( - weights, self.samples, dim=1, largest=True, sorted=True - ) - - ancestors = torch.div(indices, vocab_size, rounding_mode="floor") - next_token_ids = indices % vocab_size - - # Re-shape the weights, next_token_ids and ancestors to (n_batch * n_samples, 1) - first_batch_idx = torch.arange( - 0, batch_size * self.samples, self.samples, device=next_token_logits.device - ).unsqueeze(1) - ancestors = ancestors + first_batch_idx - - ancestors = ancestors.view(self.samples * batch_size) - weights = weights.view(self.samples * batch_size) - next_token_ids = next_token_ids.view(self.samples * batch_size, 1) - - return next_token_ids, ancestors, weights - - -beam_search = BeamSearchSampler diff --git a/tests/generate/__init__.py b/tests/generate/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/generate/conftest.py b/tests/generate/conftest.py deleted file mode 100644 index ed883011..00000000 --- a/tests/generate/conftest.py +++ /dev/null @@ -1,64 +0,0 @@ -from importlib import reload - -import pytest -import torch - - -def is_metal_available(): - try: - import mlx.core as mx - import mlx_lm # noqa: F401 - - assert mx.metal.is_available() - except (ImportError, AssertionError): - return False - return True - - -def pytest_collection_modifyitems(config, items): - """ - If mlxlm and Metal aren't available, skip mlxlm tests - If CUDA isn't available, skip vllm and transformers_vision - """ - if not torch.cuda.is_available(): - skip_marker = pytest.mark.skip( - reason="Skipping test because CUDA is not available" - ) - for item in items: - if "model_fixture" in item.fixturenames: - model_param = item.callspec.params.get("model_fixture", None) - if model_param.startswith( - "model_transformers_vision" - ) or model_param.startswith("model_vllm"): - item.add_marker(skip_marker) - - if not is_metal_available(): - skip_marker = pytest.mark.skip( - reason="Skipping test because mlx-lm or Metal are not available" - ) - for item in items: - if "model_fixture" in item.fixturenames: - model_param = item.callspec.params.get("model_fixture", None) - if model_param.startswith("model_mlxlm"): - item.add_marker(skip_marker) - - -@pytest.fixture -def temp_cache_dir(): - import os - import tempfile - - import outlines.caching - import outlines.fsm.guide - - with tempfile.TemporaryDirectory() as tempdir: - os.environ["OUTLINES_CACHE_DIR"] = tempdir - outlines.caching.get_cache.cache_clear() - reload(outlines) - reload(outlines.fsm.guide) - cache_status = outlines.caching._caching_enabled - try: - outlines.caching._caching_enabled = True - yield - finally: - outlines.caching._caching_enabled = cache_status diff --git a/tests/generate/test_api.py b/tests/generate/test_api.py deleted file mode 100644 index 7188022f..00000000 --- a/tests/generate/test_api.py +++ /dev/null @@ -1,33 +0,0 @@ -from io import BytesIO -from urllib.request import urlopen - -import pytest -from PIL import Image # type: ignore - -from outlines.generate.api import VisionSequenceGeneratorAdapter - -IMG_URI = "https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg" -PIL_IMG = Image.open(BytesIO(urlopen(IMG_URI).read())).convert("RGB") - - -@pytest.mark.parametrize( - "prompts,media,type_error", - [ - ("single prompt", [PIL_IMG], False), - (["prompt0", "prompt1"], [[PIL_IMG], [PIL_IMG]], False), - ("single prompt", [PIL_IMG, PIL_IMG], False), - (["prompt0", "prompt1"], [[PIL_IMG, PIL_IMG], [PIL_IMG]], False), - ("single prompt", "this isn't an image, it's a string", True), - ("single prompt", PIL_IMG, True), - (["prompt0", "prompt1"], [PIL_IMG], True), - (["prompt0", "prompt1"], [[PIL_IMG]], True), - (["prompt0", "prompt1"], [[[PIL_IMG]], [[PIL_IMG]]], True), - ], -) -def test_vision_sequence_generator_validate_types(prompts, media, type_error): - """Ensure inputs are validated correctly""" - if type_error: - with pytest.raises(TypeError): - VisionSequenceGeneratorAdapter._validate_prompt_media_types(prompts, media) - else: - VisionSequenceGeneratorAdapter._validate_prompt_media_types(prompts, media) diff --git a/tests/generate/test_generate.py b/tests/generate/test_generate.py deleted file mode 100644 index 9e16b2dd..00000000 --- a/tests/generate/test_generate.py +++ /dev/null @@ -1,303 +0,0 @@ -import contextlib -import re - -import pytest - -import outlines.generate as generate -import outlines.models as models -import outlines.samplers as samplers - -########################################## -# Model Fixtures -########################################## - - -@pytest.fixture(scope="session") -def model_transformers_random(tmp_path_factory): - return models.transformers("hf-internal-testing/tiny-random-gpt2", device="cpu") - - -@pytest.fixture(scope="session") -def model_transformers_opt125m(tmp_path_factory): - return models.transformers("facebook/opt-125m", device="cpu") - - -@pytest.fixture(scope="session") -def model_bart(tmp_path_factory): - from transformers import AutoModelForSeq2SeqLM - - return models.transformers( - "facebook/bart-base", device="cpu", model_class=AutoModelForSeq2SeqLM - ) - - -@pytest.fixture(scope="session") -def model_transformers_vision(tmp_path_factory): - import torch - from transformers import LlavaNextForConditionalGeneration - - return models.transformers_vision( - "llava-hf/llava-v1.6-mistral-7b-hf", - model_class=LlavaNextForConditionalGeneration, - device="cuda", - model_kwargs=dict( - torch_dtype=torch.bfloat16, - load_in_4bit=True, - low_cpu_mem_usage=True, - ), - ) - - - -# TODO: exllamav2 failing in main, address in https://github.com/outlines-dev/outlines/issues/808 -# TODO: t5 tokenizer doesn't work with streaming -""" -@pytest.fixture(scope="session") -def model_exllamav2(tmp_path_factory): - return models.exllamav2( - model_path="blockblockblock/TinyLlama-1.1B-Chat-v1.0-bpw4-exl2", - device="cpu" - ) - -@pytest.fixture(scope="session") -def model_t5(tmp_path_factory): - from transformers import AutoModelForSeq2SeqLM - - return models.transformers( - "EleutherAI/pile-t5-base", device="cpu", model_class=AutoModelForSeq2SeqLM - ) -""" - - -ALL_MODEL_FIXTURES = ( - "model_transformers_random", - "model_transformers_opt125m", - "model_bart", -) - - -########################################## -# Stuctured Generation Inputs -########################################## - - -@pytest.fixture() -def sample_schema(): - from pydantic import BaseModel, conint, conlist, constr - - class SampleSchema(BaseModel): - title: constr(max_length=10) - numbers: conlist(conint(strict=True), min_length=3, max_length=3) - labels: conlist(constr(min_length=1, max_length=5), min_length=3, max_length=3) - - return SampleSchema - - -@pytest.fixture() -def sample_choices(): - return ["foo", "bar", "baz"] - - -REGEX_PATTERNS = [ - "a b c d e", # ensure proper tokenizer whitespace prefix handling - "(123456789)|(abcdefghijklmnop)", # ensure consistent correct sequence handling during batch - r"([a-z]{10})@([a-z]{5})\.([a-z]{3})", # email example -] - - -########################################### -# Model/Generator Pair Behavior Definitions -########################################### - - -def enforce_not_implemented(model_fixture, *task_names): - """ - Per `NOT_IMPLEMENTED`, mapping, if a model hasn't implemented a task, - assert an NotImplementedError is raised. Otherwise, run normally - """ - NOT_IMPLEMENTED = { - "stream": ["model_transformers_vision"], - "batch": [], - "beam_search": [], - "multiple_samples": [], - } - for task_name in task_names: - if model_fixture in NOT_IMPLEMENTED.get(task_name, []): - return pytest.raises(NotImplementedError) - else: - return contextlib.nullcontext() - - -def get_inputs(fixture_name, batch_size=None): - """Get generator kwargs, just the prompt by default, but include images for transformers_visian""" - from io import BytesIO - from urllib.request import urlopen - - from PIL import Image # type: ignore - - prompts = ["abcd", "efgh", "1234", "5678", "foo", "bar", "baz", "bif"] - prompts = prompts[0] if batch_size is None else prompts[:batch_size] - - if fixture_name.endswith("_vision"): - img_url = "https://python-pillow.org/pillow-perf/static/space_pil_lanczos.png" - img = Image.open(BytesIO(urlopen(img_url).read())).convert("RGB") - - if batch_size is None: - return {"prompts": f" {prompts}", "media": [img]} - else: - return { - "prompts": [f" {p}" for p in prompts], - "media": [[img] for _ in range(batch_size)], - } - - else: - return {"prompts": prompts} - - -########################################### -# Tests -########################################### - - -@pytest.mark.parametrize("sampler_name", ("greedy", "multinomial", "beam_search")) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_text(request, model_fixture, sampler_name): - model = request.getfixturevalue(model_fixture) - generator = generate.text(model, getattr(samplers, sampler_name)()) - with enforce_not_implemented(model_fixture, sampler_name): - res = generator(**get_inputs(model_fixture), max_tokens=10) - assert isinstance(res, str) - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_regex(request, model_fixture, pattern): - model = request.getfixturevalue(model_fixture) - generator = generate.regex(model, pattern) - res = generator(**get_inputs(model_fixture), max_tokens=20) - assert re.fullmatch(pattern, res) is not None, res - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_fsm(request, model_fixture, pattern): - import interegular - - model = request.getfixturevalue(model_fixture) - generator = generate.fsm(model, interegular.parse_pattern(pattern).to_fsm()) - res = generator(**get_inputs(model_fixture)) - assert re.fullmatch(pattern, res) is not None, res - - -@pytest.mark.skip( - "Fix issues with JSON, some models fail this test https://github.com/outlines-dev/outlines/issues/985" -) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_json(request, model_fixture, sample_schema): - model = request.getfixturevalue(model_fixture) - generator = generate.json(model, sample_schema) - # asserts valid within call - generator(**get_inputs(model_fixture), max_tokens=100) - - -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_choice(request, model_fixture, sample_choices): - model = request.getfixturevalue(model_fixture) - generator = generate.choice(model, sample_choices) - res = generator(**get_inputs(model_fixture)) - assert res in sample_choices - - -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_format_bool(request, model_fixture): - model = request.getfixturevalue(model_fixture) - generator = generate.format(model, bool) - res = generator(**get_inputs(model_fixture)) - assert isinstance(res, bool) - - -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_text_stream(request, model_fixture): - model = request.getfixturevalue(model_fixture) - generator = generate.text(model) - with enforce_not_implemented(model_fixture, "stream"): - for token in generator.stream(**get_inputs(model_fixture), max_tokens=10): - assert isinstance(token, str) - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_regex_stream(request, model_fixture, pattern): - model = request.getfixturevalue(model_fixture) - generator = generate.regex(model, pattern) - with enforce_not_implemented(model_fixture, "stream"): - output = "" - for token in generator.stream(**get_inputs(model_fixture), max_tokens=20): - output += token - assert re.fullmatch(pattern, output) is not None, output - - -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_batch_text(request, model_fixture): - model = request.getfixturevalue(model_fixture) - generator = generate.text(model) - with enforce_not_implemented(model_fixture, "batch"): - res = generator(**get_inputs(model_fixture, 2), max_tokens=10) - assert isinstance(res, list) - assert isinstance(res[0], str) - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_regex_batch(request, model_fixture, pattern): - """Ensure batch requests work and fsm order is maintained""" - model = request.getfixturevalue(model_fixture) - generator = generate.regex(model, pattern) - with enforce_not_implemented(model_fixture, "batch"): - outputs = generator(**get_inputs(model_fixture, 4), max_tokens=20) - for output in outputs: - assert re.fullmatch(pattern, output) is not None, output - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_regex_batch_stream(request, model_fixture, pattern): - model = request.getfixturevalue(model_fixture) - generator = generate.regex(model, pattern) - with enforce_not_implemented(model_fixture, "batch", "stream"): - outputs = ["", ""] - for tokens in generator.stream(**get_inputs(model_fixture, 2), max_tokens=20): - outputs[0] += tokens[0] - outputs[1] += tokens[1] - for output in outputs: - assert re.fullmatch(pattern, output) is not None, output - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -def test_generate_regex_single_multinomial(request, model_fixture, pattern): - """Ensure batch requests work and fsm order is maintained""" - model = request.getfixturevalue(model_fixture) - generator = generate.regex(model, pattern, sampler=samplers.multinomial(4)) - with enforce_not_implemented(model_fixture, "multiple_samples"): - output_sample_groups = generator(**get_inputs(model_fixture), max_tokens=40) - for output in output_sample_groups: - assert re.fullmatch(pattern, output) is not None, output - - -@pytest.mark.parametrize("pattern", REGEX_PATTERNS) -@pytest.mark.parametrize("model_fixture", ALL_MODEL_FIXTURES) -@pytest.mark.parametrize("sampler_name", ("multinomial", "beam_search")) -def test_generate_regex_batch_multi_sample( - request, model_fixture, pattern, sampler_name -): - """Ensure batch requests work and fsm order is maintained""" - model = request.getfixturevalue(model_fixture) - generator = generate.regex( - model, pattern, sampler=getattr(samplers, sampler_name)(4) - ) - with enforce_not_implemented(model_fixture, "batch", "multiple_samples"): - output_batch_groups = generator(**get_inputs(model_fixture, 4), max_tokens=40) - for output_sample_groups in output_batch_groups: - for output in output_sample_groups: - assert re.fullmatch(pattern, output) is not None, output diff --git a/tests/generate/test_generator.py b/tests/generate/test_generator.py deleted file mode 100644 index 5a2edf8d..00000000 --- a/tests/generate/test_generator.py +++ /dev/null @@ -1,497 +0,0 @@ -import math -from typing import Generator - -import pytest -import torch - -from outlines.fsm.guide import Generate -from outlines.generate.api import SequenceGenerator -from outlines.generate.generator import ( - bias_logits, - get_allowed_tokens, - get_next_fsm_states, - is_generation_finished, - sequence_generator, - update_attention_masks, - update_token_ids, -) - - -def test_sequence_generator_class(): - class MockFSM: - first_state = 0 - - def get_next_state(self, state, next_token_ids): - return 4 - - def get_next_instruction(self, *_): - return Generate([4]) - - def is_final_state(self, _): - return True - - def copy(self): - return self - - class MockTokenizer: - def encode(self, _): - # Input: "test" - return torch.tensor([[0, 1, 2, 3]]), torch.tensor([[1, 1, 1, 1]]) - - def decode(self, tokens): - return ["testx"[i] for i in tokens] - - class MockModel: - def __init__(self): - self.tokenizer = MockTokenizer() - - def __call__(*_): - return torch.tensor([[0, 1, 2, 3, 4]], dtype=torch.float), None - - class sampler: - def __init__(self): - self.samples = 1 - - def __call__(self, biased_logits, *_): - return torch.argmax(biased_logits, keepdims=True), torch.tensor([0]), None - - # Stream - generator = SequenceGenerator(MockFSM(), MockModel(), sampler(), "cpu") - assert generator.device == "cpu" - assert isinstance(generator.tokenizer, MockTokenizer) - assert isinstance(generator.fsm, MockFSM) - - sequence = generator.stream("test") - assert isinstance(sequence, Generator) - - next(sequence) - - with pytest.raises(StopIteration): - next(sequence) - - # Call - generator = SequenceGenerator(MockFSM(), MockModel(), sampler(), "cpu") - result = generator("test") - assert result == "x" - - -def test_sequence_generator_1d_single_iteration(): - class MockFSM: - def get_next_state(self, state, next_token_ids): - return 0 - - def get_next_instruction(self, _): - return Generate([0, 1, 2, 3]) - - def is_final_state(self, _): - return True - - def copy(self): - return self - - class MockTokenizer: - def encode(self, _): - return torch.tensor([[0, 1, 2, 3]]), torch.tensor([[1, 1, 1, 1]]) - - def decode(self, x): - return x - - class MockModel: - def __init__(self): - self.tokenizer = MockTokenizer() - - def __call__(*_): - return torch.tensor([[0, 1, 2, 3]], dtype=torch.float), None - - def sampler(biased_logits, *_): - return torch.argmax(biased_logits, keepdims=True), torch.tensor([0]), None - - token_ids, attention_mask = ( - torch.tensor([[0, 1, 2, 3]]), - torch.tensor([[1, 1, 1, 1]]), - ) - init_fsm_states = [0] - sequence = sequence_generator( - MockModel(), - sampler, - [MockFSM()], - token_ids, - torch.tensor([0]), - attention_mask, - init_fsm_states, - rng=torch.Generator(), - ) - result = next(sequence) - - assert torch.equal(result.token_ids, torch.tensor([[0, 1, 2, 3, 3]])) - assert torch.equal(result.logits, torch.tensor([[0, 1, 2, 3]])) - - with pytest.raises(StopIteration): - next(sequence) - - -def test_sequence_generator_1d_several_iterations(): - class MockFSM: - def get_next_state(self, state, next_token_ids): - return state + 1 - - def get_next_instruction(self, _): - return Generate([0, 1, 2, 3]) - - def is_final_state(self, state): - if state < 2: - return False - else: - return True - - def copy(self): - return self - - class MockTokenizer: - def encode(self, _): - return torch.tensor([[0, 1, 2, 3]]), torch.tensor([[1, 1, 1, 1]]) - - def decode(self, x): - return x - - class MockModel: - def __init__(self): - self.tokenizer = MockTokenizer() - - def __call__(*_): - return torch.tensor([[0, 1, 2, 3]], dtype=torch.float), None - - def sampler(biased_logits, *_): - return torch.argmax(biased_logits, keepdims=True), torch.tensor([0]), None - - token_ids, attention_mask = ( - torch.tensor([[0, 1, 2, 3]]), - torch.tensor([[1, 1, 1, 1]]), - ) - init_fsm_states = [0] - sequence = sequence_generator( - MockModel(), - sampler, - [MockFSM()], - token_ids, - torch.tensor([0]), - attention_mask, - init_fsm_states, - rng=torch.Generator(), - ) - - result = next(sequence) - assert torch.equal(result.token_ids, torch.tensor([[0, 1, 2, 3, 3]])) - assert torch.equal(result.logits, torch.tensor([[0, 1, 2, 3]])) - - result = next(sequence) - assert torch.equal(result.token_ids, torch.tensor([[0, 1, 2, 3, 3, 3]])) - assert torch.equal(result.logits, torch.tensor([[0, 1, 2, 3]])) - - with pytest.raises(StopIteration): - next(sequence) - - -def test_sequence_generator_2d_single_iteration(): - class MockFSM: - def get_next_state(self, state, next_token_ids): - return 0 - - def get_next_instruction(self, _): - return Generate([0, 1, 2, 3]) - - def is_final_state(self, _): - return True - - def copy(self): - return self - - class MockTokenizer: - def encode(self, _): - return torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]]), torch.tensor( - [[1, 1, 1, 1], [1, 1, 1, 1]] - ) - - def decode(self, x): - return x - - class MockModel: - def __init__(self): - self.tokenizer = MockTokenizer() - - def __call__(*_): - return torch.tensor([[0, 1, 2, 3], [4, 5, 7, 6]], dtype=torch.float), None - - def sampler(biased_logits, *_): - return ( - torch.argmax(biased_logits, keepdims=True, dim=-1), - torch.tensor([0, 1]), - None, - ) - - token_ids, attention_mask = ( - torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]]), - torch.tensor([[1, 1, 1, 1], [1, 1, 1, 1]]), - ) - init_fsm_states = [0, 0] - fsms = [MockFSM(), MockFSM()] - sequence = sequence_generator( - MockModel(), - sampler, - fsms, - token_ids, - torch.tensor([0, 0]), - attention_mask, - init_fsm_states, - rng=torch.Generator(), - ) - - result = next(sequence) - assert torch.equal( - result.token_ids, torch.tensor([[0, 1, 2, 3, 3], [4, 5, 6, 7, 2]]) - ) - assert torch.equal( - result.logits, torch.tensor([[0, 1, 2, 3], [4, 5, 7, 6]], dtype=torch.float) - ) - - with pytest.raises(StopIteration): - next(sequence) - - -def test_sequence_generator_2d_several_iterations(): - class MockFSM: - def get_next_state(self, state, next_token_ids): - return state + 1 - - def get_next_instruction(self, _): - return Generate([0, 1, 2, 3]) - - def is_final_state(self, state): - if state < 2: - return False - else: - return True - - def copy(self): - return self - - class MockTokenizer: - def encode(self, _): - return torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]]), torch.tensor( - [[1, 1, 1, 1], [1, 1, 1, 1]] - ) - - def decode(self, x): - return x - - class MockModel: - def __init__(self): - self.tokenizer = MockTokenizer() - - def __call__(*_): - return torch.tensor([[0, 1, 2, 3], [4, 5, 7, 6]], dtype=torch.float), None - - def sampler(biased_logits, *_): - return ( - torch.argmax(biased_logits, keepdims=True, dim=-1), - torch.tensor([0, 1]), - None, - ) - - token_ids, attention_mask = ( - torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]]), - torch.tensor([[1, 1, 1, 1], [1, 1, 1, 1]]), - ) - init_fsm_states = [0, 0] - fsms = [MockFSM(), MockFSM()] - sequence = sequence_generator( - MockModel(), - sampler, - fsms, - token_ids, - torch.tensor([0, 0]), - attention_mask, - init_fsm_states, - rng=torch.Generator(), - ) - - result = next(sequence) - assert torch.equal( - result.token_ids, torch.tensor([[0, 1, 2, 3, 3], [4, 5, 6, 7, 2]]) - ) - assert torch.equal( - result.logits, torch.tensor([[0, 1, 2, 3], [4, 5, 7, 6]], dtype=torch.float) - ) - - result = next(sequence) - assert torch.equal( - result.token_ids, torch.tensor([[0, 1, 2, 3, 3, 3], [4, 5, 6, 7, 2, 2]]) - ) - assert torch.equal( - result.logits, torch.tensor([[0, 1, 2, 3], [4, 5, 7, 6]], dtype=torch.float) - ) - - with pytest.raises(StopIteration): - next(sequence) - - -def test_get_next_fsm_states(): - class MockFSM: - def get_next_state(self, state, next_token_ids): - return 0 - - def copy(self): - return self - - result = get_next_fsm_states([MockFSM()], [0], torch.tensor([[0]])) - assert result == [0] - - result = get_next_fsm_states( - [MockFSM(), MockFSM()], [0, 0], torch.tensor([[0], [0]]) - ) - assert result == [0, 0] - - -def test_get_get_next_instructions(): - class MockFSM: - def get_next_instruction(self, _): - return Generate([1, 2, 3, 4]) - - result = get_allowed_tokens([MockFSM()], [0]) - assert result == [[1, 2, 3, 4]] - - result = get_allowed_tokens([MockFSM(), MockFSM()], [0, 1]) - assert result == [[1, 2, 3, 4], [1, 2, 3, 4]] - - -def test_is_generation_finished(): - class MockFSMFinished: - def is_final_state(self, _): - return True - - result = is_generation_finished([MockFSMFinished(), MockFSMFinished()], [1, 1]) - assert result is True - - class MockFSMNotFinished: - def is_final_state(self, state): - if state == 0: - return False - else: - return True - - result = is_generation_finished( - [MockFSMNotFinished(), MockFSMNotFinished()], [0, 1] - ) - assert result is False - - -@pytest.mark.parametrize( - "token_ids,next_token_ids,ancestors,expected_result", - [ - ( - torch.tensor([[1]]), - torch.tensor([[2]]), - torch.tensor([0]), - torch.tensor([[1, 2]]), - ), - ( - torch.tensor([[1], [2]]), - torch.tensor([[3], [4]]), - torch.tensor([0, 1]), - torch.tensor([[1, 3], [2, 4]]), - ), - ( - torch.tensor([[1], [2]]), - torch.tensor([[3], [4]]), - torch.tensor([0, 0]), - torch.tensor([[1, 3], [1, 4]]), - ), - ( - torch.tensor([[1], [2]]), - torch.tensor([[3], [4]]), - torch.tensor([1, 0]), - torch.tensor([[2, 3], [1, 4]]), - ), - ( - torch.tensor([[1, 2], [3, 5]]), - torch.tensor([[3], [4]]), - torch.tensor([1, 0]), - torch.tensor([[3, 5, 3], [1, 2, 4]]), - ), - ], -) -def test_update_token_ids(token_ids, next_token_ids, ancestors, expected_result): - result = update_token_ids(token_ids, next_token_ids, ancestors) - assert torch.equal(result, expected_result) - - -@pytest.mark.parametrize( - "attention_masks,ancestors,expected_result", - [ - ( - torch.tensor([[1, 1]], dtype=torch.float), - torch.tensor([0]), - torch.tensor([[1, 1, 1]], dtype=torch.float), - ), - ( - torch.tensor([[1, 1], [1, 1]], dtype=torch.float), - torch.tensor([0, 0]), - torch.tensor([[1, 1, 1], [1, 1, 1]], dtype=torch.float), - ), - ( - torch.tensor([[0, 1], [1, 1]], dtype=torch.float), - torch.tensor([0, 1]), - torch.tensor([[0, 1, 1], [1, 1, 1]], dtype=torch.float), - ), - ( - torch.tensor([[0, 1], [1, 1]], dtype=torch.float), - torch.tensor([1, 0]), - torch.tensor([[1, 1, 1], [0, 1, 1]], dtype=torch.float), - ), - ( - torch.tensor([[0, 1], [1, 1]], dtype=torch.float), - torch.tensor([1, 1]), - torch.tensor([[1, 1, 1], [1, 1, 1]], dtype=torch.float), - ), - ], -) -def test_expand_attention_masks(attention_masks, ancestors, expected_result): - result = update_attention_masks(attention_masks, ancestors) - assert torch.equal(result, expected_result) - - -@pytest.mark.parametrize( - "logits,indices_to_mask,expected", - [ - ( - torch.tensor([[1, 2, 3, 4]], dtype=torch.float), - [[0, 1, 2, 3]], - torch.tensor([[1, 2, 3, 4]], dtype=torch.float), - ), - ( - torch.tensor([[1, 2, 3, 4]], dtype=torch.float), - [[0, 2, 3]], - torch.tensor([[1, -math.inf, 3, 4]], dtype=torch.float), - ), - ( - torch.tensor([[1, 2, 3, 4]], dtype=torch.float), - [[0, 2]], - torch.tensor([[1, -math.inf, 3, -math.inf]], dtype=torch.float), - ), - ( - torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float), - [[1, 2], [0, 1]], - torch.tensor([[-math.inf, 2, 3], [4, 5, -math.inf]], dtype=torch.float), - ), - ( - torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float), - [[0, 2], [1]], - torch.tensor( - [[1, -math.inf, 3], [-math.inf, 5, -math.inf]], dtype=torch.float - ), - ), - ], -) -def test_bias_logits(logits, indices_to_mask, expected): - masked_logits = bias_logits(logits, indices_to_mask) - assert torch.equal(masked_logits, expected) diff --git a/tests/generate/test_integration_transformers.py b/tests/generate/test_integration_transformers.py deleted file mode 100644 index f3fb9682..00000000 --- a/tests/generate/test_integration_transformers.py +++ /dev/null @@ -1,544 +0,0 @@ -import datetime -import re -from enum import Enum -from typing import List, Union - -import pytest -import torch -from pydantic import BaseModel, constr - -import outlines.generate as generate -import outlines.models as models -from outlines.fsm.regex import reduced_vocabulary -from outlines.models.transformers import Transformers, TransformerTokenizer -from outlines.samplers import beam_search, greedy, multinomial - - -@pytest.fixture(scope="session") -def model(tmp_path_factory): - return models.transformers( - "hf-internal-testing/tiny-random-GPTJForCausalLM", device="cpu" - ) - - -def test_transformers_integration_text(model): - sequence = generate.text(model)( - "Write a short sentence ", seed=10000, max_tokens=10 - ) - assert isinstance(sequence, str) - assert model.tokenizer.eos_token not in sequence - - sequence = generate.text(model)( - "Write a short sentence ", - max_tokens=20, - stop_at="a", - seed=10000, - ) - assert isinstance(sequence, str) - - prompts = ["Write a short sentence ", "And another one "] - sequence = generate.text(model)( - prompts, max_tokens=10, stop_at=[".", ","], seed=10000 - ) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert isinstance(sequence[0], str) - - -def test_transformers_integration_text_multiple_samples(model): - sampler = multinomial(2) - - sequence = generate.text(model, sampler=sampler)( - "Write a short sentence ", seed=10000 - ) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert model.tokenizer.eos_token not in sequence - - prompts = ["Write a short sentence ", "And another one "] - sequence = generate.text(model, sampler=sampler)( - prompts, max_tokens=10, stop_at=[".", ","], seed=10000 - ) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert isinstance(sequence[0], list) - assert len(sequence) == 2 - assert isinstance(sequence[0][0], str) - - -def test_transformers_integration_streaming(model): - sequence = generate.text(model).stream( - "Write a short sentence ", max_tokens=10, stop_at=[".", ","], seed=10000 - ) - - token = next(sequence) - assert isinstance(token, str) - - remaining = "".join([token for token in sequence]) - assert isinstance(remaining, str) - - sequence = generate.text(model).stream( - ["Prompt1", "Prompt2"], max_tokens=10, stop_at=[".", ","], seed=10000 - ) - tokens = next(sequence) - assert isinstance(tokens, list) - assert isinstance(tokens[0], str) - assert isinstance(tokens[1], str) - - -def test_transformers_integration_streaming_batch_samples(model): - sampler = multinomial(samples=2) - - sequence = generate.text(model, sampler=sampler).stream( - ["Prompt1", "Prompt2"], max_tokens=10, stop_at=[".", ","], seed=10000 - ) - tokens = next(sequence) - assert isinstance(tokens, list) - assert len(tokens) == 2 - assert isinstance(tokens[0], list) - assert len(tokens[0]) == 2 - assert isinstance(tokens[0], list) - assert len(tokens[1]) == 2 - - -def test_transformers_integration_streaming_batch_beam_search(model): - sampler = beam_search(beams=2) - - sequence = generate.regex(model, r"ab[cd]e", sampler=sampler).stream( - ["Prompt1", "Prompt2"], max_tokens=10, stop_at=["c", "d"], seed=10000 - ) - tokens = next(sequence) - assert isinstance(tokens, list) - assert len(tokens) == 2 - assert isinstance(tokens[0], list) - assert len(tokens[0]) == 2 - assert isinstance(tokens[0], list) - assert len(tokens[1]) == 2 - - -def test_transformers_integration_text_stop(model): - prompt = "Write a short sentence " - sequence = generate.text(model)(prompt, stop_at="a", seed=10000) - assert sequence[len(prompt) :].find("a") == -1 - - -def test_transformers_various_regexes(model): - prompt = "Write an email address" - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str) - - # One prompt - sequence = generator(prompt, seed=0) - assert re.fullmatch(regex_str, sequence) is not None - - -def test_transformers_various_regexes_prompt_list(model): - prompt = "Write an email address" - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str) - - # Two prompts - sequence = generator([prompt, prompt], seed=0) - assert re.fullmatch(regex_str, sequence[0]) is not None - assert re.fullmatch(regex_str, sequence[1]) is not None - - -def test_transformers_various_regexes_prompt_list_multiple_samples(model): - sampler = multinomial(samples=2) - prompt = "Write an email address" - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str, sampler=sampler) - - # Two prompts - sequence = generator([prompt, prompt], seed=0, max_tokens=500) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert re.fullmatch(regex_str, sequence[0][0]) is not None - assert re.fullmatch(regex_str, sequence[0][1]) is not None - assert re.fullmatch(regex_str, sequence[1][0]) is not None - assert re.fullmatch(regex_str, sequence[1][1]) is not None - - -def test_transformers_various_regexes_prompt_list_beam_search(model): - sampler = beam_search(5) - prompt_1 = "Write an email address" - prompt_2 = "Random" - regex_str = r"([a-z]{10})@([a-z]{5})\.([a-z]{3})" - generator = generate.regex(model, regex_str, sampler=sampler) - - # Two prompts - sequence = generator([prompt_1, prompt_2], seed=0) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert len(sequence[0]) == 5 - assert re.fullmatch(regex_str, sequence[0][0]) is not None - assert re.fullmatch(regex_str, sequence[0][1]) is not None - assert re.fullmatch(regex_str, sequence[1][0]) is not None - assert re.fullmatch(regex_str, sequence[1][1]) is not None - - -def test_transformers_integration_integer(model): - prompt = "Write a short sentence" - sequence = generate.format(model, int)(prompt, max_tokens=10, seed=0) - - assert isinstance(sequence, int) - - -def test_transformers_integration_integer_array(model): - prompts = ["Give me a number", "And another one"] - sequence = generate.format(model, int)(prompts, max_tokens=10, seed=0) - assert isinstance(sequence, list) - assert len(sequence) == 2 - assert isinstance(sequence[0], int) - assert isinstance(sequence[1], int) - - -def test_transformers_integration_float(model): - prompt = "Write a short sentence" - sequence = generate.format(model, float)(prompt, max_tokens=10, seed=0) - - assert sequence != "" - assert isinstance(sequence, float) - - -def test_transformers_integration_bool(model): - prompt = "Is this True or False?" - sequence = generate.format(model, bool)(prompt, max_tokens=10, seed=0) - - assert sequence != "" - assert isinstance(sequence, bool) - - -def test_transformers_integration_date(model): - prompt = "What day is it today?" - sequence = generate.format(model, datetime.date)(prompt, max_tokens=10, seed=0) - - assert sequence != "" - assert isinstance(sequence, datetime.date) - - -def test_transformers_integration_time(model): - prompt = "What time is it?" - sequence = generate.format(model, datetime.time)(prompt, max_tokens=10, seed=0) - - assert sequence != "" - assert isinstance(sequence, datetime.time) - - -def test_transformers_integration_datetime(model): - prompt = "What time is it?" - sequence = generate.format(model, datetime.datetime)(prompt, max_tokens=20, seed=0) - - assert sequence != 0 - assert isinstance(sequence, datetime.datetime) - - -def test_transformers_integration_choice(model): - prompt = "Write a short sentence " - sequence = generate.choice(model, ["test", "choice"])(prompt, seed=0) - - assert sequence == "test" or sequence == "choice" - - -def test_transformers_integration_with_pad_token(): - model_name = "hf-internal-testing/tiny-random-XLMRobertaXLForCausalLM" - model = models.transformers(model_name, device="meta") - assert model.tokenizer.pad_token_id == 1 - assert model.tokenizer.pad_token == "" - - -def test_transformers_json_basic(model): - prompt = "Output some JSON " - - class Spam(BaseModel): - foo: int - bar: float - spam: constr(max_length=10) - fuzz: bool - - result = generate.json(model, Spam)(prompt, max_tokens=500, seed=0) - assert isinstance(result, BaseModel) - assert isinstance(result.foo, int) - assert isinstance(result.bar, float) - assert isinstance(result.spam, str) - assert isinstance(result.fuzz, bool) - assert len(result.spam) <= 10 - - -def test_transformers_json_schema(model): - prompt = "Output some JSON " - - schema = """{ - "title": "spam", - "type": "object", - "properties": { - "foo" : {"type": "integer"}, - "bar": {"type": "string", "maxLength": 4} - }, - "required": ["foo", "bar"] - } - """ - - result = generate.json(model, schema)(prompt, max_tokens=500, seed=0) - assert isinstance(result, dict) - assert isinstance(result["foo"], int) - assert isinstance(result["bar"], str) - - -def test_transformers_json_batch(model): - prompts = ["Output some JSON ", "Output more JSON"] - - class Spam(BaseModel): - foo: int - bar: float - spam: constr(max_length=10) - fuzz: bool - - result = generate.json(model, Spam)(prompts, max_tokens=500, seed=0) - assert isinstance(result[0], BaseModel) - assert isinstance(result[1], BaseModel) - - -def test_transformers_json_batch_multiple_samples(model): - sampler = multinomial(samples=2) - prompts = ["Output some JSON ", "Output more JSON"] - - class Spam(BaseModel): - foo: int - bar: float - spam: constr(max_length=10) - fuzz: bool - - result = generate.json(model, Spam, sampler=sampler)( - prompts, max_tokens=500, seed=0 - ) - assert isinstance(result, list) - assert len(result) == 2 - assert isinstance(result[0][0], BaseModel) - assert isinstance(result[0][1], BaseModel) - assert isinstance(result[1][0], BaseModel) - assert isinstance(result[1][1], BaseModel) - - -def test_transformers_json_str_enum(model): - prompt = "Output some JSON " - - class Name(str, Enum): - john = "John" - marc = "Marc" - michel = "Michel" - - class User(BaseModel): - user_id: int - name: Name - - result = generate.json(model, User)(prompt, seed=0) - assert isinstance(result, BaseModel) - assert isinstance(result.user_id, int) - assert result.name in ["John", "Marc", "Michel"] - - -def test_transformers_json_int_enum(model): - prompt = "Output some JSON " - - class Id(int, Enum): - one = 1 - two = 2 - - class User(BaseModel): - user_id: Id - - result = generate.json(model, User)(prompt, seed=0) - assert isinstance(result, BaseModel) - assert isinstance(result.user_id, int) - assert result.user_id in [1, 2] - - -def test_transformers_json_array(model): - prompt = "Output some JSON " - - class User(BaseModel): - user_id: int - value: List[float] - - result = generate.json(model, User)(prompt, seed=0) - assert isinstance(result, BaseModel) - assert isinstance(result.user_id, int) - assert isinstance(result.value, list) - for value in result.value: - assert isinstance(value, float) or isinstance(value, int) - - -@pytest.mark.xfail(reason="The implementation of `anyOf` is incorrect") -def test_transformers_json_union(model): - prompt = "Output some JSON " - - class Spam(BaseModel): - foo: int - bar: Union[constr(max_length=10), float] - - result = generate.json(model, Spam)(prompt, max_tokens=100, seed=4) - assert isinstance(result, BaseModel) - assert ( - isinstance(result.bar, int) - or isinstance(result.bar, float) - or isinstance(result.bar, str) - ) - - -def test_transformers_json_function(model): - prompt = "Output arguments for the function" - - def function(foo: int, bar: List[int]): - return foo + sum(bar) - - sequence = generate.json(model, function)(prompt, max_tokens=100, seed=4) - assert isinstance(sequence, dict) - assert isinstance(function(**sequence), int) - - -def test_transformers_logits_vocab_size(model): - # Artificially increase the weights/logits size relative - # to the vocabulary - model.model.resize_token_embeddings(pad_to_multiple_of=3) - - assert len(model.tokenizer.vocabulary) == 1024 - assert model.model.base_model.wte.weight.shape[0] == 1026 - - generator = generate.choice(model, ["True", "False"]) - - sequence = generator("blah", seed=101) - assert sequence == "False" - - -def test_transformers_json_custom_ws(model): - prompt = "Output some JSON with newlines" # try to force model to use newlines - - schema = """{ - "title": "spam", - "type": "object", - "properties": { - "foo" : {"type": "integer"}, - "bar": {"type": "integer"} - }, - "required": ["foo", "bar"] - } - """ - - generator = generate.json(model, schema, whitespace_pattern=r"[ ]?") - generator.format_sequence = lambda x: x # patch to return raw text - assert "\n" not in generator(prompt, max_tokens=500, seed=0) - - -def test_transformers_reduced_vocabulary_caching(): - from transformers import AutoTokenizer - - hf_tokenizer = AutoTokenizer.from_pretrained("gpt2") - tokenizer = TransformerTokenizer(hf_tokenizer) - tokenizer2 = TransformerTokenizer(hf_tokenizer) - - # TODO: We might actually want only one copy of a given tokenizer. - assert tokenizer is not tokenizer2 - - vocab = reduced_vocabulary(tokenizer) - vocab2 = reduced_vocabulary(tokenizer2) - - assert vocab2 is vocab - - -@pytest.mark.skip(reason="Custom Sampler Disabled in Transformers Integration") -def test_custom_sampler(model): - seen = False - target_token_ids = model.tokenizer.encode(["c"])[0] - - class biased_sampler: - def __init__(self, samples: int = 1): - self.samples = samples - - def __call__( - logits: torch.DoubleTensor, samples: int, *_ - ) -> torch.DoubleTensor: - nonlocal seen - - if not seen: - seen = True - return target_token_ids, torch.tensor([0]), None - else: - return ( - torch.tensor([[model.tokenizer.eos_token_id]]), - torch.tensor([0]), - None, - ) - - generator = generate.choice(model, ["a", "b", "c"], sampler=biased_sampler(1)) - sequence = generator( - """What is 1+1? - a. 3 - b. 4 - c. 2""" - ) - - assert sequence == "c" - - -def test_transformers_use_existing_model_and_tokenizer(): - from transformers import AutoModelForCausalLM, AutoTokenizer - - model_name = "hf-internal-testing/tiny-random-GPTJForCausalLM" - hf_tokenizer = AutoTokenizer.from_pretrained(model_name) - hf_model = AutoModelForCausalLM.from_pretrained(model_name) - model = Transformers(hf_model, hf_tokenizer) - sequence = generate.text(model)("Write a short sentence ", seed=10000) - assert isinstance(sequence, str) - - -def test_RegexGuide_caching(temp_cache_dir): - import outlines.caching - from outlines.fsm.guide import create_states_mapping - - assert outlines.caching._caching_enabled - - regex = r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)" - prompt = "What is the IP address of the Google DNS servers? " - - cache = outlines.caching.get_cache() - - # Returns (hits, misses) - _ = cache.stats(enable=True) - assert cache.statistics - - assert create_states_mapping.__memory__ is cache - - model = models.transformers( - "hf-internal-testing/tiny-random-XLMRobertaXLForCausalLM", device="cpu" - ) - generator = generate.regex(model, regex, sampler=greedy()) - assert cache.stats() == (0, 1) - - model_2 = models.transformers( - "hf-internal-testing/tiny-random-GPTJForCausalLM", device="cpu" - ) - generator_2 = generate.regex(model_2, regex, sampler=greedy()) - assert cache.stats() == (0, 2) - - # These two different models and tokenizers should not have the same state - # mapping results - assert ( - generator.logits_processor.fsm.states_to_token_maps - != generator_2.logits_processor.fsm.states_to_token_maps - ) - - generator_3 = generate.regex(model_2, regex, sampler=greedy()) - assert cache.stats() == (1, 2) - assert ( - generator_2.logits_processor.fsm.states_to_token_maps - == generator_3.logits_processor.fsm.states_to_token_maps - ) - - # Just for fun... - structured = generator(prompt, max_tokens=30) - structured_2 = generator_2(prompt, max_tokens=30) - - assert re.fullmatch(regex, structured) - assert re.fullmatch(regex, structured_2) - assert structured != structured_2 diff --git a/tests/test_samplers.py b/tests/test_samplers.py deleted file mode 100644 index 88cdb0fb..00000000 --- a/tests/test_samplers.py +++ /dev/null @@ -1,254 +0,0 @@ -import math - -import pytest -import torch - -from outlines.samplers import ( - BeamSearchSampler, - GreedySampler, - MultinomialSampler, - beam_search, - greedy, - keep_top_k_logits, - keep_top_p_logits, - multinomial, - rescale_logits, -) - - -def compute_logprobs(logits): - return torch.nn.functional.log_softmax(logits, dim=-1) - - -def test_aliases(): - assert greedy == GreedySampler - assert multinomial == MultinomialSampler - assert beam_search == BeamSearchSampler - - -def test_greedy(): - sampler = GreedySampler() - logits = torch.tensor([[1.0, 2.0, 5.0]]) - weights = torch.tensor([0]) - next_token_ids, ancestors, weights = sampler(logits, weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[2]])) - assert ancestors.equal(torch.tensor([0])) - assert weights.equal(logprobs[..., 2]) - - sampler = GreedySampler() - logits = torch.tensor([[10.0, 0.0, 3.0], [-math.inf, 2.0, 5.0]]) - weights = torch.tensor([0, 0]) - next_token_ids, ancestors, weights = sampler(logits, weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[0], [2]])) - assert ancestors.equal(torch.tensor([0, 1])) - assert weights.equal(torch.tensor([logprobs[0, 0], logprobs[1, 2]])) - - -def test_multinomial(): - rng = torch.Generator() - rng.manual_seed(239) - - sampler = MultinomialSampler() - logits = torch.tensor([[1.0, 4.0, 5.0]]) - weights = torch.tensor([0]) - next_token_ids, ancestors, weights = sampler(logits, weights, rng) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[2]])) - assert ancestors.equal(torch.tensor([0])) - assert weights.equal(torch.tensor([logprobs[:, 2]])) - - sampler = MultinomialSampler() - logits = torch.tensor([[10.0, 0.0, 9.0], [-math.inf, 4.0, 5.0]]) - weights = torch.tensor([0, 0]) - next_token_ids, ancestors, weights = sampler(logits, weights, rng) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[0], [2]])) - assert ancestors.equal(torch.tensor([0, 1])) - assert weights.equal(torch.tensor([logprobs[0, 0], logprobs[1, 2]])) - - -def test_multinomial_init(): - sampler = MultinomialSampler() - assert sampler.logits_processors == [] - - sampler = MultinomialSampler(3) - assert sampler.logits_processors == [] - - sampler = MultinomialSampler(top_k=1) - assert len(sampler.logits_processors) == 1 - - sampler = MultinomialSampler(top_p=0.95) - assert len(sampler.logits_processors) == 1 - - sampler = MultinomialSampler(top_k=1, top_p=0.95) - assert len(sampler.logits_processors) == 1 - - sampler = MultinomialSampler(temperature=1.0) - assert len(sampler.logits_processors) == 1 - - sampler = MultinomialSampler(top_k=1, temperature=1.0) - assert len(sampler.logits_processors) == 2 - - sampler = MultinomialSampler(top_p=0.95, temperature=1.0) - assert len(sampler.logits_processors) == 2 - - -def test_top_k(): - with pytest.raises(ValueError, match="`k` must be a strictly"): - keep_top_k_logits(-1) - - with pytest.raises(ValueError, match="`k` must be a strictly"): - keep_top_k_logits(0.1) - - logits = torch.tensor([[1.0, 2.0, 3.0, 4.0]]) - - logits_processor = keep_top_k_logits(1) - result = logits_processor(logits) - assert result.equal(torch.tensor([[-math.inf, -math.inf, -math.inf, 4.0]])) - - logits_processor = keep_top_k_logits(10) - result = logits_processor(logits) - assert result.equal(torch.tensor([[1.0, 2.0, 3.0, 4.0]])) - - logits = torch.tensor([[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0]]) - logits_processor = keep_top_k_logits(2) - result = logits_processor(logits) - assert result.equal( - torch.tensor( - [[-math.inf, -math.inf, 3.0, 4.0], [-math.inf, -math.inf, 7.0, 8.0]] - ) - ) - - -def test_top_p(): - with pytest.raises(ValueError, match="`p` must be a floating point"): - keep_top_p_logits(-0.1) - - with pytest.raises(ValueError, match="`p` must be a floating point"): - keep_top_p_logits(0.0) - - with pytest.raises(ValueError, match="`p` must be a floating point"): - keep_top_p_logits(1.1) - - logits = torch.tensor([[1.0, 1.01, 1.02, 4.0]]) - - logits_processor = keep_top_p_logits(0.1) - result = logits_processor(logits) - assert result.equal(torch.tensor([[-math.inf, -math.inf, -math.inf, 4.0]])) - - logits_processor = keep_top_p_logits(0.95) - result = logits_processor(logits) - assert result.equal(torch.tensor([[-math.inf, 1.01, 1.02, 4.0]])) - - logits_processor = keep_top_p_logits(1.0) - result = logits_processor(logits) - assert result.equal(torch.tensor([[1.0, 1.01, 1.02, 4.0]])) - - logits = torch.tensor([[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0]]) - - logits_processor = keep_top_p_logits(0.1) - result = logits_processor(logits) - assert result.equal( - torch.tensor( - [ - [-math.inf, -math.inf, -math.inf, 4.0], - [-math.inf, -math.inf, -math.inf, 8.0], - ] - ) - ) - - logits_processor = keep_top_p_logits(0.95) - result = logits_processor(logits) - assert result.equal( - torch.tensor( - [ - [-math.inf, 2.0, 3.0, 4.0], - [-math.inf, 6.0, 7.0, 8.0], - ] - ) - ) - - logits_processor = keep_top_p_logits(1.0) - result = logits_processor(logits) - assert result.equal( - torch.tensor( - [ - [1.0, 2.0, 3.0, 4.0], - [5.0, 6.0, 7.0, 8.0], - ] - ) - ) - - -def test_rescale(): - with pytest.raises(ValueError, match="`temperature` must"): - rescale_logits(1) - - with pytest.raises(ValueError, match="`temperature` must"): - rescale_logits(-0.1) - - with pytest.raises(ValueError, match="Please use the greedy sampler"): - rescale_logits(0.0) - - -def test_beam_search(): - # Two beams, single sequence - sampler = BeamSearchSampler(2) - logits = torch.tensor([[0.0, 1.0], [2.0, 0.0]]) - init_weights = torch.tensor([0, 1.0]) - next_token_ids, ancestors, weights = sampler(logits, init_weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[0], [1]])) - assert ancestors.equal(torch.tensor([1, 0])) - assert weights.equal( - torch.tensor([init_weights[1] + logprobs[1][0], logprobs[0][1]]) - ) - - # Make sure that initial samples are different - sampler = BeamSearchSampler(2) - logits = torch.tensor([[0.0, 1.0], [0.0, 1.0]]) - init_weights = torch.tensor([0, 0]) - next_token_ids, ancestors, weights = sampler(logits, init_weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[1], [0]])) - assert ancestors.equal(torch.tensor([0, 0])) - assert weights.equal(torch.tensor([logprobs[0][1], logprobs[0][0]])) - - # One beam, batch of two sequences. Reduces to Greedy Search. - sampler = BeamSearchSampler(1) - logits = torch.tensor([[0.0, 1.0], [2.0, 0.0]]) - weights = torch.tensor([0, 0]) - next_token_ids, ancestors, weights = sampler(logits, weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[1], [0]])) - assert ancestors.equal(torch.tensor([0, 1])) - assert weights.equal(torch.tensor([logprobs[0][1], logprobs[1][0]])) - - # Two beams, batch of two sequences - sampler = BeamSearchSampler(2) - logits = torch.tensor([[0.0, 1.0], [2.0, 0.0], [3.0, 2.0], [0.0, 1.0]]) - init_weights = torch.tensor([0, 0, 2.0, 0]) - next_token_ids, ancestors, weights = sampler(logits, init_weights, None) - - logprobs = compute_logprobs(logits) - assert next_token_ids.equal(torch.tensor([[0], [1], [0], [1]])) - assert ancestors.equal(torch.tensor([1, 0, 2, 2])) - assert weights.equal( - torch.tensor( - [ - logprobs[1][0], - logprobs[0][1], - init_weights[2] + logprobs[2][0], - init_weights[2] + logprobs[2][1], - ] - ) - ) From 15e82e49d45574c660cbd9b94d74587b7db6879a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 14:27:46 +0200 Subject: [PATCH 09/20] Remove logits processors --- benchmarks/bench_processors.py | 108 ----------- outlines/processors/__init__.py | 7 - outlines/processors/base_logits_processor.py | 135 ------------- outlines/processors/structured.py | 194 ------------------- 4 files changed, 444 deletions(-) delete mode 100644 benchmarks/bench_processors.py delete mode 100644 outlines/processors/__init__.py delete mode 100644 outlines/processors/base_logits_processor.py delete mode 100644 outlines/processors/structured.py diff --git a/benchmarks/bench_processors.py b/benchmarks/bench_processors.py deleted file mode 100644 index 5b490154..00000000 --- a/benchmarks/bench_processors.py +++ /dev/null @@ -1,108 +0,0 @@ -import numpy as np -import torch - -import outlines.models as models -from outlines.processors import OutlinesLogitsProcessor, RegexLogitsProcessor - -try: - import mlx.core as mx -except ImportError: - pass - - -def is_mlx_lm_allowed(): - try: - import mlx.core as mx - except ImportError: - return False - return mx.metal.is_available() - - -def get_mock_processor_inputs(array_library, num_tokens=30000): - """ - logits: (4, 30,000 ) dtype=float - input_ids shape: (4, 2048) dtype=int - """ - if array_library == "torch": - logits = torch.rand((4, num_tokens), dtype=torch.float) - input_ids = torch.randint( - low=0, high=num_tokens, size=(4, 2048), dtype=torch.int - ) - elif array_library == "torch_cuda": - logits = torch.rand((4, num_tokens), dtype=torch.float, device="cuda") - input_ids = torch.randint( - low=0, high=num_tokens, size=(4, 2048), dtype=torch.int, device="cuda" - ) - elif array_library == "numpy": - logits = np.random.rand(4, num_tokens).astype(np.float32) - input_ids = np.random.randint(low=0, high=num_tokens, size=(4, 2048)) - elif array_library == "mlx": - logits = mx.random.uniform( - low=-1e9, high=1e9, shape=(4, num_tokens), dtype=mx.float32 - ) - input_ids = mx.random.randint( - low=0, high=num_tokens, shape=(4, 2048), dtype=mx.int32 - ) - else: - raise ValueError - - return logits, input_ids - - -class HalvingLogitsProcessor(OutlinesLogitsProcessor): - """Simply halve the passed logits""" - - def process_logits(self, input_ids, logits): - return logits / 2 - - -class LogitsProcessorPassthroughBenchmark: - """ - Benchmark the time it takes to convert between array frameworks - This should be on the order of microseconds - """ - - params = ["torch", "numpy"] - if is_mlx_lm_allowed(): - params += ["mlx"] - if torch.cuda.is_available(): - params += ["torch_cuda"] - - def setup(self, array_library): - self.logits_processor = HalvingLogitsProcessor() - - self.logits, self.input_ids = get_mock_processor_inputs(array_library) - - def time_passthrough(self, *params): - self.logits_processor(self.input_ids, self.logits) - - -class LogitsProcessorStructuredBenchmark: - """ - Benchmark structured generation mask application for single decoder pass - """ - - array_libraries = ["torch", "numpy"] - if is_mlx_lm_allowed(): - array_libraries += ["mlx"] - # PR TODO - if torch.cuda.is_available(): - array_libraries += ["torch_cuda"] - - # accept very many or very few tokens, respectively - patterns = [r"[^Z]*", "Z*"] - - params = [array_libraries, patterns] - param_names = ["array_library, pattern"] - - def setup(self, array_library, pattern): - tokenizer = models.transformers("facebook/opt-125m", device="cpu").tokenizer - - self.logits_processor = RegexLogitsProcessor(pattern, tokenizer) - - self.logits, self.input_ids = get_mock_processor_inputs( - array_library, len(tokenizer.vocabulary) - ) - - def time_structured_generation(self, array_library, pattern): - self.logits_processor(self.input_ids, self.logits) diff --git a/outlines/processors/__init__.py b/outlines/processors/__init__.py deleted file mode 100644 index 22c10d90..00000000 --- a/outlines/processors/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from .structured import ( - CFGLogitsProcessor, - FSMLogitsProcessor, - JSONLogitsProcessor, - OutlinesLogitsProcessor, - RegexLogitsProcessor, -) diff --git a/outlines/processors/base_logits_processor.py b/outlines/processors/base_logits_processor.py deleted file mode 100644 index feedf525..00000000 --- a/outlines/processors/base_logits_processor.py +++ /dev/null @@ -1,135 +0,0 @@ -from abc import abstractmethod -from typing import TYPE_CHECKING, List, Protocol, Type, Union - -import numpy as np -import torch -from numpy.typing import NDArray - -if TYPE_CHECKING: - import mlx.core as mx - - -Array = Union[NDArray, torch.Tensor, List, "mx.array"] - - -def is_mlx_array_type(array_type): - try: - import mlx.core as mx - except ImportError: - return False - return issubclass(array_type, mx.array) - - -class OutlinesLogitsProcessor(Protocol): - """ - Base class for logits processors which normalizes types of logits: - - ndarray (used by llama-cpp-python), converted to torch.Tensor - - mlx.core.array (used by mlx-lm), converted to torch.Tensor - - torch.Tensor (used by everything else) - - Normalization of types and conversion to torch.Tensor - doesn't move memory, it just casts the type. - - Normalizing the types allows all logits processors inheriting from this class - to implement a single method for all the business logit: `process_logits()` - """ - - @abstractmethod - def process_logits( - self, input_ids: List[List[int]], logits: torch.Tensor - ) -> torch.Tensor: - """ - input_ids and logits are always 2D tensors for handling a batch of sequences. - - - input_ids -> List[List[tokens]] - - logits -> 2D_Tensor[logit floats] - - Important to keep in mind when designing universal logits processors - - logits processors are only used once and never re-applied for a new sequence generator - - Some models only pass output_ids, some models such as llamacpp and transformers prefix with input_ids - - Some sampling methods, such as beam search, result in unstable sequence ordering in models like vLLM - """ - pass - - @torch.no_grad() - def __call__( - self, - input_ids: Array, - logits: Array, - ) -> Array: - """ - Apply logits processor - - 1) Unify type - - convert input_ids: either ndarray, mlx array, List[int], or Tensor -> List[List[int]] - - convert logits: either ndarray, mlx array, or Tensor -> 2D float Tensor - 2) Unify shape, ensure logits and input_ids are 2D - 3) Call self.process_logits() to perform business logic - 4) Cast logits back to original array library type - """ - # ensure logits are torch Tensors - torch_logits = self._to_torch(logits) - input_ids = self._to_torch(input_ids) - - assert torch_logits.shape[:-1] == input_ids.shape[:-1] - - # Guarantee passed as 2D Tensors, then covert back to original (1D or 2D) shape - if len(torch_logits.shape) == 2: - processed_logits = self.process_logits(input_ids.tolist(), torch_logits) - elif len(torch_logits.shape) == 1: - processed_logits = self.process_logits( - [input_ids.tolist()], torch_logits.unsqueeze(0) - ).squeeze(0) - - # return logits as passed array type - return self._from_torch(processed_logits, type(logits)) - - @staticmethod - def _to_torch(tensor_like: Array) -> torch.Tensor: - """Convert various types to torch.Tensor.""" - if isinstance(tensor_like, torch.Tensor): - return tensor_like - - elif isinstance(tensor_like, np.ndarray): - return torch.from_numpy(tensor_like) - - elif isinstance(tensor_like, (list, tuple)): - return torch.tensor(tensor_like) - - elif is_mlx_array_type(type(tensor_like)): - # mlx -> torch -> mlx conversion docs: - # https://ml-explore.github.io/mlx/build/html/usage/numpy.html - return torch.from_dlpack(tensor_like) - - else: - raise TypeError( - "LogitsProcessor must be called with either np.NDArray, " - "torch.Tensor, list, or mlx.core.array typed logits. " - f"Logits type: `{type(tensor_like)}`" - ) - - @staticmethod - def _from_torch(tensor: torch.Tensor, target_type: Type) -> Array: - """Convert torch.Tensor to the specified target type.""" - if target_type == torch.Tensor: - return tensor - - elif target_type == np.ndarray: - return tensor.detach().numpy() - - elif target_type == list: - return tensor.detach().tolist() - - elif target_type == tuple: - return tuple(tensor.detach().tolist()) - - elif is_mlx_array_type(target_type): - import mlx.core as mx - - # numpy doesn't support bfloat16, mlx doesn't support direct conversion from torch - return mx.array(tensor.float().numpy()) - - else: - raise TypeError( - f"Failed to convert torch tensors to target_type `{target_type}`" - ) diff --git a/outlines/processors/structured.py b/outlines/processors/structured.py deleted file mode 100644 index f8d63d7b..00000000 --- a/outlines/processors/structured.py +++ /dev/null @@ -1,194 +0,0 @@ -""" - _______________________________ -/ Don't want to self-host? \ -\\ Try .json at http://dottxt.co / - ------------------------------- - \\ ^__^ - \\ (oo)\\_______ - (__)\\ )\\/\ - ||----w | - || || - -Copyright 2024- the Outlines developers - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" -import math -from typing import TYPE_CHECKING, Dict, List, Optional, Type, Union - -import torch -from pydantic import BaseModel - -from outlines.fsm.guide import CFGGuide, Guide, RegexGuide -from outlines.fsm.json_schema import build_regex_from_schema, convert_json_schema_to_str - -from .base_logits_processor import OutlinesLogitsProcessor - -if TYPE_CHECKING: - from outlines.models.tokenizer import Tokenizer - - -class FSMLogitsProcessor(OutlinesLogitsProcessor): - """Bias generation using a finite state machine. - - Attributes - ---------- - tokenizer - The tokenizer used to convert tokens to ids. - fsm - The finite state machine which is used to bias the logits. - """ - - def __init__(self, tokenizer: "Tokenizer", fsm: Guide): - """A FSM-based logits processor. - - Parameters - ---------- - tokenizer - The tokenizer used to convert tokens to ids. - fsm - The finite state machine which is used to bias the logits. - """ - self.tokenizer = tokenizer - self._fsm_states: Dict[int, int] = {hash(tuple([])): 0} - self.fsm: Guide = fsm - self._seq_start_idx: Optional[int] = None - - def process_logits( - self, input_ids: List[List[int]], logits: torch.Tensor - ) -> torch.Tensor: - """Use the FSM to bias the logits before sampling the next token. - - Parameters - ---------- - input_ids - The input token ids. - logits - The logits. - - Returns - ------- - torch.Tensor - The biased logits. - """ - if self._seq_start_idx is None: - self._seq_start_idx = len(input_ids[0]) - - sequence_states: List[int] = [] # vector of states corresponding to `input_ids` - - for seq_ids in input_ids: - gen_ids = seq_ids[self._seq_start_idx :] - curr_state_key = hash(tuple(gen_ids)) - - if curr_state_key not in self._fsm_states: - prev_state = self._fsm_states[hash(tuple(gen_ids[:-1]))] - curr_state = self.fsm.get_next_state(prev_state, gen_ids[-1]) - self._fsm_states[curr_state_key] = curr_state - - sequence_states.append(self._fsm_states[curr_state_key]) - - mask = torch.full_like(logits, -math.inf) - for i, fsm_state in enumerate(sequence_states): - allowed_tokens = self.fsm.get_next_instruction(fsm_state).tokens - mask[i, allowed_tokens] = logits[i, allowed_tokens] - - return mask - - def copy(self) -> "FSMLogitsProcessor": - """Return a copy of the logits processor.""" - return FSMLogitsProcessor(tokenizer=self.tokenizer, fsm=self.fsm.copy()) - - -class RegexLogitsProcessor(FSMLogitsProcessor): - """Bias generation based on a regular expression. - - Attributes - ---------- - tokenizer - The tokenizer used to convert tokens to ids. - fsm - The finite state machine which is used to bias the logits. - """ - - def __init__(self, regex_string: str, tokenizer: "Tokenizer"): - """Compile the FSM that drives the regex-guided generation. - - Parameters - ---------- - regex_string - A string that represents a regular expression - tokenizer - An Outlines tokenizer - """ - fsm = RegexGuide(regex_string, tokenizer) - super().__init__(tokenizer=tokenizer, fsm=fsm) - - -class JSONLogitsProcessor(RegexLogitsProcessor): - """Bias generation based on a JSON schema. - - Attributes - ---------- - tokenizer - The tokenizer used to convert tokens to ids. - fsm - The finite state machine which is used to bias the logits. - """ - - def __init__( - self, - schema: Union[dict, Type[BaseModel], str], - tokenizer: "Tokenizer", - whitespace_pattern: Optional[str] = None, - ): - """Compile the FSM that drives the JSON-guided generation. - - Parameters - ---------- - schema - A JSON schema that encodes the structure we want the model to generate. - tokenizer - The tokenizer used to convert tokens to ids. - whitespace_pattern - Pattern to use for JSON syntactic whitespace (doesn't impact string - literals). For example, to allow only a single space or newline with - `whitespace_pattern=r"[\n ]?"` - """ - schema_str = convert_json_schema_to_str(json_schema=schema) - regex_string = build_regex_from_schema(schema_str, whitespace_pattern) - super().__init__(regex_string=regex_string, tokenizer=tokenizer) - - -class CFGLogitsProcessor(FSMLogitsProcessor): - """Bias generation based on a context-free grammar. - - Attributes - ---------- - tokenizer - The tokenizer used to convert tokens to ids. - fsm - The finite state machine which is used to bias the logits. - """ - - def __init__(self, cfg_str: str, tokenizer: "Tokenizer"): - """Compile the FSM that drives the CFG-guided generation. - - Parameters - ---------- - cfg_str - A string that represents a grammar - tokenizer - The tokenizer used to convert tokens to ids. - """ - cfg_automata = CFGGuide(cfg_string=cfg_str, tokenizer=tokenizer) - super().__init__(tokenizer=tokenizer, fsm=cfg_automata) From ffe5c32bdfb3cf052989aea1dad113c78075468e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 14:31:54 +0200 Subject: [PATCH 10/20] Remove CFG logic --- outlines/fsm/fsm.py | 24 +-- outlines/fsm/guide.py | 179 ------------------- outlines/models/transformers.py | 8 +- tests/fsm/test_fsm.py | 262 +--------------------------- tests/fsm/test_guide.py | 300 +------------------------------- tests/fsm/test_parsing.py | 206 ---------------------- 6 files changed, 6 insertions(+), 973 deletions(-) delete mode 100644 tests/fsm/test_parsing.py diff --git a/outlines/fsm/fsm.py b/outlines/fsm/fsm.py index 4a7fce8c..bfcf55c0 100644 --- a/outlines/fsm/fsm.py +++ b/outlines/fsm/fsm.py @@ -1,7 +1,7 @@ import warnings from typing import TYPE_CHECKING, Iterable, NewType, Optional -from outlines.fsm.guide import CFGGuide, RegexGuide, StopAtEOSGuide +from outlines.fsm.guide import RegexGuide, StopAtEOSGuide if TYPE_CHECKING: from outlines.models.tokenizer import Tokenizer @@ -45,25 +45,3 @@ def allowed_token_ids(self, state: FSMState) -> Optional[Iterable[int]]: def next_state(self, state: FSMState, token_id: int) -> FSMState: return FSMState(self.get_next_state(state, token_id)) - - -class CFGFSM(CFGGuide): - """FSM to generate text that is in the language of a context-free grammar.""" - - def __init__(self, cfg_string: str, tokenizer): - warnings.warn( - UserWarning( - "The `CFGFSM` interface is deprecated and will be removed on 2024-06-01. Please use `CFGGuide` instead." - ) - ) - super().__init__(cfg_string, tokenizer) - - def allowed_token_ids(self, state: FSMState) -> Optional[Iterable[int]]: - return self.get_next_instruction(state).tokens - - def next_state(self, state: FSMState, token_id: int) -> FSMState: - return FSMState(self.get_next_state(state, token_id)) - - def copy(self) -> "CFGFSM": - """Create a copy of the FSM.""" - return CFGFSM(self.cfg_string, self.tokenizer) diff --git a/outlines/fsm/guide.py b/outlines/fsm/guide.py index 2e441514..c846c441 100644 --- a/outlines/fsm/guide.py +++ b/outlines/fsm/guide.py @@ -13,9 +13,7 @@ import interegular import torch -from lark import Lark -from outlines import grammars from outlines.caching import cache from outlines.fsm.regex import ( create_fsm_index_tokenizer, @@ -298,180 +296,3 @@ def is_final_state(self, state: int) -> bool: def copy(self): return self - - -class CFGGuide(Guide): - """Guide to generate text that is in the language of a context-free grammar.""" - - def __init__(self, cfg_string: str, tokenizer): - self.cfg_string = cfg_string - self.tokenizer = tokenizer - - self.parser = Lark( - cfg_string, - parser="lalr", - lexer="contextual", - propagate_positions=False, - maybe_placeholders=False, - regex=True, - import_paths=[grammars.GRAMMAR_PATH], - ) - self.terminal_regexps = dict() - for terminal in self.parser.terminals: - if terminal.pattern is not None: - self.terminal_regexps[terminal.name] = terminal.pattern.to_regexp() - self.terminal_regexps["$END"] = tokenizer.eos_token - - self.generation = "" - self.reset_state = False - self.allow_eos = False - self.regex_fsm: RegexGuide - - self.check_last = False - self.proposal_last: List[int] = [] - self.regex_fsm_last: RegexGuide - - self.start_state = 0 - self.final_state = -1 - - def get_next_instruction(self, state: int) -> Instruction: - """Generate an instruction for the next step. - - Upon initialization, the CFG incremental parser is used to determine the - first regex and construct the first FSM to generate the first terminal. - - This FSM is used for proposals until either: - - - The FSM is exhausted, and its only remaining option is the EOS token, - in which case we feed the generated terminal to the - CFG incremental parser and allow it to propose the next regex - corresponding to the next set of valid terminals. - - The current FSM can be exhausted, but the EOS token is not the only - remaining option. In this case we allow proposal of current terminal - extensions, store the current FSM and its state, then also use the CFG - parser to propose a new regex corresponding to terminating the current - terminal and starting the next one. The model can then sample from - either of these sets to determine whether to extend the current - terminal or terminate it and start the next one. - - The CFG incremental parser is allowed to propose the EOS token from any accepting state, - and once it is generated, the FSM will continue to always generate the EOS token. - - Parameters - ---------- - state - The current state of the FSM. - - Returns - ------- - A list that contains the tokens to mask. - - """ - if self.is_final_state(state): - return Write([self.tokenizer.eos_token_id]) - - proposal: List[int] = [] - if self.generation != "": - if self.check_last: - proposer = self.regex_fsm_last - else: - proposer = self.regex_fsm - - instruction = proposer.get_next_instruction(state) - - assert instruction.tokens is not None - - if isinstance(instruction, Write): - proposal += instruction.tokens - else: - proposal += instruction.tokens - - if self.tokenizer.eos_token_id not in proposal: - return Generate(proposal) - - self.check_last = False - proposal = [x for x in proposal if x != self.tokenizer.eos_token_id] - if len(proposal) > 0: - self.check_last = True - self.proposal_last = proposal.copy() - self.regex_fsm_last = proposer - - interactive = self.parser.parse_interactive(self.generation) - interactive.exhaust_lexer() - - options = {self.terminal_regexps[x] for x in interactive.accepts()} - # add %ignore terminals - options |= {self.terminal_regexps[x] for x in self.parser.lexer_conf.ignore} - - if self.terminal_regexps["$END"] in options: - options.remove(self.terminal_regexps["$END"]) - if len(options) == 0: - return Write([self.tokenizer.eos_token_id]) - self.allow_eos = True - options.add("") - assert len(options) > 1 - - regex_string = r"(" + r"|".join([r"(" + x + r")" for x in options]) + r")" - self.regex_fsm = RegexGuide(regex_string, self.tokenizer) - self.reset_state = True - - instruction = self.regex_fsm.get_next_instruction(self.start_state) - - assert instruction.tokens is not None - - if isinstance(instruction, Write): - proposal += instruction.tokens - else: - proposal += instruction.tokens - - if self.allow_eos: - self.allow_eos = False - else: - proposal = [x for x in proposal if x != self.tokenizer.eos_token_id] - assert len(proposal) > 0 - - return Generate(proposal) - - def get_next_state(self, state: int, token_id: int) -> int: - """Update the state of the guide. - - Transitions the underlying regex FSM to its next state. - If at max tokens or EOS token, transition permanently to the final state. - Update stored partial generations for subsequent incremental parsing. - - Parameters - ---------- - state - The current state of the FSM. - token_id - The id of the token that was just generated. - - Returns - ------- - The new state of the FSM. - """ - - # We need to return the final state when in the final state because we - # then generate EOS tokens instead of stopping the generation. - if token_id == self.tokenizer.eos_token_id or state == self.final_state: - return self.final_state - - self.generation += self.tokenizer.decode([token_id])[0] - - if self.check_last: - if token_id in self.proposal_last: - return self.regex_fsm_last.get_next_state(state, token_id) - self.check_last = False - - if self.reset_state: - self.reset_state = False - state = self.start_state - - return self.regex_fsm.get_next_state(state, token_id) - - def is_final_state(self, state: int) -> bool: - return state == self.final_state - - def copy(self) -> "CFGGuide": - """Create a copy of the FSM.""" - return CFGGuide(self.cfg_string, self.tokenizer) diff --git a/outlines/models/transformers.py b/outlines/models/transformers.py index 949d3c9c..10f8f248 100644 --- a/outlines/models/transformers.py +++ b/outlines/models/transformers.py @@ -10,8 +10,6 @@ import torch from transformers import PreTrainedModel, PreTrainedTokenizer - from outlines.processors import OutlinesLogitsProcessor - __all__ = ["transformers"] @@ -217,7 +215,7 @@ def generate( self, prompts: Union[str, List[str]], generation_parameters: GenerationParameters, - logits_processor: Optional["OutlinesLogitsProcessor"], + logits_processor, sampling_parameters: SamplingParameters, ) -> Union[str, List[str], List[List[str]]]: """Generate text using `transformers`. @@ -275,7 +273,7 @@ def stream( self, prompts: Union[str, List[str]], generation_parameters: GenerationParameters, - logits_processor: Optional["OutlinesLogitsProcessor"], + logits_processor, sampling_parameters: SamplingParameters, ) -> Iterator[Union[str, List[str]]]: """ @@ -319,7 +317,7 @@ def _get_generation_kwargs( self, prompts: Union[str, List[str]], generation_parameters: GenerationParameters, - logits_processor: Optional["OutlinesLogitsProcessor"], + logits_processor, sampling_parameters: SamplingParameters, ) -> dict: """ diff --git a/tests/fsm/test_fsm.py b/tests/fsm/test_fsm.py index 21163b70..94166fd9 100644 --- a/tests/fsm/test_fsm.py +++ b/tests/fsm/test_fsm.py @@ -1,6 +1,6 @@ import pytest -from outlines.fsm.fsm import CFGFSM, RegexFSM, StopAtEosFSM +from outlines.fsm.fsm import RegexFSM, StopAtEosFSM def assert_expected_tensor_ids(tensor, ids): @@ -90,263 +90,3 @@ def convert_token_to_string(self, token): state = fsm.next_state(state=5, token_id=103) assert fsm.is_final_state(state) - - -def test_cfg(): - class MockTokenizer: - vocabulary = {"{": 1, "}": 2, "[": 3, "]": 4, "eos": 5} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 5 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: expr - expr: "{" expr "}" | "[" expr "]" | - """ - tokenizer = MockTokenizer() - - with pytest.warns(UserWarning): - fsm = CFGFSM(cfg_str, tokenizer) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=fsm.start_state), [1, 3, 5]) - state = fsm.next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "{" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2, 3]) - state = fsm.next_state(state=state, token_id=3) - assert fsm.generation == "{[" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 3, 4]) - state = fsm.next_state(state=state, token_id=4) - assert fsm.generation == "{[]" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [2]) - state = fsm.next_state(state=state, token_id=2) - assert fsm.generation == "{[]}" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [5]) - state = fsm.next_state(state=state, token_id=5) - assert fsm.generation == "{[]}" - assert fsm.is_final_state(state) - - -def test_cfg_early_termination(): - class MockTokenizer: - vocabulary = {"(": 1, ")": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: expr+ - expr: "(" subexpr ")" - subexpr: expr | - """ - tokenizer = MockTokenizer() - - with pytest.warns(UserWarning): - fsm = CFGFSM(cfg_str, tokenizer) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=fsm.start_state), [1]) - state = fsm.next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "(" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2]) - state = fsm.next_state(state=state, token_id=2) - assert fsm.generation == "()" - assert not fsm.is_final_state(state) - - # possible to continue or terminate - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 3]) - state = fsm.next_state(state=state, token_id=3) # feed eos - assert fsm.generation == "()" - assert fsm.is_final_state(state) - - # once eos generated, can only terminate - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [3]) - - -def test_cfg_ignore_directive(): - class MockTokenizer: - vocabulary = {"a": 1, " ": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: LETTER+ - LETTER: "a" - WS: " " - %ignore WS - """ - tokenizer = MockTokenizer() - - with pytest.warns(UserWarning): - fsm = CFGFSM(cfg_str, tokenizer) - - state = 0 - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=0), [1, 2]) - state = fsm.next_state(state=0, token_id=2) - assert fsm.generation == " " - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=0), [1, 2]) - state = fsm.next_state(state=0, token_id=1) - assert fsm.generation == " a" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2, 3]) - state = fsm.next_state(state=state, token_id=2) - assert fsm.generation == " a " - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2, 3]) - state = fsm.next_state(state=state, token_id=2) - assert fsm.generation == " a " - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2, 3]) - state = fsm.next_state(state=state, token_id=1) - assert fsm.generation == " a a" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 2, 3]) - state = fsm.next_state(state=state, token_id=3) - assert fsm.generation == " a a" - assert fsm.is_final_state(state) - - # once eos generated, can only terminate - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [3]) - - -def test_cfg_multitoken_terminal(): - class MockTokenizer: - vocabulary = {"a": 1, "b": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: S - S: "aa" | "bb" - """ - tokenizer = MockTokenizer() - - with pytest.warns(UserWarning): - fsm = CFGFSM(cfg_str, tokenizer) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=fsm.start_state), [1, 2]) - assert fsm.reset_state # starting new regex - state = fsm.next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "a" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1]) - assert not fsm.reset_state # continuing current regex - state = fsm.next_state(state=state, token_id=1) - assert fsm.generation == "aa" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [3]) - assert not fsm.reset_state # completing current regex - state = fsm.next_state(state=state, token_id=3) - assert fsm.generation == "aa" - assert fsm.is_final_state(state) - - -def test_cfg_allow_both_extend_and_shift_terminal(): - class MockTokenizer: - vocabulary = {"(": 1, ")": 2, "a": 3, "eos": 4} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 4 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: s - s: "(" s ")" | /a+/ - """ - tokenizer = MockTokenizer() - - with pytest.warns(UserWarning): - fsm = CFGFSM(cfg_str, tokenizer) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=fsm.start_state), [1, 3]) - state = fsm.next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "(" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [1, 3]) - state = fsm.next_state(state=state, token_id=3) - assert fsm.generation == "(a" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [2, 3]) - state = fsm.next_state(state=state, token_id=3) - assert fsm.generation == "(aa" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [2, 3]) - state = fsm.next_state(state=state, token_id=2) - assert fsm.generation == "(aa)" - assert not fsm.is_final_state(state) - - assert_expected_tensor_ids(fsm.allowed_token_ids(state=state), [4]) - state = fsm.next_state(state=state, token_id=4) - assert fsm.generation == "(aa)" - assert fsm.is_final_state(state) diff --git a/tests/fsm/test_guide.py b/tests/fsm/test_guide.py index 20ba7589..9a66bc04 100644 --- a/tests/fsm/test_guide.py +++ b/tests/fsm/test_guide.py @@ -1,6 +1,6 @@ import pytest -from outlines.fsm.guide import CFGGuide, Generate, RegexGuide, StopAtEOSGuide, Write +from outlines.fsm.guide import Generate, RegexGuide, StopAtEOSGuide, Write def assert_expected_tensor_ids(tensor, ids): @@ -188,301 +188,3 @@ def convert_token_to_string(self, token): state = fsm.get_next_state(state=5, token_id=103) assert fsm.is_final_state(state) - - -def test_cfg(): - class MockTokenizer: - vocabulary = {"{": 1, "}": 2, "[": 3, "]": 4, "eos": 5} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 5 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: expr - expr: "{" expr "}" | "[" expr "]" | - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - - instruction = fsm.get_next_instruction(fsm.start_state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 3, 5]) - state = fsm.get_next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "{" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2, 3]) - state = fsm.get_next_state(state=state, token_id=3) - assert fsm.generation == "{[" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 3, 4]) - state = fsm.get_next_state(state=state, token_id=4) - assert fsm.generation == "{[]" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [2]) - state = fsm.get_next_state(state=state, token_id=2) - assert fsm.generation == "{[]}" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Write) - assert_expected_tensor_ids(instruction.tokens, [5]) - state = fsm.get_next_state(state=state, token_id=5) - assert fsm.generation == "{[]}" - assert fsm.is_final_state(state) - - -def test_cfg_early_termination(): - class MockTokenizer: - vocabulary = {"(": 1, ")": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: expr+ - expr: "(" subexpr ")" - subexpr: expr | - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - - instruction = fsm.get_next_instruction(fsm.start_state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1]) - state = fsm.get_next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "(" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2]) - state = fsm.get_next_state(state=state, token_id=2) - assert fsm.generation == "()" - assert not fsm.is_final_state(state) - - # possible to continue or terminate - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 3]) - state = fsm.get_next_state(state=state, token_id=3) # feed eos - assert fsm.generation == "()" - assert fsm.is_final_state(state) - - # once eos generated, can only terminate - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Write) - assert_expected_tensor_ids(instruction.tokens, [3]) - - -def test_cfg_ignore_directive(): - class MockTokenizer: - vocabulary = {"a": 1, " ": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: LETTER+ - LETTER: "a" - WS: " " - %ignore WS - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - - state = 0 - - instruction = fsm.get_next_instruction(0) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2]) - state = fsm.get_next_state(state=0, token_id=2) - assert fsm.generation == " " - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(0) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2]) - state = fsm.get_next_state(state=0, token_id=1) - assert fsm.generation == " a" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2, 3]) - state = fsm.get_next_state(state=state, token_id=2) - assert fsm.generation == " a " - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2, 3]) - state = fsm.get_next_state(state=state, token_id=2) - assert fsm.generation == " a " - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2, 3]) - state = fsm.get_next_state(state=state, token_id=1) - assert fsm.generation == " a a" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2, 3]) - state = fsm.get_next_state(state=state, token_id=3) - assert fsm.generation == " a a" - assert fsm.is_final_state(state) - - # once eos generated, can only terminate - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Write) - assert_expected_tensor_ids(instruction.tokens, [3]) - - -def test_cfg_multitoken_terminal(): - class MockTokenizer: - vocabulary = {"a": 1, "b": 2, "eos": 3} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 3 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: S - S: "aa" | "bb" - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - - instruction = fsm.get_next_instruction(fsm.start_state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 2]) - assert fsm.reset_state # starting new regex - state = fsm.get_next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "a" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1]) - assert not fsm.reset_state # continuing current regex - state = fsm.get_next_state(state=state, token_id=1) - assert fsm.generation == "aa" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Write) - assert_expected_tensor_ids(instruction.tokens, [3]) - assert not fsm.reset_state # completing current regex - state = fsm.get_next_state(state=state, token_id=3) - assert fsm.generation == "aa" - assert fsm.is_final_state(state) - - -def test_cfg_allow_both_extend_and_shift_terminal(): - class MockTokenizer: - vocabulary = {"(": 1, ")": 2, "a": 3, "eos": 4} - special_tokens = {"eos"} - eos_token = "eos" - eos_token_id = 4 - - def convert_token_to_string(self, token): - return token - - @property - def inverse_vocabulary(self): - return {v: k for k, v in self.vocabulary.items()} - - def decode(self, token_ids): - return [self.inverse_vocabulary[t] for t in token_ids] - - cfg_str = """ - start: s - s: "(" s ")" | /a+/ - """ - tokenizer = MockTokenizer() - fsm = CFGGuide(cfg_str, tokenizer) - - instruction = fsm.get_next_instruction(fsm.start_state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 3]) - state = fsm.get_next_state(state=fsm.start_state, token_id=1) - assert fsm.generation == "(" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [1, 3]) - state = fsm.get_next_state(state=state, token_id=3) - assert fsm.generation == "(a" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [2, 3]) - state = fsm.get_next_state(state=state, token_id=3) - assert fsm.generation == "(aa" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Generate) - assert_expected_tensor_ids(instruction.tokens, [2, 3]) - state = fsm.get_next_state(state=state, token_id=2) - assert fsm.generation == "(aa)" - assert not fsm.is_final_state(state) - - instruction = fsm.get_next_instruction(state) - assert isinstance(instruction, Write) - assert_expected_tensor_ids(instruction.tokens, [4]) - state = fsm.get_next_state(state=state, token_id=4) - assert fsm.generation == "(aa)" - assert fsm.is_final_state(state) diff --git a/tests/fsm/test_parsing.py b/tests/fsm/test_parsing.py deleted file mode 100644 index 3f4c1ba4..00000000 --- a/tests/fsm/test_parsing.py +++ /dev/null @@ -1,206 +0,0 @@ -import importlib -from copy import copy - -import lark.lark -import pytest -from lark.indenter import DedentError -from lark.lexer import UnexpectedCharacters, UnexpectedToken - -from outlines.fsm.parsing import PartialLark, PartialPythonIndenter - - -@pytest.fixture -def cleanup_lark_import(): - yield - # Clean up lark.lark.LarkOptions._defaults - importlib.reload(lark.lark) - - -def test_partial_parsing(cleanup_lark_import): - lp = PartialLark.open_from_package( - "tests", - "partial_python.lark", - ["fsm"], - parser="lalr", - postlex=PartialPythonIndenter(), - start="file_input", - deterministic=True, - ) - - # End with a potentially unfinished NAME - parser_state = lp.parse("x") - assert parser_state.state_stack == [0] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 15) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - # End with an ignored token - parser_state = lp.parse("x ") - assert parser_state.state_stack == [0, 692] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 1) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - # Could be a complete `=` or the start of a `==` - parser_state = lp.parse("x =") - assert parser_state.state_stack == [0, 692] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert any( - term_info.terminal_name == "EQUAL" - for term_info in last_token.value.terminals_and_info - ) - assert not parser_state.value_stack - - parser_state = lp.parse("x = '") - assert parser_state.state_stack == [0, 58, 59] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 6) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - parser_state = lp.parse("x = 'hi") - assert parser_state.state_stack == [0, 58, 59] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 6, 6, 6) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - parser_state = lp.parse("x = ('hi") - assert parser_state.state_stack == [0, 58, 59, 254] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 6, 6, 6) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - parser_state = lp.parse("def") - assert parser_state.state_stack == [0] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - assert last_token.value.fsm_state_seq == (0, 26, 99, 100) - assert last_token.value.is_not_finished is True - assert not parser_state.value_stack - - # Now, try something incremental - last_lexer_state = parser_state.lexer.state - last_lexer_state.text += " blah()" - lp.parse_from_state(parser_state, is_end=False) - last_token = parser_state.lexer.state.last_token - assert not parser_state.value_stack - - last_lexer_state = parser_state.lexer.state - last_valid_token = last_lexer_state.last_token - assert last_valid_token.type == "RPAR" - assert not parser_state.value_stack - - # Something incremental and a little more complicated - parser_state = lp.parse("x = 1\ndef foo(x):\n ") - assert parser_state.state_stack == [0, 94, 600, 601, 602, 607, 608, 269] - last_lexer_state = parser_state.lexer.state - last_lexer_state.text += " return x" - - lp.parse_from_state(parser_state, is_end=False) - assert parser_state.state_stack == [ - 0, - 94, - 600, - 601, - 602, - 607, - 608, - 269, - 764, - 95, - 305, - ] - last_token = parser_state.lexer.state.last_token - assert last_token.type == "partial" - - with pytest.raises(UnexpectedToken): - lp.parse("def \n") - - with pytest.raises(UnexpectedToken): - lp.parse("def hot no") - - lp = PartialLark.open_from_package( - "tests", - "partial_python.lark", - ["fsm"], - parser="lalr", - postlex=PartialPythonIndenter(), - start="file_input", - use_value_stack=True, - ) - parser_state = lp.parse("x = ('hi") - lp.parse_from_state(parser_state, is_end=False) - assert len(parser_state.state_stack) == 4 - assert parser_state.value_stack[-1].type == "LPAR" - - -def test_sequential_parse_example(cleanup_lark_import): - input_tokens = [ - "x ", - "= ", - "1", - "\nde", - "f ", - "foo(", - "x)", - ":\n", - " ", - " return x", - " + 1", - "\n", - "z ", - "= ", - "foo(", - '"hi', - '")\n', - ] - vocab = sorted(set(input_tokens)) - - lp = PartialLark.open_from_package( - "tests", - "partial_python.lark", - ["fsm"], - parser="lalr", - postlex=PartialPythonIndenter(), - start="file_input", - deterministic=True, - ) - parser_state = lp.parse("") - - token_seq = "" - for i, token in enumerate(input_tokens): - token_seq += token - - lex_state = parser_state.lexer.state - lex_state.text = token_seq - - lp.parse_from_state(parser_state, is_end=False) - - next_vocab = set() - for test_token in vocab: - ps = copy(parser_state) - ls = ps.lexer.state - ls.text = token_seq + test_token - - if i + 1 < len(input_tokens) and test_token == input_tokens[i + 1]: - lp.parse_from_state(ps, is_end=False) - next_vocab.add(test_token) - else: - try: - lp.parse_from_state(ps, is_end=False) - next_vocab.add(test_token) - except (EOFError, UnexpectedToken, UnexpectedCharacters, DedentError): - pass - - if i + 1 == len(input_tokens): - assert all(tk in next_vocab for tk in ["\n", "\nde", " ", " + 1"]) From 11d3033421f398695c80b3d5c244fd54cfa469ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 14:57:37 +0200 Subject: [PATCH 11/20] Adopt the `src` layout and rename to outlines-core --- .github/scripts/build_sdist_and_wheel.sh | 8 +- .github/workflows/release_docker.yml | 36 - .github/workflows/release_pypi.yaml | 2 +- .github/workflows/tests.yml | 2 +- Dockerfile | 17 - README.md | 368 +------- benchmarks/asv.conf.json | 6 +- benchmarks/bench_json_schema.py | 6 +- benchmarks/bench_numba_compile.py | 4 +- benchmarks/bench_regex_guide.py | 4 +- benchmarks/common.py | 4 +- environment.yml | 3 +- outlines/fsm/parsing.py | 870 ------------------ pyproject.toml | 38 +- {outlines => src/outlines_core}/__init__.py | 5 +- {outlines => src/outlines_core}/caching.py | 10 +- .../outlines_core}/fsm/__init__.py | 0 {outlines => src/outlines_core}/fsm/fsm.py | 4 +- {outlines => src/outlines_core}/fsm/guide.py | 6 +- .../outlines_core}/fsm/json_schema.py | 0 {outlines => src/outlines_core}/fsm/regex.py | 2 +- {outlines => src/outlines_core}/fsm/types.py | 0 .../outlines_core}/models/__init__.py | 0 .../outlines_core}/models/tokenizer.py | 0 .../outlines_core}/models/transformers.py | 2 +- {outlines => src/outlines_core}/py.typed | 0 tests/fsm/test_fsm.py | 2 +- tests/fsm/test_guide.py | 2 +- tests/fsm/test_json_schema.py | 2 +- tests/fsm/test_regex.py | 18 +- tests/fsm/test_types.py | 2 +- tests/models/test_tokenizer.py | 2 +- tests/models/test_transformers.py | 2 +- tests/test_cache.py | 28 +- 34 files changed, 73 insertions(+), 1382 deletions(-) delete mode 100644 .github/workflows/release_docker.yml delete mode 100644 Dockerfile delete mode 100644 outlines/fsm/parsing.py rename {outlines => src/outlines_core}/__init__.py (55%) rename {outlines => src/outlines_core}/caching.py (95%) rename {outlines => src/outlines_core}/fsm/__init__.py (100%) rename {outlines => src/outlines_core}/fsm/fsm.py (92%) rename {outlines => src/outlines_core}/fsm/guide.py (98%) rename {outlines => src/outlines_core}/fsm/json_schema.py (100%) rename {outlines => src/outlines_core}/fsm/regex.py (99%) rename {outlines => src/outlines_core}/fsm/types.py (100%) rename {outlines => src/outlines_core}/models/__init__.py (100%) rename {outlines => src/outlines_core}/models/tokenizer.py (100%) rename {outlines => src/outlines_core}/models/transformers.py (99%) rename {outlines => src/outlines_core}/py.typed (100%) diff --git a/.github/scripts/build_sdist_and_wheel.sh b/.github/scripts/build_sdist_and_wheel.sh index ca770f5b..6a1b24d1 100755 --- a/.github/scripts/build_sdist_and_wheel.sh +++ b/.github/scripts/build_sdist_and_wheel.sh @@ -9,14 +9,14 @@ python -m build mkdir -p test-sdist cd test-sdist python -m venv venv-sdist -venv-sdist/bin/python -m pip install ../dist/outlines-*.tar.gz -venv-sdist/bin/python -c "import outlines" +venv-sdist/bin/python -m pip install ../dist/outlines_core-*.tar.gz +venv-sdist/bin/python -c "import outlines_core" cd .. # Check wheel install and imports mkdir -p test-wheel cd test-wheel python -m venv venv-wheel -venv-wheel/bin/python -m pip install ../dist/outlines-*.whl -venv-wheel/bin/python -c "import outlines" +venv-wheel/bin/python -m pip install ../dist/outlines_core-*.whl +venv-wheel/bin/python -c "import outlines_core" cd .. diff --git a/.github/workflows/release_docker.yml b/.github/workflows/release_docker.yml deleted file mode 100644 index 7a0ca4db..00000000 --- a/.github/workflows/release_docker.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Release Docker - -on: - release: - types: - - created - workflow_dispatch: - inputs: - release_tag: - description: 'Release Tag (for manual dispatch)' - required: false - default: 'latest' -jobs: - release-job: - name: Build and publish on Docker Hub - runs-on: ubuntu-latest - environment: release - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - push: true - tags: | - outlinesdev/outlines:latest - outlinesdev/outlines:${{ github.event.release.tag_name || github.event.inputs.release_tag }} - build-args: | - BUILDKIT_CONTEXT_KEEP_GIT_DIR=true - - name: Clean docker cache - run: docker system prune --all --force diff --git a/.github/workflows/release_pypi.yaml b/.github/workflows/release_pypi.yaml index 9f78cfc4..eb4a9a7c 100644 --- a/.github/workflows/release_pypi.yaml +++ b/.github/workflows/release_pypi.yaml @@ -19,7 +19,7 @@ jobs: run: ./.github/scripts/build_sdist_and_wheel.sh - name: Check that the package version matches the Release name run: | - grep -Rq "^Version: ${GITHUB_REF:10}$" outlines.egg-info/PKG-INFO + grep -Rq "^Version: ${GITHUB_REF:10}$" outlines_core.egg-info/PKG-INFO - name: Publish to PyPi uses: pypa/gh-action-pypi-publish@v1.4.2 with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b76d723f..8da373c3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -35,7 +35,7 @@ jobs: pip install .[test] - name: Run tests run: | - pytest --cov=outlines + pytest --cov=outlines_core env: COVERAGE_FILE: .coverage.${{ steps.matrix-id.outputs.id }} - name: Upload coverage data diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c6e5f067..00000000 --- a/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM python:3.10 - -WORKDIR /outlines - -RUN pip install --upgrade pip - -# Copy necessary build components -COPY pyproject.toml . -COPY outlines ./outlines - -# Install outlines and outlines[serve] -# .git required by setuptools-scm -RUN --mount=source=.git,target=.git,type=bind \ - pip install --no-cache-dir .[serve] - -# https://outlines-dev.github.io/outlines/reference/vllm/ -ENTRYPOINT ["python3", "-m", "outlines.serve.serve"] diff --git a/README.md b/README.md index 364e7724..769c87c1 100644 --- a/README.md +++ b/README.md @@ -1,367 +1 @@ -
- -# Outlines 〰️ - -Outlines Logo - -[![.txt Twitter][dottxt-twitter-badge]][dottxt-twitter] -[![Outlines Twitter][outlines-twitter-badge]][outlines-twitter] - -[![Contributors][contributors-badge]][contributors] -[![Downloads][downloads-badge]][pypistats] -[![Discord][discord-badge]][discord] - - -*Robust (structured) text generation.* - -Made with β€πŸ‘·οΈ by the team at [.txt](https://dottxt.co). - -
- - -``` bash -pip install outlines -``` - -First time here? Go to our [setup guide](https://outlines-dev.github.io/outlines/welcome) - -## Features - -- [x] πŸ€– [Multiple model integrations](https://outlines-dev.github.io/outlines/installation): OpenAI, transformers, llama.cpp, exllama2, mamba -- [x] πŸ–οΈ Simple and powerful prompting primitives based on the [Jinja templating engine](https://jinja.palletsprojects.com/) -- [x] πŸš„ [Multiple choices](#multiple-choices), [type constraints](#type-constraint) and dynamic stopping -- [x] ⚑ Fast [regex-structured generation](#efficient-regex-structured-generation) -- [x] πŸ”₯ Fast [JSON generation](#efficient-json-generation-following-a-pydantic-model) following a JSON schema or a Pydantic model -- [x] πŸ“ [Grammar-structured generation](#using-context-free-grammars-to-guide-generation) -- [x] 🐍 Interleave completions with loops, conditionals, and custom Python functions -- [x] πŸ’Ύ Caching of generations -- [x] πŸ—‚οΈ Batch inference -- [x] 🎲 Sample with the greedy, multinomial and beam search algorithms (and more to come!) -- [x] πŸš€ [Serve with vLLM](https://outlines-dev.github.io/outlines/reference/serve/vllm), with official Docker image, [`outlinesdev/outlines`](https://hub.docker.com/r/outlinesdev/outlines)! - - -Outlines γ€° has new releases and features coming every week. Make sure to ⭐ star and πŸ‘€ watch this repository, follow [@dottxtai][dottxt-twitter] to stay up to date! - -## Why should I use structured generation? - -* It doesn't add any overhead during inference (cost-free) -* It allows Open Source models to beat closed source models ([Mistral](https://x.com/dottxtai/status/1797692104023363765), [GPT-4](https://x.com/dottxtai/status/1798443290913853770)) -* [It speeds up inference](http://blog.dottxt.co/coalescence.html) -* [It improves the performance of base models (GSM8K)](http://blog.dottxt.co/performance-gsm8k.html) -* [It improves the performance of finetuned models (CoNNL)](https://predibase.com/blog/lorax-outlines-better-json-extraction-with-structured-generation-and-lora) -* [It improves model efficiency (less examples needed)](https://huggingface.co/blog/evaluation-structured-outputs) - -## .txt company - -
-Outlines Logo -
- -We started a company to keep pushing the boundaries of structured generation. Learn more about [.txt](https://twitter.com/dottxtai), and [give our .json API a try](https://h1xbpbfsf0w.typeform.com/to/ZgBCvJHF) if you need a hosted solution ✨ - -## Structured generation - -The first step towards reliability of systems that include large language models -is to ensure that there is a well-defined interface between their output and -user-defined code. **Outlines** provides ways to control the generation of -language models to make their output more predictable. - -### Multiple choices - -You can reduce the completion to a choice between multiple possibilities: - -``` python -import outlines - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") - -prompt = """You are a sentiment-labelling assistant. -Is the following review positive or negative? - -Review: This restaurant is just awesome! -""" - -generator = outlines.generate.choice(model, ["Positive", "Negative"]) -answer = generator(prompt) -``` - -### Type constraint - -You can instruct the model to only return integers or floats: - - -``` python -import outlines - -model = outlines.models.transformers("WizardLM/WizardMath-7B-V1.1") - -prompt = "result of 9 + 9 = 18result of 1 + 2 = " -answer = outlines.generate.format(model, int)(prompt) -print(answer) -# 3 - -prompt = "sqrt(2)=" -generator = outlines.generate.format(model, float) -answer = generator(prompt, max_tokens=10) -print(answer) -# 1.41421356 -``` - -### Efficient regex-structured generation - -Outlines also comes with fast regex-structured generation. In fact, the `choice` and -`format` functions above all use regex-structured generation under the -hood: - -``` python -import outlines - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") - -prompt = "What is the IP address of the Google DNS servers? " - -generator = outlines.generate.text(model) -unstructured = generator(prompt, max_tokens=30) - -generator = outlines.generate.regex( - model, - r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)", -) -structured = generator(prompt, max_tokens=30) - -print(unstructured) -# What is the IP address of the Google DNS servers? -# -# Passive DNS servers are at DNS servers that are private. -# In other words, both IP servers are private. The database -# does not contain Chelsea Manning - -print(structured) -# What is the IP address of the Google DNS servers? -# 2.2.6.1 -``` - -Unlike other libraries, regex-structured generation in Outlines is almost as fast -as non-structured generation. - -### Efficient JSON generation following a Pydantic model - -Outlines γ€° allows to guide the generation process so the output is *guaranteed* to follow a [JSON schema](https://json-schema.org/) or [Pydantic model](https://docs.pydantic.dev/latest/): - -```python -from enum import Enum -from pydantic import BaseModel, constr - -import outlines -import torch - - -class Weapon(str, Enum): - sword = "sword" - axe = "axe" - mace = "mace" - spear = "spear" - bow = "bow" - crossbow = "crossbow" - - -class Armor(str, Enum): - leather = "leather" - chainmail = "chainmail" - plate = "plate" - - -class Character(BaseModel): - name: constr(max_length=10) - age: int - armor: Armor - weapon: Weapon - strength: int - - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") - -# Construct structured sequence generator -generator = outlines.generate.json(model, Character) - -# Draw a sample -seed = 789001 - -character = generator("Give me a character description", seed=seed) - -print(repr(character)) -# Character(name='Anderson', age=28, armor=, weapon=, strength=8) - -character = generator("Give me an interesting character description", rng=rng) - -print(repr(character)) -# Character(name='Vivian Thr', age=44, armor=, weapon=, strength=125) -``` - -The method works with union types, optional types, arrays, nested schemas, etc. Some field constraints are [not supported yet](https://github.com/outlines-dev/outlines/issues/215), but everything else should work. - -### Efficient JSON generation following a JSON Schema - -Sometimes you just want to be able to pass a JSON Schema instead of a Pydantic model. We've got you covered: - -``` python -import outlines - -schema = '''{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}''' - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = outlines.generate.json(model, schema) -character = generator("Give me a character description") -``` - -### Using context-free grammars to guide generation - -Formal grammars rule the world, and Outlines makes them rule LLMs too. You can pass any context-free grammar in the EBNF format and Outlines will generate an output that is valid to this grammar: - -``` python -import outlines - -arithmetic_grammar = """ - ?start: expression - - ?expression: term (("+" | "-") term)* - - ?term: factor (("*" | "/") factor)* - - ?factor: NUMBER - | "-" factor - | "(" expression ")" - - %import common.NUMBER -""" - -model = outlines.models.transformers("WizardLM/WizardMath-7B-V1.1") -generator = outlines.generate.cfg(model, arithmetic_grammar) -sequence = generator("Alice had 4 apples and Bob ate 2. Write an expression for Alice's apples:") - -print(sequence) -# (8-2) -``` - -This was a very simple grammar, and you can use `outlines.generate.cfg` to generate syntactically valid Python, SQL, and much more than this. Any kind of structured text, really. All you have to do is search for "X EBNF grammar" on the web, and take a look at the [Outlines `grammars` module](https://github.com/outlines-dev/outlines/tree/main/outlines/grammars). - -### Open functions - -Outlines can infer the structure of the output from the signature of a function. The result is a dictionary, and can be passed directly to the function using the usual dictionary expansion syntax `**`: - -```python -import outlines - - -def add(a: int, b: int): - return a + b - -model = outlines.models.transformers("WizardLM/WizardMath-7B-V1.1") -generator = outlines.generate.json(model, add) -result = generator("Return json with two integers named a and b respectively. a is odd and b even.") - -print(add(**result)) -# 3 -``` - -A great advantage of passing functions directly to specify the structure is that the structure of the LLM will change with the function's definition. No need to change the code at several places! - -## Prompting - -Building prompts can get messy. **Outlines** makes it easier to write and manage -prompts by encapsulating templates inside "template functions". - -These functions make it possible to neatly separate the prompt logic from the -general program logic; they can be imported from other modules and libraries. - -Template functions require no superfluous abstraction, they use the Jinja2 -templating engine to help build complex prompts in a concise manner: - -``` python -import outlines - -examples = [ - ("The food was disgusting", "Negative"), - ("We had a fantastic night", "Positive"), - ("Recommended", "Positive"), - ("The waiter was rude", "Negative") -] - -@outlines.prompt -def labelling(to_label, examples): - """You are a sentiment-labelling assistant. - - {% for example in examples %} - {{ example[0] }} // {{ example[1] }} - {% endfor %} - {{ to_label }} // - """ - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") -prompt = labelling("Just awesome", examples) -answer = outlines.generate.text(model)(prompt, max_tokens=100) -``` - -## Join us - -- πŸ’‘ **Have an idea?** Come chat with us on [Discord][discord] -- πŸ”¨ **Want to contribute?** Consult our [contribution guide](https://outlines-dev.github.io/outlines/community/contribute/). -- 🐞 **Found a bug?** Open an [issue](https://github.com/outlines-dev/outlines/issues) - - -## Cite Outlines - -``` -@article{willard2023efficient, - title={Efficient Guided Generation for LLMs}, - author={Willard, Brandon T and Louf, R{\'e}mi}, - journal={arXiv preprint arXiv:2307.09702}, - year={2023} -} -``` - -[contributors]: https://github.com/outlines-dev/outlines/graphs/contributors -[contributors-badge]: https://img.shields.io/github/contributors/outlines-dev/outlines?style=flat-square&logo=github&logoColor=white&color=ECEFF4 -[dottxt-twitter]: https://twitter.com/dottxtai -[outlines-twitter]: https://twitter.com/OutlinesOSS -[discord]: https://discord.gg/R9DSu34mGd -[discord-badge]: https://img.shields.io/discord/1182316225284554793?color=81A1C1&logo=discord&logoColor=white&style=flat-square -[downloads-badge]: https://img.shields.io/pypi/dm/outlines?color=89AC6B&logo=python&logoColor=white&style=flat-square -[pypistats]: https://pypistats.org/packages/outlines -[dottxt-twitter-badge]: https://img.shields.io/twitter/follow/dottxtai?style=social -[outlines-twitter-badge]: https://img.shields.io/twitter/follow/OutlinesOSS?style=social +# Outlines-core diff --git a/benchmarks/asv.conf.json b/benchmarks/asv.conf.json index f57db9a0..3dc3f620 100644 --- a/benchmarks/asv.conf.json +++ b/benchmarks/asv.conf.json @@ -1,7 +1,7 @@ { "version": 1, - "project": "Outlines", - "project_url": "https://outlines-dev.github.io/outlines/", + "project": "Outlines-core", + "project_url": "https://outlines-dev.github.io/outlines-core/", "repo": "..", "branches": [ "HEAD" @@ -11,7 +11,7 @@ "PIP_NO_BUILD_ISOLATION=false python -mpip wheel --no-deps --no-index -w {build_cache_dir} {build_dir}", ], "environment_type": "virtualenv", - "show_commit_url": "https://github.com/outlines-dev/outlines/commit/", + "show_commit_url": "https://github.com/outlines-dev/outlines-core/commit/", "benchmark_dir": ".", "env_dir": "env", "results_dir": "results", diff --git a/benchmarks/bench_json_schema.py b/benchmarks/bench_json_schema.py index 8d1ceeb2..c85982c7 100644 --- a/benchmarks/bench_json_schema.py +++ b/benchmarks/bench_json_schema.py @@ -1,6 +1,6 @@ -from outlines.caching import cache_disabled -from outlines.fsm.guide import RegexGuide -from outlines.fsm.json_schema import build_regex_from_schema +from outlines_core.caching import cache_disabled +from outlines_core.fsm.guide import RegexGuide +from outlines_core.fsm.json_schema import build_regex_from_schema from .common import ensure_numba_compiled, setup_tokenizer # noqa: E402 diff --git a/benchmarks/bench_numba_compile.py b/benchmarks/bench_numba_compile.py index 2713707e..35edc953 100644 --- a/benchmarks/bench_numba_compile.py +++ b/benchmarks/bench_numba_compile.py @@ -3,8 +3,8 @@ import interegular import numba -from outlines.caching import cache_disabled -from outlines.fsm import regex +from outlines_core.caching import cache_disabled +from outlines_core.fsm import regex from .common import setup_tokenizer diff --git a/benchmarks/bench_regex_guide.py b/benchmarks/bench_regex_guide.py index 099f94df..eeb1f983 100644 --- a/benchmarks/bench_regex_guide.py +++ b/benchmarks/bench_regex_guide.py @@ -1,5 +1,5 @@ -from outlines.caching import cache_disabled -from outlines.fsm.guide import RegexGuide +from outlines_core.caching import cache_disabled +from outlines_core.fsm.guide import RegexGuide from .common import ensure_numba_compiled, setup_tokenizer diff --git a/benchmarks/common.py b/benchmarks/common.py index 7d999ea9..db25593d 100644 --- a/benchmarks/common.py +++ b/benchmarks/common.py @@ -1,7 +1,7 @@ from transformers import AutoTokenizer -from outlines.fsm.guide import RegexGuide -from outlines.models.transformers import TransformerTokenizer +from outlines_core.fsm.guide import RegexGuide +from outlines_core.models.transformers import TransformerTokenizer def setup_tokenizer(): diff --git a/environment.yml b/environment.yml index c267f86a..3e7a92bb 100644 --- a/environment.yml +++ b/environment.yml @@ -3,7 +3,7 @@ # $ conda env create -f environment.yml # `mamba` works too for this command # $ conda activate outlines-dev # -name: outlines-dev +name: outlines-core-dev channels: - conda-forge - huggingface @@ -12,7 +12,6 @@ dependencies: - jinja2 - numpy - pydantic - - scipy - pytest - pre-commit - referencing diff --git a/outlines/fsm/parsing.py b/outlines/fsm/parsing.py deleted file mode 100644 index e4fa7b76..00000000 --- a/outlines/fsm/parsing.py +++ /dev/null @@ -1,870 +0,0 @@ -from copy import copy, deepcopy -from dataclasses import dataclass -from functools import lru_cache -from typing import Any, Dict, FrozenSet, Iterator, Optional, Set, Tuple, Union - -import interegular -from interegular.fsm import FSM -from interegular.patterns import Unsupported -from lark import Lark, Token -from lark.common import LexerConf, ParserConf -from lark.exceptions import LexError, UnexpectedInput -from lark.indenter import Indenter -from lark.lexer import ( - BasicLexer, - ContextualLexer, - LexerState, - LexerThread, - Scanner, - UnexpectedCharacters, - UnexpectedToken, - _create_unless, -) -from lark.parser_frontends import ( - ParsingFrontend, - PostLexConnector, - _validate_frontend_args, -) -from lark.parsers.lalr_analysis import ( - Action, - IntParseTable, - LALR_Analyzer, - ParseTable, - Shift, -) -from lark.parsers.lalr_interactive_parser import InteractiveParser -from lark.parsers.lalr_parser import LALR_Parser, ParseConf, ParserState, _Parser - -from outlines.fsm.regex import ( - fsm_union, - get_sub_fsms_from_seq, - get_token_transition_keys, - make_deterministic_fsm, - walk_fsm, -) - -PartialParseState = Tuple[str, int] -ParseStateType = Union[int, FrozenSet] - - -@dataclass -class PartialTerminalInfo: - priority: int - terminal_name: str - can_transition: bool - is_final: bool - - -@dataclass -class PartialTokensInfo: - fsm_state_seq: Tuple[int, ...] - is_not_finished: bool - terminals_and_info: Tuple[PartialTerminalInfo, ...] - final_terminals_and_info: Tuple[PartialTerminalInfo, ...] - - -class PartialParserConf(ParserConf): - __serialize_fields__ = ( - "rules", - "start", - "parser_type", - "deterministic", - "use_value_stack", - ) - - def __init__(self, rules, callbacks, start, deterministic, use_value_stack): - super().__init__(rules, callbacks, start) - self.deterministic = deterministic - self.use_value_stack = use_value_stack - - -class PartialLark(Lark): - __serialize_fields__ = ( - "parser", - "rules", - "options", - "deterministic", - "use_value_stack", - ) - - def __init__(self, grammar, **options): - # TODO: Could've extended `LarkOptions`, but all these extensions are - # already way too much (and brittle). This library really needs a - # complete refactoring. - self.deterministic = options.pop("deterministic", False) - self.use_value_stack = options.pop("use_value_stack", False) - options["regex"] = True - super().__init__(grammar, **options) - assert self.options.parser == "lalr" - - def _build_lexer(self, dont_ignore: bool = False) -> "PartialBasicLexer": - lexer_conf = self.lexer_conf - if dont_ignore: - from copy import copy - - lexer_conf = copy(lexer_conf) - lexer_conf.ignore = () - - return PartialBasicLexer(lexer_conf) - - def _build_parser(self) -> "PartialParsingFrontend": - self._prepare_callbacks() - _validate_frontend_args(self.options.parser, self.options.lexer) - parser_conf = PartialParserConf( - self.rules, - self._callbacks, - self.options.start, - self.deterministic, - self.use_value_stack, - ) - - # This is `_construct_parsing_frontend` expanded/inlined - parser_type = self.options.parser - lexer_type = self.options.lexer - lexer_conf = self.lexer_conf - - assert isinstance(lexer_conf, LexerConf) - assert isinstance(parser_conf, ParserConf) - parser_conf.parser_type = parser_type - self.lexer_conf.lexer_type = lexer_type - return PartialParsingFrontend(lexer_conf, parser_conf, self.options) - - def __repr__(self): - return "{}(open({!r}), parser={!r}, lexer={!r}, ...)".format( - type(self).__name__, - self.source_path, - self.options.parser, - self.options.lexer, - ) - - def parse_from_state(self, parse_state: "PartialParseState", is_end=False): - return self.parser.parser.parser.parse_from_state(parse_state, is_end=is_end) - - -class PartialLexerThread(LexerThread): - def __copy__(self): - return type(self)(copy(self.lexer), copy(self.state)) - - def __repr__(self): - return f"{type(self).__name__}(lexer={self.lexer!r}, state={self.state!r})" - - -class PartialPostLexConnector(PostLexConnector): - def __copy__(self): - return type(self)(self.lexer, copy(self.postlexer)) - - def __repr__(self): - return ( - f"{type(self).__name__}(lexer={self.lexer!r}, postlexer={self.postlexer!r})" - ) - - -class PartialParsingFrontend(ParsingFrontend): - def __init__(self, lexer_conf, parser_conf, options, parser=None): - assert parser_conf.parser_type == "lalr" - - options._plugins["LALR_Parser"] = PartialLALRParser - options._plugins["BasicLexer"] = PartialBasicLexer - options._plugins["ContextualLexer"] = PartialContextualLexer - options._plugins["LexerThread"] = PartialLexerThread - - super().__init__(lexer_conf, parser_conf, options, parser=parser) - - if lexer_conf.postlex: - self.lexer = PartialPostLexConnector(self.lexer.lexer, lexer_conf.postlex) - - self._termset_fsm_info = None - self._symbols_to_states: Optional[ - Dict[str, Set[Tuple[ParseStateType, Action]]] - ] = None - self._reverse_shifts: Optional[ - Dict[ParseStateType, Dict[str, Set[ParseStateType]]] - ] = None - # self._state_transition_map: Optional[ - # Dict[Tuple[ParseStateType, str], Set[ParseStateType]] - # ] = None - - def _compute_maps( - self, - ): - """Compute state transition and symbols-to-states maps.""" - self._reverse_shifts = {} - self._symbols_to_states = {} - - parse_table = self.parser.parser.parse_table - - for from_state, symbols_to_ops in parse_table.states.items(): - for symbol, op in symbols_to_ops.items(): - if op[0] == Shift: - symbols_to_from_states = self._reverse_shifts.setdefault(op[1], {}) - symbols_to_from_states.setdefault(symbol, set()).add(from_state) - self._symbols_to_states.setdefault(symbol, set()).add((from_state, op)) - - # # TODO: This approach is very wasteful. - # context_lexer = get_contextual_lexer(self) - # self._state_transition_map = {} - # - # for from_state, transitions in parse_table.states.items(): - # for symbol, action in transitions.items(): - # # TODO: Filter non-terminals - # if symbol not in context_lexer.root_lexer.terminals_by_name: - # continue - # - # if action[0] is Shift: - # self._state_transition_map.setdefault( - # (from_state, symbol), set() - # ).add(action[1]) - # continue - # - # antecedent_state_seqs = parse_to_terminal(self, [(from_state,)], symbol) - # - # for antecedent_state_seq in antecedent_state_seqs: - # antecedent_state = antecedent_state_seq[-1] - # self._state_transition_map.setdefault( - # (from_state, symbol), set() - # ).add(antecedent_state) - - def _compute_termset_fsm_info(self): - """Collect and return information about terminal symbol sets and their FSMs. - - Terminal symbol sets (or "termsets") are ordered sequences of terminal - symbols that are used by each parser state. Associated with each is a - collection of FSMs for each terminal and a single parse state FSM that is - the union of each terminal's FSM. - - This constructs a list of tuples containing the termset, the set of - parse states that use the termsets, parse state FSMs, and information - mapping the components of the parse state FSMs to their terminal symbol - FSMs. - - """ - context_lexer = get_contextual_lexer(self) - termsets_to_fsms = {} - termsets_to_parse_states: Dict[Tuple[str, ...], Set[ParseStateType]] = {} - for parse_state, lexer in context_lexer.lexers.items(): - scanner = lexer.scanner - key = tuple(term.name for term in scanner.terminals) - termsets_to_fsms[key] = (scanner.fsm, scanner.fsms_to_trans_finals) - termsets_to_parse_states.setdefault(key, set()).add(parse_state) - - self._termset_fsm_info = [ - ( - termset, - frozenset(termsets_to_parse_states[termset]), - fsm, - fsms_to_trans_finals, - ) - for termset, (fsm, fsms_to_trans_finals) in termsets_to_fsms.items() - ] - - @property - def termset_fsm_info(self): - if self._termset_fsm_info is None: - self._compute_termset_fsm_info() - return self._termset_fsm_info - - @property - def symbols_to_states(self): - if self._symbols_to_states is None: - self._compute_maps() - return self._symbols_to_states - - @property - def reverse_shifts(self): - if self._reverse_shifts is None: - self._compute_maps() - return self._reverse_shifts - - # @property - # def state_transition_map(self): - # if self._state_transition_map is None: - # self._compute_maps() - # return self._state_transition_map - - -class PartialLALRParser(LALR_Parser): - def __init__(self, parser_conf, debug=False, strict=False): - analysis = LALR_Analyzer( - parser_conf, debug=debug if not parser_conf.deterministic else True - ) - analysis.compute_lalr() - callbacks = parser_conf.callbacks - - self.parser_conf = parser_conf - self._parse_table = analysis.parse_table - - if parser_conf.deterministic: - old_to_new = {} - - def to_tuple(v): - new = old_to_new.get(v) - if new is None: - new = tuple(sorted(v, key=lambda y: str(y))) - old_to_new[v] = new - return new - - enum = sorted( - self._parse_table.states.keys(), - key=lambda x: str(sorted(x, key=lambda y: str(y))), - ) - - new_states = {} - for s in enum: - transitions = { - term: op if op[0] is not Shift else (op[0], to_tuple(op[1])) - for term, op in self._parse_table.states[s].items() - } - new_states[to_tuple(s)] = transitions - - self._parse_table = type(self._parse_table)( - new_states, - {k: to_tuple(v) for k, v in self._parse_table.start_states.items()}, - {k: to_tuple(v) for k, v in self._parse_table.end_states.items()}, - ) - - if not debug: - self._parse_table = IntParseTable.from_ParseTable(self._parse_table) - self.states_to_rulesets = dict( - zip(self._parse_table.states.keys(), new_states.keys()) - ) - - self.parser = PartialParser( - self._parse_table, - callbacks, - debug, - use_value_stack=parser_conf.use_value_stack, - ) - - @classmethod - def deserialize(cls, data, memo, callbacks, debug=False): - inst = cls.__new__(cls) - inst._parse_table = ParseTable.deserialize(data, memo) - inst.parser = PartialParser(inst._parse_table, callbacks, debug) - return inst - - -class PartialParserState(ParserState): - __slots__ = "use_value_stack" - - def __init__( - self, - parse_conf, - lexer, - state_stack=None, - value_stack=None, - use_value_stack=False, - ): - super().__init__( - parse_conf, lexer, state_stack=state_stack, value_stack=value_stack - ) - self.use_value_stack = use_value_stack - - def feed_token(self, token, is_end=False): - if token.type == "partial": - # If none of the potential terminals can transition, we need to know now - current_state = self.state_stack[-1] - current_lexer = get_contextual_lexer(self.lexer).lexers[current_state] - - # We have to feed the token and determine whether or not at least - # one terminal is consistent with the stack; otherwise, we'll miss - # invalid REDUCE cases. - # TODO: We should track separate parses conditional on possible - # token/symbol types, then we can coherently reuse the following - # results instead of recomputing it later. - can_transition = False - for terminal_info in token.value.terminals_and_info: - if terminal_info.terminal_name not in current_lexer.ignore_types: - test_token = Token.new_borrow_pos( - terminal_info.terminal_name, "", token - ) - - stack = copy(self.state_stack) - try: - self.feed_token_no_stack(test_token, is_end=is_end) - can_transition = True - break - except UnexpectedToken: - continue - finally: - self.state_stack = stack - else: - can_transition = True - - if not can_transition: - expected = { - s - for s in self.parse_conf.states[current_state].keys() - if s.isupper() - } - raise UnexpectedToken( - token, expected, state=self, interactive_parser=None - ) - - elif self.use_value_stack: - super().feed_token(token, is_end=is_end) - else: - self.feed_token_no_stack(token, is_end=is_end) - - def feed_token_no_stack(self, token, is_end=False): - """ - This is a copy of `ParserState.feed_token` with all the value stack - steps removed. Since we're not exactly parsing in order to obtain a - CST or anything similar, we can avoid the growing expense of tracking - the parse tree. - """ - state_stack = self.state_stack - states = self.parse_conf.states - end_state = self.parse_conf.end_state - - while True: - state = state_stack[-1] - try: - action, arg = states[state][token.type] - except KeyError: - expected = {s for s in states[state].keys() if s.isupper()} - raise UnexpectedToken( - token, expected, state=self, interactive_parser=None - ) - - assert arg != end_state - - if action is Shift: - # shift once and return - assert not is_end - state_stack.append(arg) - return - else: - # reduce+shift as many times as necessary - rule = arg - size = len(rule.expansion) - if size: - del state_stack[-size:] - - _action, new_state = states[state_stack[-1]][rule.origin.name] - assert _action is Shift - state_stack.append(new_state) - - if is_end and state_stack[-1] == end_state: - return - - def __copy__(self): - return type(self)( - self.parse_conf, - copy(self.lexer), - copy(self.state_stack), - deepcopy(self.value_stack), - use_value_stack=self.use_value_stack, - ) - - def __repr__(self): - return f"{type(self).__name__}(lexer={self.lexer!r}, state_stack={self.state_stack!r})" - - -class PartialParser(_Parser): - def __init__(self, parse_table, callbacks, debug=False, use_value_stack=False): - super().__init__(parse_table, callbacks, debug=debug) - self.use_value_stack = use_value_stack - - def parse( - self, lexer, start, value_stack=None, state_stack=None, start_interactive=False - ): - parse_conf = ParseConf(self.parse_table, self.callbacks, start) - parser_state = PartialParserState( - parse_conf, copy(lexer), state_stack, value_stack, self.use_value_stack - ) - if start_interactive: - return InteractiveParser(self, parser_state, parser_state.lexer) - return self.parse_from_state(parser_state) - - def parse_from_state(self, state, last_token=None, is_end=False): - try: - token = last_token - for token in state.lexer.lex(state): - state.feed_token(token) - - if is_end and (not token or token.type != "partial"): - end_token = ( - Token.new_borrow_pos("$END", "", token) - if token - else Token("$END", "", 0, 1, 1) - ) - state.feed_token(end_token, True) - - return state - except UnexpectedInput as e: - try: - e.interactive_parser = InteractiveParser(self, state, state.lexer) - except NameError: - pass - raise e - except Exception: - if self.debug: - print("") - print("STATE STACK DUMP") - print("----------------") - for i, s in enumerate(state.state_stack): - print("%d)" % i, s) - print("") - - raise - - -class PartialScanner(Scanner): - @classmethod - @lru_cache - def construct_terminal_fsm(cls, terminal): - # TODO: This should really be done at the lexer/parser level so that - # the lifetime of these objects is tied to the parser itself. - regex_str = terminal.pattern.to_regexp() - pattern = interegular.parse_pattern(regex_str) - fsm, _ = make_deterministic_fsm(pattern.to_fsm().reduce()) - return fsm, pattern.prefix_postfix - - def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_whole=False): - self.terminals = terminals - self.g_regex_flags = g_regex_flags - self.use_bytes = use_bytes - self.match_whole = match_whole - self.allowed_types = {t.name for t in self.terminals} - self._mres = None - - fsms = [] - for t in self.terminals: - fsm, prefix_postfix = self.construct_terminal_fsm(t) - - # TODO FIXME: We don't support this right now. - assert prefix_postfix == (0, 0) - - fsms.append(fsm) - - self.fsm, self.fsms_to_trans_finals = fsm_union(fsms) - - def get_terminals_info( - self, fsm_state_seq - ) -> Tuple[Tuple[PartialTerminalInfo, ...], Tuple[PartialTerminalInfo, ...]]: - """Get the possible terminal symbols for an FSM state sequence.""" - terminals_and_info: Tuple[PartialTerminalInfo, ...] = () - final_terminals_and_info: Tuple[PartialTerminalInfo, ...] = () - for i, (fsm_id, fsm_reads_more, in_final) in enumerate( - get_sub_fsms_from_seq(fsm_state_seq, self.fsms_to_trans_finals) - ): - terminal_name = self.terminals[fsm_id].name - info = PartialTerminalInfo(i, terminal_name, fsm_reads_more, in_final) - terminals_and_info += (info,) - if in_final: - final_terminals_and_info += (info,) - - return terminals_and_info, final_terminals_and_info - - def match(self, text, pos, last_fsm_state_seq: Optional[Tuple[int, ...]] = None): - """Determine an FSM match over `text` starting at `pos` and continuing `last_fsm_state_seq`.""" - - start_pos = pos - - if last_fsm_state_seq: - assert len(last_fsm_state_seq) > 1 - start_pos += len(last_fsm_state_seq) - 1 - start_state = last_fsm_state_seq[-1] - else: - start_state = self.fsm.initial - - text_part = text[start_pos:] - - text_transitions = get_token_transition_keys( - self.fsm.fsm_info.alphabet_symbol_mapping, - self.fsm.fsm_info.alphabet_anything_value, - text_part, - ) - - state_seq = walk_fsm( - self.fsm, - text_transitions, - start_state, - full_match=self.match_whole, - ) - - if not state_seq: - return None - - if last_fsm_state_seq: - res = last_fsm_state_seq + tuple(state_seq) - else: - res = (start_state,) + tuple(state_seq) - - return res - - -class PartialContextualLexer(ContextualLexer): - def __init__(self, conf: "LexerConf", states, always_accept=()): - terminals = list(conf.terminals) - terminals_by_name = conf.terminals_by_name - - trad_conf = copy(conf) - trad_conf.terminals = terminals - - lexer_by_symbols: Dict = {} - self.lexers = {} - for state, accepts in states.items(): - key = frozenset(accepts) - try: - lexer = lexer_by_symbols[key] - except KeyError: - accepts = set(accepts) | set(conf.ignore) | set(always_accept) - lexer_conf = copy(trad_conf) - lexer_conf.terminals = [ - terminals_by_name[n] for n in accepts if n in terminals_by_name - ] - lexer = PartialBasicLexer(lexer_conf) - lexer_by_symbols[key] = lexer - - self.lexers[state] = lexer - - assert trad_conf.terminals is terminals - self.root_lexer = PartialBasicLexer(trad_conf) - - def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]: - try: - while True: - lexer = self.lexers[parser_state.position] - yield lexer.next_token(lexer_state, parser_state) - except EOFError: - pass - - -class PartialBasicLexer(BasicLexer): - def __init__(self, conf: "LexerConf"): - super().__init__(conf) - # Eagerly construct the scanner - self._build_scanner() - - def _build_scanner(self): - # This seems incredibly convoluted: `lark` creates callback-triggered - # nested scanners for regex-defined terminals that overlap with - # string-defined terminals when both types of terminals have the same - # priority. Unless I'm missing something important, why not simply - # reorder the terminals so that the string-defined ones come before the - # regex-defined ones? - terminals, self.callback = _create_unless( - self.terminals, self.g_regex_flags, self.re, self.use_bytes - ) - - # We can't let people arbitrarily mess with the scanning process. - assert not self.user_callbacks - # for type_, f in self.user_callbacks.items(): - # if type_ in self.callback: - # # Already a callback there, probably UnlessCallback - # self.callback[type_] = CallChain( - # self.callback[type_], f, lambda t: t.type == type_ - # ) - # else: - # self.callback[type_] = f - - # We used the "callback" results to reorder the terminals (see the - # comments above). - for terminal_name, callback in self.callback.items(): - terminal = self.terminals_by_name[terminal_name] - for sub_terminal in callback.scanner.terminals: - self.terminals.remove(sub_terminal) - idx = self.terminals.index(terminal) - self.terminals.insert(idx, sub_terminal) - - self._scanner = PartialScanner( - self.terminals, self.g_regex_flags, self.re, self.use_bytes - ) - - def match(self, text, pos, last_fsm_state_seq=None): - return self.scanner.match(text, pos, last_fsm_state_seq) - - def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token: - last_token = lex_state.last_token - - last_fsm_state_seq = None - if last_token and last_token.type == "partial": - # Continue from last partial lexer state - last_fsm_state_seq = last_token.value.fsm_state_seq - - line_ctr = lex_state.line_ctr - end_pos = line_ctr.char_pos + ( - len(last_fsm_state_seq) - 1 if last_fsm_state_seq else 0 - ) - while end_pos < len(lex_state.text): - res = self.match(lex_state.text, line_ctr.char_pos, last_fsm_state_seq) - - if not res: - if ( - not last_fsm_state_seq - or last_fsm_state_seq[-1] not in self.scanner.fsm.finals - ): - allowed = self.scanner.allowed_types - self.ignore_types - if not allowed: - allowed = {""} - raise UnexpectedCharacters( - lex_state.text, - line_ctr.char_pos, - line_ctr.line, - line_ctr.column, - allowed=allowed, - token_history=lex_state.last_token and [lex_state.last_token], - state=parser_state, - terminals_by_name=self.terminals_by_name, - ) - - # The partial match might be complete now - fsm_state_seq = last_token.value.fsm_state_seq - terminals_and_info = last_token.value.terminals_and_info - final_terminals_and_info = last_token.value.final_terminals_and_info - else: - fsm_state_seq = res - ( - terminals_and_info, - final_terminals_and_info, - ) = self.scanner.get_terminals_info(fsm_state_seq) - - priority_terminal_info = ( - final_terminals_and_info[0] - if final_terminals_and_info - else terminals_and_info[0] - ) - - is_not_finished = ( - not priority_terminal_info.is_final - or priority_terminal_info.can_transition - or len(terminals_and_info) > 1 - ) - - start_pos = line_ctr.char_pos - end_pos = start_pos + len(fsm_state_seq) - 1 - - if end_pos >= len(lex_state.text) and is_not_finished: - type_name = "partial" - token_value = PartialTokensInfo( - fsm_state_seq, - is_not_finished, - terminals_and_info, - final_terminals_and_info, - ) - # Don't update the line counter states until we've finished - value = "" - else: - type_name = priority_terminal_info.terminal_name - # The token value should contain all partial scan parts in this - # case - value = token_value = lex_state.text[start_pos:end_pos] - - assert isinstance(self.callback, Dict) - - if type_name not in self.ignore_types: - t = Token( - type_name, - token_value, - line_ctr.char_pos, - line_ctr.line, - line_ctr.column, - ) - - line_ctr.feed(value, type_name in self.newline_types) - - t.end_line = line_ctr.line - t.end_column = line_ctr.column - t.end_pos = line_ctr.char_pos - if t.type in self.callback: - t = self.callback[t.type](t) - if not isinstance(t, Token): - raise LexError( - "Callbacks must return a token (returned %r)" % t - ) - lex_state.last_token = t - return t - - if type_name in self.callback: - t2 = Token( - type_name, value, line_ctr.char_pos, line_ctr.line, line_ctr.column - ) - self.callback[type_name](t2) - - line_ctr.feed(value, type_name in self.newline_types) - - last_fsm_state_seq = None - - raise EOFError(self) - - -class PartialIndenter(Indenter): - """An `Indenter` that doesn't reset its state every time `process` is called.""" - - def process(self, stream): - return self._process(stream) - - def _process(self, stream): - for token in stream: - # These were previously *after* the `yield`, but that makes the - # state tracking unnecessarily convoluted. - if token.type in self.OPEN_PAREN_types: - self.paren_level += 1 - elif token.type in self.CLOSE_PAREN_types: - self.paren_level -= 1 - if self.paren_level < 0: - raise UnexpectedToken(token, []) - - if token.type == self.NL_type: - yield from self.handle_NL(token) - else: - yield token - - # TODO: What do we want to do here? - # while len(self.indent_level) > 1: - # self.indent_level.pop() - # yield Token(self.DEDENT_type, "") - - def accepts_token_type(self, token_type): - if token_type in self.CLOSE_PAREN_types and self.paren_level - 1 < 0: - return False - - # TODO: - # if token_type == self.NL_type and self.paren_level == 0: - # ... - # return False - - return True - - def __copy__(self): - res = type(self)() - res.paren_level = self.paren_level - res.indent_level = copy(self.indent_level) - return res - - def __repr__(self): - return f"{type(self).__name__}(paren_level={self.paren_level!r}, indent_level={self.indent_level!r})" - - -class PartialPythonIndenter(PartialIndenter): - NL_type = "_NEWLINE" - OPEN_PAREN_types = ["LPAR", "LSQB", "LBRACE"] - CLOSE_PAREN_types = ["RPAR", "RSQB", "RBRACE"] - INDENT_type = "_INDENT" - DEDENT_type = "_DEDENT" - tab_len = 8 - - -def get_contextual_lexer(x: Union[PartialLexerThread, PartialParsingFrontend]): - if isinstance(x.lexer, ContextualLexer): - return x.lexer - else: - return x.lexer.lexer - - -def terminals_to_fsms(lp: PartialLark) -> Dict[str, FSM]: - """Construct a ``dict`` mapping terminal symbol names to their finite state machines.""" - - symbol_names_and_fsms = {} - for terminal in lp.terminals: - pattern = interegular.parse_pattern(terminal.pattern.to_regexp()) - # TODO: Use `pyparser.terminals[0].pattern.flags`? - try: - fsm, _ = make_deterministic_fsm(pattern.to_fsm().reduce()) - except Unsupported: - fsm = None - - symbol_names_and_fsms[terminal.name] = fsm - - return symbol_names_and_fsms diff --git a/pyproject.toml b/pyproject.toml index e8d1abf2..e828e20d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,9 +3,9 @@ requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] build-backend = "setuptools.build_meta" [project] -name = "outlines" +name = "outlines_core" authors= [{name = "Outlines Developers"}] -description = "Probabilistic Generative Model Programming" +description = "Structured Text Generation in Rust" requires-python = ">=3.8" license = {text = "Apache-2.0"} keywords=[ @@ -25,9 +25,6 @@ classifiers = [ ] dependencies = [ "interegular", - "jinja2", - "lark", - "nest_asyncio", "numpy<2.0.0", "cloudpickle", "diskcache", @@ -35,12 +32,9 @@ dependencies = [ "numba", "referencing", "jsonschema", - "requests", "tqdm", "datasets", "typing_extensions", - "pycountry", - "pyairports", ] dynamic = ["version"] @@ -55,36 +49,30 @@ test = [ "diff-cover", "accelerate", "beartype<0.16.0", - "responses", "huggingface_hub", "torch", "transformers", "pillow", ] -serve = [ - "vllm>=0.3.0", - "uvicorn", - "fastapi", - "pydantic>=2.0", -] [project.urls] -homepage = "https://github.com/outlines-dev/outlines" -documentation = "https://outlines-dev.github.io/outlines/" -repository = "https://github.com/outlines-dev/outlines" +homepage = "https://github.com/outlines-dev/outlines-core" +documentation = "https://outlines-dev.github.io/outlines-core/" +repository = "https://github.com/outlines-dev/outlines-core/" [project.readme] file="README.md" content-type = "text/markdown" [tool.setuptools] -packages = ["outlines"] +packages = ["outlines_core"] +package-dir = {"" = "src"} [tool.setuptools.package-data] "outlines" = ["py.typed"] [tool.setuptools_scm] -write_to = "outlines/_version.py" +write_to = "src/outlines_core/_version.py" [tool.pytest.ini_options] testpaths = ["tests"] @@ -104,10 +92,7 @@ enable_incomplete_feature = ["Unpack"] [[tool.mypy.overrides]] module = [ - "exllamav2.*", - "jinja2", "jsonschema.*", - "nest_asyncio", "numpy.*", "cloudpickle.*", "diskcache.*", @@ -117,20 +102,15 @@ module = [ "torch.*", "transformers.*", "huggingface_hub", - "lark.*", "interegular.*", "datasets.*", "numba.*", - "requests.*", - "responses.*", - "uvicorn.*", - "fastapi.*", ] ignore_missing_imports = true [tool.coverage.run] omit = [ - "outlines/_version.py", + "outlines_core/_version.py", "tests/*", ] branch = true diff --git a/outlines/__init__.py b/src/outlines_core/__init__.py similarity index 55% rename from outlines/__init__.py rename to src/outlines_core/__init__.py index f8d13c66..1a322f2b 100644 --- a/outlines/__init__.py +++ b/src/outlines_core/__init__.py @@ -1,10 +1,9 @@ """Outlines is a Generative Model Programming Framework.""" -import outlines.models -from outlines.caching import clear_cache, disable_cache, get_cache +import outlines_core.models +from outlines_core.caching import clear_cache, disable_cache, get_cache __all__ = [ "clear_cache", "disable_cache", "get_cache", - "vectorize", ] diff --git a/outlines/caching.py b/src/outlines_core/caching.py similarity index 95% rename from outlines/caching.py rename to src/outlines_core/caching.py index 6fdda621..92a08415 100644 --- a/outlines/caching.py +++ b/src/outlines_core/caching.py @@ -48,10 +48,12 @@ def get_cache(): environment variable. """ - from outlines._version import __version__ as outlines_version # type: ignore + from outlines_core._version import ( + __version__ as outlines_core_version, # type: ignore + ) home_dir = os.path.expanduser("~") - cache_dir = os.environ.get("OUTLINES_CACHE_DIR", f"{home_dir}/.cache/outlines") + cache_dir = os.environ.get("OUTLINES_CACHE_DIR", f"{home_dir}/.cache/outlines-core") memory = Cache( cache_dir, eviction_policy="none", @@ -60,9 +62,9 @@ def get_cache(): ) # ensure if version upgrade occurs, old cache is pruned - if outlines_version != memory.get("__version__"): + if outlines_core_version != memory.get("__version__"): memory.clear() - memory["__version__"] = outlines_version + memory["__version__"] = outlines_core_version return memory diff --git a/outlines/fsm/__init__.py b/src/outlines_core/fsm/__init__.py similarity index 100% rename from outlines/fsm/__init__.py rename to src/outlines_core/fsm/__init__.py diff --git a/outlines/fsm/fsm.py b/src/outlines_core/fsm/fsm.py similarity index 92% rename from outlines/fsm/fsm.py rename to src/outlines_core/fsm/fsm.py index bfcf55c0..4daf3c86 100644 --- a/outlines/fsm/fsm.py +++ b/src/outlines_core/fsm/fsm.py @@ -1,10 +1,10 @@ import warnings from typing import TYPE_CHECKING, Iterable, NewType, Optional -from outlines.fsm.guide import RegexGuide, StopAtEOSGuide +from outlines_core.fsm.guide import RegexGuide, StopAtEOSGuide if TYPE_CHECKING: - from outlines.models.tokenizer import Tokenizer + from outlines_core.models.tokenizer import Tokenizer FSMState = NewType("FSMState", int) diff --git a/outlines/fsm/guide.py b/src/outlines_core/fsm/guide.py similarity index 98% rename from outlines/fsm/guide.py rename to src/outlines_core/fsm/guide.py index c846c441..3773505d 100644 --- a/outlines/fsm/guide.py +++ b/src/outlines_core/fsm/guide.py @@ -14,15 +14,15 @@ import interegular import torch -from outlines.caching import cache -from outlines.fsm.regex import ( +from outlines_core.caching import cache +from outlines_core.fsm.regex import ( create_fsm_index_tokenizer, make_byte_level_fsm, make_deterministic_fsm, ) if TYPE_CHECKING: - from outlines.models.tokenizer import Tokenizer + from outlines_core.models.tokenizer import Tokenizer @dataclass(frozen=True) diff --git a/outlines/fsm/json_schema.py b/src/outlines_core/fsm/json_schema.py similarity index 100% rename from outlines/fsm/json_schema.py rename to src/outlines_core/fsm/json_schema.py diff --git a/outlines/fsm/regex.py b/src/outlines_core/fsm/regex.py similarity index 99% rename from outlines/fsm/regex.py rename to src/outlines_core/fsm/regex.py index 8cfd81ea..3c06790a 100644 --- a/outlines/fsm/regex.py +++ b/src/outlines_core/fsm/regex.py @@ -29,7 +29,7 @@ from tqdm import tqdm if TYPE_CHECKING: - from outlines.models.tokenizer import Tokenizer + from outlines_core.models.tokenizer import Tokenizer class BetterAlphabet(Alphabet): diff --git a/outlines/fsm/types.py b/src/outlines_core/fsm/types.py similarity index 100% rename from outlines/fsm/types.py rename to src/outlines_core/fsm/types.py diff --git a/outlines/models/__init__.py b/src/outlines_core/models/__init__.py similarity index 100% rename from outlines/models/__init__.py rename to src/outlines_core/models/__init__.py diff --git a/outlines/models/tokenizer.py b/src/outlines_core/models/tokenizer.py similarity index 100% rename from outlines/models/tokenizer.py rename to src/outlines_core/models/tokenizer.py diff --git a/outlines/models/transformers.py b/src/outlines_core/models/transformers.py similarity index 99% rename from outlines/models/transformers.py rename to src/outlines_core/models/transformers.py index 10f8f248..e219d8a4 100644 --- a/outlines/models/transformers.py +++ b/src/outlines_core/models/transformers.py @@ -4,7 +4,7 @@ from datasets.fingerprint import Hasher -from outlines.models.tokenizer import Tokenizer +from outlines_core.models.tokenizer import Tokenizer if TYPE_CHECKING: import torch diff --git a/outlines/py.typed b/src/outlines_core/py.typed similarity index 100% rename from outlines/py.typed rename to src/outlines_core/py.typed diff --git a/tests/fsm/test_fsm.py b/tests/fsm/test_fsm.py index 94166fd9..bb074b0b 100644 --- a/tests/fsm/test_fsm.py +++ b/tests/fsm/test_fsm.py @@ -1,6 +1,6 @@ import pytest -from outlines.fsm.fsm import RegexFSM, StopAtEosFSM +from outlines_core.fsm.fsm import RegexFSM, StopAtEosFSM def assert_expected_tensor_ids(tensor, ids): diff --git a/tests/fsm/test_guide.py b/tests/fsm/test_guide.py index 9a66bc04..c48b1ad9 100644 --- a/tests/fsm/test_guide.py +++ b/tests/fsm/test_guide.py @@ -1,6 +1,6 @@ import pytest -from outlines.fsm.guide import Generate, RegexGuide, StopAtEOSGuide, Write +from outlines_core.fsm.guide import Generate, RegexGuide, StopAtEOSGuide, Write def assert_expected_tensor_ids(tensor, ids): diff --git a/tests/fsm/test_json_schema.py b/tests/fsm/test_json_schema.py index 21571da8..12b26912 100644 --- a/tests/fsm/test_json_schema.py +++ b/tests/fsm/test_json_schema.py @@ -6,7 +6,7 @@ import pytest from pydantic import BaseModel, Field, constr -from outlines.fsm.json_schema import ( +from outlines_core.fsm.json_schema import ( BOOLEAN, DATE, DATE_TIME, diff --git a/tests/fsm/test_regex.py b/tests/fsm/test_regex.py index f7aa4ae6..bf535eb4 100644 --- a/tests/fsm/test_regex.py +++ b/tests/fsm/test_regex.py @@ -4,7 +4,7 @@ import pytest from transformers import AutoTokenizer -from outlines.fsm.regex import ( +from outlines_core.fsm.regex import ( _walk_fsm, create_fsm_index_end_to_end, create_fsm_index_tokenizer, @@ -18,7 +18,7 @@ reduced_vocabulary, walk_fsm, ) -from outlines.models.transformers import TransformerTokenizer +from outlines_core.models.transformers import TransformerTokenizer def identity(s): @@ -533,7 +533,7 @@ def test_json_index_performance(): from line_profiler import LineProfiler # type: ignore [import] from pydantic import BaseModel, constr - import outlines + import outlines_core class Weapon(str, Enum): sword = "sword" @@ -557,16 +557,16 @@ class Character(BaseModel): # TODO: Add support for conint strength: int # conint(int, ge=0, le=100) - model = outlines.models.transformers("gpt2", device="cuda") + model = outlines_core.models.transformers("gpt2", device="cuda") json_schema = json.dumps(Character.model_json_schema()) def build_regex(): - regex_str = outlines.index.json_schema.build_regex_from_object(json_schema) - outlines.generate.regex(model, regex_str) + regex_str = outlines_core.index.json_schema.build_regex_from_object(json_schema) + outlines_core.generate.regex(model, regex_str) profiler = LineProfiler(create_fsm_index_end_to_end) profiler.add_function(create_fsm_index_tokenizer) - profiler.add_function(outlines.index.index.RegexFSM.__init__) + profiler.add_function(outlines_core.index.index.RegexFSM.__init__) profiler.runctx( "build_regex()", @@ -664,7 +664,7 @@ def convert_token_to_string(self, token): def test_numba_leading_null_byte_UnicodeCharSeq_remains_broken(): """Assert numba UnicodeCharSeq w/ leading \x00 is still broken""" # EXPLANATION: - # https://github.com/outlines-dev/outlines/pull/930#issuecomment-2143535968 + # https://github.com/outlines_core-dev/outlines/pull/930#issuecomment-2143535968 # from https://github.com/numba/numba/issues/9542 d = numba.typed.typeddict.Dict.empty(numba.types.UnicodeCharSeq(1), numba.int64) @@ -682,7 +682,7 @@ def test_numba_leading_null_byte_UnicodeCharSeq_remains_broken(): def test_numba_leading_null_byte_unicode_type_sane(input_key): """Assert numba unicode_type w/ leading \x00 is working""" # EXPLANATION: - # https://github.com/outlines-dev/outlines/pull/930#issuecomment-2143535968 + # https://github.com/outlines_core-dev/outlines/pull/930#issuecomment-2143535968 # from https://github.com/numba/numba/issues/9542 d = numba.typed.typeddict.Dict.empty(numba.types.unicode_type, numba.int64) diff --git a/tests/fsm/test_types.py b/tests/fsm/test_types.py index d5450434..2102db92 100644 --- a/tests/fsm/test_types.py +++ b/tests/fsm/test_types.py @@ -2,7 +2,7 @@ import pytest -from outlines.fsm.types import ( +from outlines_core.fsm.types import ( BOOLEAN, DATE, DATETIME, diff --git a/tests/models/test_tokenizer.py b/tests/models/test_tokenizer.py index 831f7fe3..95e9cc8f 100644 --- a/tests/models/test_tokenizer.py +++ b/tests/models/test_tokenizer.py @@ -1,6 +1,6 @@ import pytest -from outlines.models.tokenizer import Tokenizer +from outlines_core.models.tokenizer import Tokenizer def test_tokenizer(): diff --git a/tests/models/test_transformers.py b/tests/models/test_transformers.py index 1404d287..8ac8d466 100644 --- a/tests/models/test_transformers.py +++ b/tests/models/test_transformers.py @@ -3,7 +3,7 @@ from transformers import AutoTokenizer from transformers.models.gpt2 import GPT2TokenizerFast -from outlines.models.transformers import TransformerTokenizer, transformers +from outlines_core.models.transformers import TransformerTokenizer, transformers TEST_MODEL = "hf-internal-testing/tiny-random-GPTJForCausalLM" diff --git a/tests/test_cache.py b/tests/test_cache.py index eb4ec406..766d97ad 100644 --- a/tests/test_cache.py +++ b/tests/test_cache.py @@ -32,20 +32,20 @@ def test_cache(refresh_environment): """Initialize a temporary cache and delete it after the test has run.""" with tempfile.TemporaryDirectory() as tempdir: os.environ["OUTLINES_CACHE_DIR"] = tempdir - import outlines + import outlines_core - memory = outlines.get_cache() + memory = outlines_core.get_cache() assert memory.directory == tempdir - yield outlines.caching.cache() + yield outlines_core.caching.cache() memory.clear() def test_get_cache(test_cache): - import outlines + import outlines_core - memory = outlines.get_cache() + memory = outlines_core.get_cache() assert isinstance(memory, diskcache.Cache) # If the cache is enabled then the size @@ -70,9 +70,9 @@ def f(x): def test_disable_cache(test_cache): """Make sure that we can disable the cache.""" - import outlines + import outlines_core - outlines.disable_cache() + outlines_core.disable_cache() # If the cache is disabled then the size # of `store` should increase every time @@ -92,7 +92,7 @@ def f(x): def test_clear_cache(test_cache): """Make sure that we can clear the cache.""" - import outlines + import outlines_core store = list() @@ -110,7 +110,7 @@ def f(x): # The size of `store` should increase if we call `f` # after clearing the cache. - outlines.clear_cache() + outlines_core.clear_cache() f(1) assert len(store) == store_size + 1 @@ -118,14 +118,14 @@ def f(x): def test_version_upgrade_cache_invalidate(test_cache, mocker): """Ensure we can change the signature of a cached function if we upgrade the version""" - import outlines.caching + import outlines_core.caching def simulate_restart_outlines(): # clearing in-memory lru_cache which returns the diskcache in # order to simulate a reload, we're not clearing the diskcache itself - outlines.caching.get_cache.cache_clear() + outlines_core.caching.get_cache.cache_clear() - mocker.patch("outlines._version.__version__", new="0.0.0") + mocker.patch("outlines_core._version.__version__", new="0.0.0") simulate_restart_outlines() # initialize cache with signature of Tuple-of-3 @@ -148,7 +148,7 @@ def foo(): a, b = foo() # "restart" outlines WITH version upgrade - mocker.patch("outlines._version.__version__", new="0.0.1") + mocker.patch("outlines_core._version.__version__", new="0.0.1") simulate_restart_outlines() # change signature to Tuple-of-2 @@ -163,7 +163,7 @@ def foo(): def test_cache_disabled_decorator(test_cache): """Ensure cache can be disabled in a local scope""" - from outlines.caching import cache_disabled + from outlines_core.caching import cache_disabled mock = unittest.mock.MagicMock() From 5675353cf037da88e1032092c37c7480a4b147b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Louf?= Date: Thu, 15 Aug 2024 15:05:37 +0200 Subject: [PATCH 12/20] Remove the documentation --- .github/workflows/build_documentation.yml | 22 - .github/workflows/publish_documentation.yml | 30 -- docs/api/guide.md | 1 - docs/api/index.md | 1 - docs/api/json_schema.md | 1 - docs/api/models.md | 3 - docs/api/parsing.md | 1 - docs/api/prompts.md | 1 - docs/api/regex.md | 1 - docs/api/samplers.md | 1 - docs/assets/images/dottxt.png | Bin 42419 -> 0 bytes .../images/logits_processing_diagram.svg | 157 ------- docs/assets/images/logo.png | Bin 372647 -> 0 bytes docs/assets/images/normal_computing.jpg | Bin 64918 -> 0 bytes docs/blog/.authors.yml | 5 - docs/blog/assets/4000_stars.png | Bin 57307 -> 0 bytes docs/blog/index.md | 1 - docs/blog/posts/roadmap-2024.md | 91 ---- docs/community/belonging.png | Bin 142520 -> 0 bytes docs/community/contribute.md | 132 ------ docs/community/examples.md | 19 - docs/community/feedback.md | 81 ---- docs/community/index.md | 12 - docs/community/versioning.md | 26 -- docs/cookbook/chain_of_density.md | 125 ------ docs/cookbook/chain_of_thought.md | 138 ------ docs/cookbook/classification.md | 103 ----- docs/cookbook/dating_profiles.md | 229 ---------- docs/cookbook/deploy-using-bentoml.md | 224 ---------- docs/cookbook/deploy-using-cerebrium.md | 121 ------ docs/cookbook/deploy-using-modal.md | 128 ------ docs/cookbook/extraction.md | 87 ---- docs/cookbook/images/chain_of_density.png | Bin 515603 -> 0 bytes .../images/coding_structure_diagram.png | Bin 73586 -> 0 bytes .../images/knowledge-graph-extraction.png | Bin 33127 -> 0 bytes docs/cookbook/images/simtom.png | Bin 109657 -> 0 bytes docs/cookbook/index.md | 14 - docs/cookbook/knowledge_graph_extraction.md | 155 ------- docs/cookbook/models_playing_chess.md | 88 ---- docs/cookbook/qa-with-citations.md | 255 ----------- docs/cookbook/react_agent.md | 273 ------------ docs/cookbook/simtom.md | 129 ------ .../structured_generation_workflow.md | 215 ---------- docs/index.md | 26 -- docs/installation.md | 38 -- docs/licence.md | 34 -- docs/logos/amazon.png | Bin 19489 -> 0 bytes docs/logos/apple.png | Bin 21938 -> 0 bytes docs/logos/best_buy.png | Bin 22328 -> 0 bytes docs/logos/canoe.png | Bin 3719 -> 0 bytes docs/logos/cisco.png | Bin 5784 -> 0 bytes docs/logos/dassault_systems.png | Bin 21865 -> 0 bytes docs/logos/databricks.png | Bin 59004 -> 0 bytes docs/logos/datadog.png | Bin 32779 -> 0 bytes docs/logos/dbt_labs.png | Bin 13418 -> 0 bytes docs/logos/gladia.jpg | Bin 11198 -> 0 bytes docs/logos/harvard.png | Bin 31910 -> 0 bytes docs/logos/hf.png | Bin 91529 -> 0 bytes docs/logos/johns_hopkins.png | Bin 76335 -> 0 bytes docs/logos/meta.png | Bin 20763 -> 0 bytes docs/logos/mit.png | Bin 1483 -> 0 bytes docs/logos/mount_sinai.png | Bin 23749 -> 0 bytes docs/logos/nvidia.png | Bin 15146 -> 0 bytes docs/logos/nyu.png | Bin 30682 -> 0 bytes docs/logos/safran.png | Bin 24435 -> 0 bytes docs/logos/salesforce.png | Bin 20712 -> 0 bytes docs/logos/shopify.png | Bin 8003 -> 0 bytes docs/logos/smithsonian.png | Bin 35574 -> 0 bytes docs/logos/tinder.png | Bin 28182 -> 0 bytes docs/logos/upenn.png | Bin 97063 -> 0 bytes docs/overrides/index.html | 11 - docs/overrides/main.html | 22 - docs/quickstart.md | 228 ---------- docs/reference/functions.md | 1 - docs/reference/generation/cfg.md | 149 ------- docs/reference/generation/choices.md | 16 - docs/reference/generation/custom_fsm_ops.md | 37 -- docs/reference/generation/format.md | 23 - docs/reference/generation/generation.md | 216 ---------- docs/reference/generation/json.md | 105 ----- docs/reference/generation/regex.md | 27 -- .../structured_generation_explanation.md | 54 --- docs/reference/generation/types.md | 83 ---- docs/reference/index.md | 15 - docs/reference/models/exllamav2.md | 7 - docs/reference/models/llamacpp.md | 226 ---------- docs/reference/models/mlxlm.md | 89 ---- docs/reference/models/models.md | 53 --- docs/reference/models/openai.md | 170 -------- docs/reference/models/tgi.md | 3 - docs/reference/models/transformers.md | 148 ------- docs/reference/models/transformers_vision.md | 115 ----- docs/reference/models/vllm.md | 231 ---------- docs/reference/prompting.md | 403 ------------------ docs/reference/samplers.md | 115 ----- docs/reference/serve/vllm.md | 73 ---- docs/reference/text.md | 86 ---- docs/stylesheets/extra.css | 145 ------- docs/welcome.md | 183 -------- mkdocs.yml | 169 -------- requirements-doc.txt | 8 - 101 files changed, 6179 deletions(-) delete mode 100644 .github/workflows/build_documentation.yml delete mode 100644 .github/workflows/publish_documentation.yml delete mode 100644 docs/api/guide.md delete mode 100644 docs/api/index.md delete mode 100644 docs/api/json_schema.md delete mode 100644 docs/api/models.md delete mode 100644 docs/api/parsing.md delete mode 100644 docs/api/prompts.md delete mode 100644 docs/api/regex.md delete mode 100644 docs/api/samplers.md delete mode 100644 docs/assets/images/dottxt.png delete mode 100644 docs/assets/images/logits_processing_diagram.svg delete mode 100644 docs/assets/images/logo.png delete mode 100644 docs/assets/images/normal_computing.jpg delete mode 100644 docs/blog/.authors.yml delete mode 100644 docs/blog/assets/4000_stars.png delete mode 100644 docs/blog/index.md delete mode 100644 docs/blog/posts/roadmap-2024.md delete mode 100644 docs/community/belonging.png delete mode 100644 docs/community/contribute.md delete mode 100644 docs/community/examples.md delete mode 100644 docs/community/feedback.md delete mode 100644 docs/community/index.md delete mode 100644 docs/community/versioning.md delete mode 100644 docs/cookbook/chain_of_density.md delete mode 100644 docs/cookbook/chain_of_thought.md delete mode 100644 docs/cookbook/classification.md delete mode 100644 docs/cookbook/dating_profiles.md delete mode 100644 docs/cookbook/deploy-using-bentoml.md delete mode 100644 docs/cookbook/deploy-using-cerebrium.md delete mode 100644 docs/cookbook/deploy-using-modal.md delete mode 100644 docs/cookbook/extraction.md delete mode 100644 docs/cookbook/images/chain_of_density.png delete mode 100644 docs/cookbook/images/coding_structure_diagram.png delete mode 100644 docs/cookbook/images/knowledge-graph-extraction.png delete mode 100644 docs/cookbook/images/simtom.png delete mode 100644 docs/cookbook/index.md delete mode 100644 docs/cookbook/knowledge_graph_extraction.md delete mode 100644 docs/cookbook/models_playing_chess.md delete mode 100644 docs/cookbook/qa-with-citations.md delete mode 100644 docs/cookbook/react_agent.md delete mode 100644 docs/cookbook/simtom.md delete mode 100644 docs/cookbook/structured_generation_workflow.md delete mode 100644 docs/index.md delete mode 100644 docs/installation.md delete mode 100644 docs/licence.md delete mode 100644 docs/logos/amazon.png delete mode 100644 docs/logos/apple.png delete mode 100644 docs/logos/best_buy.png delete mode 100644 docs/logos/canoe.png delete mode 100644 docs/logos/cisco.png delete mode 100644 docs/logos/dassault_systems.png delete mode 100644 docs/logos/databricks.png delete mode 100644 docs/logos/datadog.png delete mode 100644 docs/logos/dbt_labs.png delete mode 100644 docs/logos/gladia.jpg delete mode 100644 docs/logos/harvard.png delete mode 100644 docs/logos/hf.png delete mode 100644 docs/logos/johns_hopkins.png delete mode 100644 docs/logos/meta.png delete mode 100644 docs/logos/mit.png delete mode 100644 docs/logos/mount_sinai.png delete mode 100644 docs/logos/nvidia.png delete mode 100644 docs/logos/nyu.png delete mode 100644 docs/logos/safran.png delete mode 100644 docs/logos/salesforce.png delete mode 100644 docs/logos/shopify.png delete mode 100644 docs/logos/smithsonian.png delete mode 100644 docs/logos/tinder.png delete mode 100644 docs/logos/upenn.png delete mode 100644 docs/overrides/index.html delete mode 100644 docs/overrides/main.html delete mode 100644 docs/quickstart.md delete mode 100644 docs/reference/functions.md delete mode 100644 docs/reference/generation/cfg.md delete mode 100644 docs/reference/generation/choices.md delete mode 100644 docs/reference/generation/custom_fsm_ops.md delete mode 100644 docs/reference/generation/format.md delete mode 100644 docs/reference/generation/generation.md delete mode 100644 docs/reference/generation/json.md delete mode 100644 docs/reference/generation/regex.md delete mode 100644 docs/reference/generation/structured_generation_explanation.md delete mode 100644 docs/reference/generation/types.md delete mode 100644 docs/reference/index.md delete mode 100644 docs/reference/models/exllamav2.md delete mode 100644 docs/reference/models/llamacpp.md delete mode 100644 docs/reference/models/mlxlm.md delete mode 100644 docs/reference/models/models.md delete mode 100644 docs/reference/models/openai.md delete mode 100644 docs/reference/models/tgi.md delete mode 100644 docs/reference/models/transformers.md delete mode 100644 docs/reference/models/transformers_vision.md delete mode 100644 docs/reference/models/vllm.md delete mode 100644 docs/reference/prompting.md delete mode 100644 docs/reference/samplers.md delete mode 100644 docs/reference/serve/vllm.md delete mode 100644 docs/reference/text.md delete mode 100644 docs/stylesheets/extra.css delete mode 100644 docs/welcome.md delete mode 100644 mkdocs.yml delete mode 100644 requirements-doc.txt diff --git a/.github/workflows/build_documentation.yml b/.github/workflows/build_documentation.yml deleted file mode 100644 index 7902c171..00000000 --- a/.github/workflows/build_documentation.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Build the documentation - -on: - pull_request: - branches: [main] - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Build the documentation - env: - GOOGLE_ANALYTICS_KEY: ${{ secrets.GOOGLE_ANALYTICS_KEY }} - run: | - pip install -r requirements-doc.txt - mkdocs build diff --git a/.github/workflows/publish_documentation.yml b/.github/workflows/publish_documentation.yml deleted file mode 100644 index 4679121b..00000000 --- a/.github/workflows/publish_documentation.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Publish the documentation - -on: - push: - branches: - - main - -permissions: - contents: write - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v3 - with: - key: mkdocs-material-${{ env.cache_id }} - path: .cache - restore-keys: | - mkdocs-material- - - run: pip install -r requirements-doc.txt - - name: Build documentation - env: - GOOGLE_ANALYTICS_KEY: ${{ secrets.GOOGLE_ANALYTICS_KEY }} - run: mkdocs gh-deploy --force diff --git a/docs/api/guide.md b/docs/api/guide.md deleted file mode 100644 index 1c3160c8..00000000 --- a/docs/api/guide.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.fsm.guide diff --git a/docs/api/index.md b/docs/api/index.md deleted file mode 100644 index b0d5c88f..00000000 --- a/docs/api/index.md +++ /dev/null @@ -1 +0,0 @@ -# API Reference diff --git a/docs/api/json_schema.md b/docs/api/json_schema.md deleted file mode 100644 index 471cb3a8..00000000 --- a/docs/api/json_schema.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.fsm.json_schema diff --git a/docs/api/models.md b/docs/api/models.md deleted file mode 100644 index 27ad297f..00000000 --- a/docs/api/models.md +++ /dev/null @@ -1,3 +0,0 @@ -::: outlines.models.transformers - -::: outlines.models.openai diff --git a/docs/api/parsing.md b/docs/api/parsing.md deleted file mode 100644 index e9662999..00000000 --- a/docs/api/parsing.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.fsm.parsing diff --git a/docs/api/prompts.md b/docs/api/prompts.md deleted file mode 100644 index 9d28f838..00000000 --- a/docs/api/prompts.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.prompts diff --git a/docs/api/regex.md b/docs/api/regex.md deleted file mode 100644 index 5ef91db4..00000000 --- a/docs/api/regex.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.generate.regex diff --git a/docs/api/samplers.md b/docs/api/samplers.md deleted file mode 100644 index 2b9b3423..00000000 --- a/docs/api/samplers.md +++ /dev/null @@ -1 +0,0 @@ -::: outlines.samplers diff --git a/docs/assets/images/dottxt.png b/docs/assets/images/dottxt.png deleted file mode 100644 index 1bdf8cb61ff415b10450a9f4a80bb235f048e694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42419 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 z z*VV9Pu1_WCN4+|aGN`qzazvyfX>HpQ7Fs4)tj^U3V_hJL`giP*gH!d!L7fFSBt5J1 zLk*%^?TS%WQ*#cIpn7|)c;2+?v>3qkxRqrhGx8e-6w9WqqfmSNZFZW@i_addZ1Y26 z(HN7Gqz;&IEUz_OQRTAvn(Xuh78zBDnR`VpCgrTdL`9rY16eIX@C;Bah=9l@4_&E{- z;79=EL_+@7?2kbD&Sy`-kFi)BF>0#lCdcIA!~qmKMDv^=jl%B|Gyg>6K~{>Ga?B(v zoVx2|9Lz$c>!$U1gK4|%7{yG(>2E)u$6}klS-%6*sJVPK7gXP$UvnM5n#tQGCB7}4 z^#mfV8ur7)sNUNtnJdw+)Odajs|eB#&z~t#l+_oT)+`G{M`HY1#1_g{Sfee{w6KiS zDrI`^bE8qwGB)}>sRWan>N^$z3DMVtiMOBAbnGuS`CP`*4risQ4ahbO@>5)hb#Avf zkM7y}v}R?R3|m^*e)^yu_>0=vS>q@XG-JIqS)X}VHe~-{vx$J^Q_j!LR zM(B+Gy5ixG_L+4*d?t1X1*f(}58W*nBW|p)jvU|4Ik3U?^$aM5Bk^74WD_w~6J^rx z(|zk>im0GpT{J8N={U&JoJ{^#8Mume_4}!8Ep&I^=rT=xt<={|Oaw z^beNf4v9_jR5hNy0*iL0bk@_?L$d7|Y01zaC-q(*uqE@%TLuEyXox3l3y7TrtU;wNc}pRM~|R`pWj- zjh5B(8&&-o*Z1CpzsT};Uw%3^L>;od*`s~_H}!YM#9EW^T-Z))_AV3x+Tz~Ikwcey zH(mChOU>HQ3g4Z5tHtHm(-YhXTIj~w;@;xNS2Hzh8{y~A&XSQ~f=YyrN3-WP;4ZbS z3rR(PUKDB37YeIQC$mC-T}rbWA{M4&gD8KqCx6;tt&APWgv2!MV(&?de(Q>m>_I2V z+R1|li*nvM=4~2IS_EE^D3S@dJ3yx{d(7x&L#S*0->I2Lr!t-*C*}M0gM&=Y%Ek}E z&lMh7(J-SDo};H6^z6(NW?wCz_&isAPHMCz-+?Pg>9dM*Kv`18PpzQl18)=e)Ur3b z7#R_Yw=U`ufY3WVJv9M(1YlqIB6f!Ke7hhV!FxX}nSmu9;c5B4Bno(&=(KYrA~SF$ z564yU;5aVsk9kK}77JSXKSzb{^R0H2)rU2i0ib^+I@l})qJmc5urYvO*2#7iOQhY; z=V4Gc=Pt$h_I5XIDelL`4K}oAj9#SZjNYLJWG8>WV6N{bem00woe|N~sgoe=4lt@# z{u-SJieNQjMSC1R!;1b)(qoBch1`4VxEazrEh!&CQwlV*qp+=BUHPMSKVxk{7%x`k z6TcLUz)m?AdB<@>pRSs*VDTz86|OfR_pA>RYz%3!z)kIR1lqLJ_M-z^=Irep7AGA_ zXCQx4p<1rmLy@=8z%-yKS6CKqir`yMe8N+7`lE5MkYY=gGPcaJfR)~MNpEyEnJKLi z>ud+u?$pYN=MjdAQxgx&7?fYT{)`#fF)RV2Hd4V=KAf0eD?LDS`7+f8BLv8;6i#eQ zw<{mvCbr&_h*U&eM?lG~CrwA1r1G))aR~bjdX0SqviRp`BL!}VNf`de5=(eNQwT`q zhIF0$&~#mGw`wiyH`Z4%7-qu_GLwU2Hq9>{paG@20eM`U@};WVyil${!tuYM@c`nUQgE>nV0^aO$1&qtC`ee7a#e>J{6VBy2GHMu@KaWOHRxml!p; zE(zL=ytRYEO)czi)_@FJ;>F{}BuvL8%U(}>+^Me_%GjKUkN102A6+70`uK6&gq%Sy zPyxzGJOB`^+mJ}7!xdC`nqcFIr=w;ONGIP%k;vm3PT@Y|d&(S>0EqQa4H;TgQQBRt z1B+Z*+yt53Sn!x$cn&TAnZ6!?r$r)DMJs>4`~|b*d*&rr$V

SCw?g1AZdtb{ZFl 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

n)eKl*BiAN1Tp5@I|=#iLr)t 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 diff --git a/docs/assets/images/logits_processing_diagram.svg b/docs/assets/images/logits_processing_diagram.svg deleted file mode 100644 index 92668e6c..00000000 --- a/docs/assets/images/logits_processing_diagram.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -%3 - - - -inputTokens - -Input Tokens - -7 - -4 - -8 - - - -TransformerDecoder - -Transformer Decoder Pass - - - -inputTokens->TransformerDecoder - - - - - -logitsTable - -Model Output Logits - -Token - -Probability - -+ - -3% - -foo - -4% - -. - -7% - -1 - -11% - -2 - -13% - -3 - -17% - - - -TransformerDecoder->logitsTable - - - - - -OutlinesLogitsProcessor - -Outlines Regex Logits Processor - - - -logitsTable->OutlinesLogitsProcessor - - - - - -logitsProcessorTable - -Processed Logits - -Token - -Probability - -+ - -0% - -foo - -0% - -. - -7% - -1 - -11% - -2 - -13% - -3 - -17% - - - -OutlinesLogitsProcessor->logitsProcessorTable - - - - - -sampler - -Sampler - - - -logitsProcessorTable->sampler - - - - - -sampledTokenTable - -Sampled Token - -Token - -3 - - - -sampler->sampledTokenTable - - - - - diff --git a/docs/assets/images/logo.png b/docs/assets/images/logo.png deleted file mode 100644 index 9a9f234a746510cb4bb42acd52e2f06cccf1dc74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372647 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

d64Q+0B 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 z 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�u5133s7o0XpLu@ueD`C%U$ehQ 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

5DDFF>jg~Tld~JeafJZ$!cmx z-WyW>a4(35+JRBlfAZf+Hb2O!XPry@oU=&=Vm!8FK%||YQ95I+jcia_GJN;?ACWkZ zL{jV%iCMR9B-ylEiblZmqYsZRl0Eo3@F zTG-Ja6@a8kb9{_}dGiA>CFgf3qzO}Z{Dk`0D6wXN%ptf+m4#0~3m?_mNo8p>5HSJz zV@k$qdf1>4?=x0?1i#A`OjRkfKKj)BH_3p>?d$AAA9m;dhnX4S|T!&6PHYY|tn4MnWUNM@M` zED{l5qe?0XHdaikn3kX}W{<0~=KKqYo_rcDgunjV&#+@k8Cx8u|eZyN>`{sAC=!s8ZY{xb>eDe}E zefpEMuDK4ga}Q>+iSsEwqfBIcnp{<>kQ>#un$@)YSb8_%kC+fp)@jU&1&i?ptC@g+ z(QFFRPK2agEEMWwnLDgTmNc%gaK*6<4=rZnJ@+!UV+WC1NF1I(b__*#xz?4O6rM+f zvUFqM;ABN*roeP?f~n4;6DZ7@YIg^PIo= z2=ktM4%=ES?1XUQM8cO||61aa10)k;*|U%*YMLwgXxq?ghQdL+`r|*Vt*Jx*Vs<}T zBczEVRmYw8Z{Y9#_1~!1=Vg!`9D*TsO+NI2Kco`y_dal=+HqF8ig2BFp&tt$jIN$Z zvCoK?z@-5@KFQJ!9G&L+^7(_3V!#Nf_O^nI%UZgO942xv93V zkyjtGzD(85c!PM$LF7Q@j$h<9cvnr(Jz-cgw?q%8P-w#o+IYrxKU;%^t|ZFl8*XM$ zYNUyyiKDXQC^%|4u57tnQe#n7ykr5sv3EO5mMlTysANZ-HUIh-Zix7$0s$l(N#Lra>LJ3rQW)_v>2btY`i>1;eJN(rNqDnZ9+H zUKBs`LYc1okX(k!1#2}c;i_1X|k zqn!2O_c3(tv)B=Nn4IDXP34QPegm~VW9Z}rDfy(Kw4zd4zplC4!GxdXXJCh!^?Byd zL^5o?Hx6H|@jHL?$M{MWiG0Ve;vPc9^OP4OxBSPF*Wm@(NdqP z9bdikf&ZoKJJ8@qH{VGdxMYeJlB*dh+8_SCq@_YE_s%F)+&TQzrJgiRJ77t9;qARb zbCSK=H#4wgS!TW&R1n*I2k9u}McUpCIw!F@cT7Ll9IRkiJ-0p&ry2{vEDu1T>!1ah zSipHCN!akc@3L^9jumCHm9XTrlhIlgH5pdkRAweNmy!u7iDZVo$9pn`iljx{N{R2i zoh#n?4&=rkalGw^(I!zP>uhRdabi)Eb*{zxOc4q#HeiDzHknFMD@|!tt2`j^hKv6c zttT`ND1ZJZA0dkRnApFEw_o@YPG8keU+lq4k#uT_+1VlM+2fPS3|-bdQ)`dBGYEnj z!abshcT`fSr5>wFt3M(+VHHc>{CZZu`9cOyKb6M#0k(hd8Xoxfi8q;?-6lMi)9`iy z>BBX}D83Sr3iK~MiervHfi3sn!=6p|VMS5bLd69kf$Xgv`Sd^tUWpm$H+*JF(zW?q z(VKiddOxMJnexqc8u-X(yHYH0k*H82Yy!YFF{ao)Xe7qtZoaRDlkX+C>Q;+VMmZrsRzDkh>a)gY=?nTq=u z{^fIU)oRE2&CCSQ9^2HzT$BLGP?w?)+>PwoO&^)WWm<`8NR{KyIVTHrMy4wnJq+oM zVhGcgacN5h7D=miszQ0iBDjfhqR|O|TljAeS zX1#vNb?1xBFjF;>2uDO(uk)Z+p8gweg*8XvqX9nl_n$!q7f`Rq^u-D9f6wb79Ve1F zn>?uxypA@Hqf@-{V76afF1W=ID|MX^bY#&jYf=@B(vALmG zUbqN_iBfTTKG$$BIfwTI&-8|a%uaGu9)q5G*XSr8DQNjRbZXrfGO1pPs{=HRa@wE# zF4gm%!4B(*n^PP=GRoI3d<%UC8YGirc=6c0pbi~g)z0Qe)^wMS0!;YX@qIp&1VwQ- zXo(2x!KV@TKe&xQ`_RXz4KJnPKqH7NmULp2i~s7w*kp>DjWbE)NKkd9xq+61IHnh# zs)wgi_t0;n&e=jolde?oqk^QK_`n!9v@}F4Ha4w6VwL=p_1wF`#{W8z%*NI`@!`Li9*t%Qi~XO zDQ4AbIC>4vRzmkfrllU;1%e(j`8Y&A>=aZEW+WziC3 z?eTb1$&xbZT+_BF_Tfc4DJ3hSWf|F=3*k!zgtW)DKr%j#O;XnV^T)a2qyNb2DJ2?j zW|?ms5;`MfzD)-~?Qd990!6Q3Y)}oWg{{f@eR2)vr6BgqZLD=q^6})$7=_ zTS!Ft@)!Su{o_;A<0{U9#kM;}#iXJ49HG?vn+Cq3W9+RxN(yP~2^qy(12%ha4Q731aEToJIV4xSdWajgl#)qlcW(*a9I7c|6<@Wa zam3KFRjfJgG&bC`p56D~k8vK71TQZ8{Q#fIi)Z7>%%ps&yC^w#LP}7A^3&R@&)ka$ zJriu{U`56wkw$3Gx6-!kLR&sMWb$I9gREYy4lqT;bN=chEPC;a*qpYAoMqM61Ydc> ztEsh`v>M~MoG&9;b0&)$VR9xOCz%jI+wZLmYI*zvlMYoThapV{TSS3`)U{|(m`5$HkfyndwiXkHV!~ET&C74t?NEOB=X^LHzRc{C zpmLU*c}nhLt>Ez3W`nUSuHeBNt|K~XB`3Z6UAXyug}G@~oSKrsVsL4v-ObP6#W@!~ zr{_RxlIwqPGbXBJCT^vqy{xFL55eksdO06pNZyAAlv0Td6(g8jVN9~KtVo0Z&)$2- zTUM3#|LGBvtzTm_MgpQHYSet=H^xN8 z5?inZv138S28vyzh#*KA>d`-WXTI{q&=jVo z;B~Kk2aWv>L`KK?!)HE;gAN*Hd@M$^m>?BC;WEq4aM-6NJuL3Io4>-zsl0=Wgy^tZ z`2lDuOH3a$4q`0b#3Dx?%AwDG4yXLZOBr8tI6Lp(#4j)U9CuytY4paMiKix!Yz8F_ z;(YJHYb7o=h1fon_yr}ecoAL-YsWg`w|fWge3ffjn@UJ7xb?YVfS3riK(oo=k9rJ^ zc#K=Fz5?maU{i;t8OA7Hvv3dQO>`(=O!aB0^!R{@3_AhoB37Uq+7+sVT-|#AyKJ|Bbz(U+jS+~8#H(&H}MrOLC?P;@XkYfhV2_SGQR(ckh@SgzzzG9WM133h3mif zb?~5uVa>w2Jp9eOjt&$7Fh&FS*?Wh?5qJIU=QI%1J9bR&;E3Nkoh-H((b{-a@?=IS zsVAbaQ}7D1l#HmMS|i(q9-BXOUmFJUy`IH51K3e{=Ls91Qwqp z+}kxg>bcK>!`Fg|`P^qO<-r{-CSt>4nc@v+KbwYW=PGHNYfh?3QXLVM0n-KTyBl}Q z?<&9Ne2H2Wd}S>Klp*E0n)Vn~Vh2eEkq6f_q(>dX+LynSqhI_NL~9Oa^PP8a+m}Ae zrq6r^bIYCBsTP`M;ZVzO4yTG!4OXn)fR7O$Bi^DGyzyb$VYH9S-2Vo&kEFF{USGQf z258L@Rt2LG_>co&jfDiVNLjRcEk_>vXl}XgT6Wxj7ZHMHE>LYyoOfmOrBXw?rE2m_ zVW=ei`V(O2C#&o|jc{KV5ET`yEY@q96_;n`x&r4dlNrNanKVbqBH_e;_y%7RXu2OUb|ZGU=gh5<_@BBVB)fi9p#a4GltI7q&Ep%^6){Y z(1|QR`o(qp)4zR?(b4_z&J)GpyN;zz&->r;7MeyuZJ5sFfPmKA*F-9PNRQmU2T;&` z`_5}aDo+5=OyTOM?2CLs2YjZHc(`Y25 zX_|vK`RjAaL-*Xp$~9}yD9+EP1;f;ZYu>IkgBpgl3+pmpFq)J}vMM3yMF5Y3K98m^xtgjyhiaIJdNQA4M;4Ri>5@hy(3R4ZEm!@F#oiF9&{a=6 zGU$@UG>m<0UbtBm-C&^#IY}Z4js+d^gx^Q-u)?-?6(@<+Qf%H^m@e25E~Qp z5ULn!O5v^yT;;*Vh3p0nJ-9HD*>_3F?$FZnTa77`o_zriM-kabf*f-=$Gr5V9RI98 zAvK0AH~fO@FZd{%zH$lnt_?&pGgy}*WLQfsY7Uwluem6hfZX|_P@m(47gWIBz_j@v zyO*DAf1;}?4s}D+i1Cq-HAXn<)W@)M+YWBK<|ml$45pK!KE(<-=RWs=GS!r!N46I z^P-oZ%lOg*@Dh=#L#$zD$9DeZ&97zovN2+7LmF~^pNZBT^0YErszXV_UPiY+%;8jd zw$|>EVp69D+XcJnL2mtzf2Vclog94HZ?fMrexGb20b|Po+nOF>LaxE++e`9)I_JW= z0PT)&`FF0uL@^#0tiSWK&6vE2DfKdYe!t9y$$F>Zh_Gm4j5vu)I+S`4*J0UWG`w3&l6B)(EhUv_)|MADe#4@~zz?fM$`NR1nv=596pGh%t zH^F(rDBbB9OlO7-AO9#ndfPiVwC!n5Wr#S8F?b1jg+M>ak+_0BCE+tDEu2L25FW|B z{=?gFjRp^@;gA0LTzuldkMh3vUw|1|OsnHL>4d{M?&#IT%?OB44^|A$xjs}~1|p)e z8wH=tnuXO?xtNZ4sr=0Qn}+&fCSl^BHZ;Znu{T7{qQ=r4A4MMfIDX@A{+2aQeHK1y z@W4-h$lag%7?WT73f!|1)0)P+ZqD7)kQi-za7;3x5Qw}9$grR7^wi^MB$fW6`uyjw zppm|Yp`c2Lk)St1^Cl{|szl8MCkd;MIEh0JeiYYy?>o%gw}B`#xK6jEj|3OB{&wA$ zn5t;SMV?*M>m03ezqUaK6u!C-CJZuUQ>HAII^raEF4NHU8ex{b?d)CS*T5|-7`@i_9*XblBQB0rG1Icv&{(}>31*n zji@$iRDsL`J9l#X7cSuLtA4`LBaY_CSNsib@iIaXPCW=s%X8M3nKrfOA^(wu#dI(| zfNO5JnFk))L6jt+$;eGddK;+Pn&}>ZUIR1*<Jx^AhGCw{in?%=5_J%43in=dEh9v9yIrQz4oi3++@R&H#thEpHZwXI3E+;R&eCZ^l&qGFgp`)YW zl^N+1yXvlBtG(afdvfa)^%*>H5AA#JVFXL3o00-kDXe?k%Q-hka|8BUOjDu zt=6#aDNlgI*V4)?_uapPuYc>uESeZ$+vfXt`@g=4ENv4>93~67^`|iw(OyyAV02V> zS@;bO6sp{6W(5cJXA;yt+FoIC5K6i{4+IsgH~7fXT{_Oh?>?RrUU?3OKjBGCZ`r|v zKm94c`p^g2dFc;`wr(d*Td1ap@p%Z6;ykFBSyLyiHA-5Q)xo}0z?=Cp1s-~`mmR1U z`VOsWl?sZn3KCoVh{Y~j#L2()6eb_q!fikNE^#+SIvL&t-AizIuel=$HK(XSAE)kO zW~6h>oOXA*AP;vF*sTU^_AluznsNuPLd+a;8Wz)S#60!=Z)e-eWu)T`##%GP*Idta zZ~A{UyPmY$#sQ`juu^jKXRCXLt4NgRut9p3roH(;`ihK(zYRT+5K_YP&qmi`DfQq|Ab+_*wZfpS1%JkiunCNI5& zJ1)DF(f!wQ;;UW*%a@{YFiY@xy0PgAj?~iLx5w;5Y7U15Coqcm!dJeIG@Gazt%yZo?qSZkQ;>@w#<+H^R~Q3rl%lGgMz$+G1*WBGN;URk*Q+gu9`!@k?x zv}c2rB6!UyWEq=(c|BvX!5C$x)8?R)PQoQgHAbxArgegg5yOLjPKBTojPR}XJ{uUX#}R?*J0<*F-LtcvSoAeI!N zZ7r)#JsFMS@Y?ggS<$g}FKTHJW3$J$yA-wgyb%kwbJ@-=jcwcc!MT6O&dYzu8VuTQ zlZ;xN^QeH82pmMlmZtHxOaTrw9ixGB9*|MNSw$ir0+7^WM-nENt>CD?coA7*5!2+2 zZ+r(kyIrjA;2&TA63DtV8xhWh&s)UM6OOF?cZTj^kuk@AFJMFCQ3=0_F@x5}3(|Wy zqIpPR@g>E?B~N!wT+lhBk)d=hAuZW%}YbkfmtK-QN}4D$vYFp<;7ONKedS9yykiq zMH`kZj#+v9$*ex)5U#oG>&WzWqIQN?my6_!m^zaO*Gc}JWq{ZnhSOwZ4-0r5I)~b4 zm2l6!6wIE}V-TUOo^M|EBP5PdljkxR z8^Y3R>E$AO3B2jB$E2`pRqzl+F*XW_h%s>Yo$Fb9*im>4V)OL+A|!TU#ISJf!-iqi z!n(}YgrRucP0j(;u(9meO85Rv#HoUXDPZ*(r{iqY>l#veP({S%|4z^>2(>iSz+=^-k?@L&#U%~y?WUam!WW`Tm*RDl?|tuD zesSAf9I$2$qTBi3&;DITMg=7*h2n*dr5DkjO()v>!lfU!@3kLNsT#N-O6^TOE|4!% zx6{|)SW-CE_&i9?p%@2OvH!(zI09cI*QaEU9=PODy-yLV-1DalTx!kvtd`c4TJO$`v@{F+>+|| zoNCW5TA!mK6$M1aqYk3x1lf`ae*Z)7Z- z`;sJ_pMo;IWg}x_qr~G&a8WJmN&O=drnhkYkGWPYGz|MWT4PhIqP|P_wi_5x z#fp&ONk=E(&~>4pk_s|Xg6o3j$+Sk4nW;&ZF5N%(DWwb*@Csxd9{9!2X~Yqk7$iz) zdtv2ir=ZOV1i{*xb>mPhZ9a;roX=iF6y&yuw5Qm3^DQJMPu3KeZl|m{`6OsIg0Qzp z$Q&f9lew2&sSBGc|HP295Rm8K0%XX%gPCc#^*Szj^*JoLZzIbxk9IR83g~u`oni7K z#o?+XVg(Tk1ktZULQ@tgsis(CXn2cF1@)FGVr1Q6EPdMJNMo3uhIhRCW27?5hKIKD z5AS>nneSr6hDnrEpUs}-)yZyul?-XTO1sHgSYTelhT=_Sz-*%mE-FX)#SgItHG&l( za!TUCn}kkd98NlwBhNaAHP8A}((xrcc;i*vcHu|qT=I47J@+D0ZBn1&b0J7bO|Pa- zh9bYggE){3Ocshssz523mpeN@!llF#12S0(3#D%zYg}nnjLF&f7W`;JXLOv?e(w+2 zy7@tV`TcKT+dE*Ujq_Q_Xe(6=>T3m$%QX)S(P!u`r*V5ed64(-vmiMt=Oh_uyta9RI)m6#KZ}CLJFO zTz;=rYD-~(ErJs%Nu(iRp3S!Cw+S5+O#|h;0hyn>I#{BbTp*n1fFHvjfXx(`?ZtG4O zDrDUhFNSIFS@-xe@VV=Q=I=kC*Sbe0bkZ|TsKje!0Ff#giuayqXNQ>|{(!H%?scr# zF~evlMKr@k2A9=RVe7&l;d~KemNbJ5;w=W z_>%AQ;PecOmW;CQkOO$k3C9qN#SjG8^@gX=Q4g8|&6cm~o_<0D3I!<;v4?-FmpZPEeE>|cQu^X+0s})p)BGW@khuv}lQYJY2u$ne$ zl3ByL(;vs0Rflr*C0~Ip_hVZr-lgT!9|Y7U7j$c7Bp|gtX1DbR!!!(Yarp;%aqVd# zqH}GO<)o@|y3*c=zFO^5_vF_?Fzz94jG~9F<=G#27wcUIGdjxQjV51z-5cTBn=sQ; zq-5pyRgu!mzke-sARwVVZK2Gug8S-#QK_*j3m<+DntHrVc<(1J;yXXTp8Z#?pp#C4 z&5)?cqQvsPcfOTayTrzVXg(G6Js?59L)D(QGxG<$4ax{YLgVb6LVE`D&?dhB*0(Zs z&jTF)l&7)(GyXr^Sd++xJfoi1RWl5zXq|nHpj0#^m*r*y3NszJXnRw+SIZX-D~yV5CP|jqrgVkxqUkatXKolNFMfDG%hZ0G;03O z3)jN+@GhJ82<3#~z=buLza6i7&clY_)ng3Yf8F(rTT3i3ou;fl<1~B{=gF15&O(~A zD~qCg=k|vf9h(5LxXfWR*vq-p)4Jtm#->^{0BeKIYSxTd{HP;9a)+5>dr~P2^LgIt zt1)?<{-hpBGw%EOwTwg&nx-@oOP7pvv`OQLBhZ58BlUuR&t8|-8nuEV4J=TAgrk<^tntx}jxGK&`gPKi8U9kQOP@0d2M>=rx@4w8gU3 z3#)$nOzbg76U8yplheHK1D~LqI-;4)yzd`h1??1T4Z#e<^pw1z;2eIC*Kq8;`Yij) z!m=3%7El;9SRZ~F-_yqK*7uZZ;1&#P@&+#QN|bsM2i^#sWfLrZ<}*0rZ_Z}?o@@_Fw0_{TA~+>M=TsJ!pc^_`7h1y#F%FuAF*=r<2W^%fVCVbxJgSEVXlB#G7PCYZ3=et*4$Ls&~ zUBrz=Oipe?qKwfb!L%p2=;P-zW*nkP07886X_`5j!aXBm>3qFstpjdVgCrW9fiiEv zd+g+PuKTz5uyg$_9D4d0tbWe(aATtwYpOuC+Pt~QjxZ=T*PKZYNRq3Cd~P%$0ya#d zzVrPncyQac{Co=QZo~%0QXZxmCfPb@AjMn(i9O9h{rs02Sda%q0*s6_@h&53#EdUl zR$1^N!DUW-{%kBv7Z$F0y?Ppkl?&@JpS!(Q6()pn=+q3YdmbPGOk(Lo5eJ=m8kty3 z&DEt0am;=FRRo*^5p0~4HgH8zY<aniw|B4iW4Mw=2S0;ad%9CoZ$x zB16ifIZFW93zO1Plvztvl|W1L`I_Pd5leR@B0Fd~YoGso9{s#O$BmA#{gzv}@nauh z+t1rf6$8WT<{PyghBbS z7+o^KDZl%Nbf#Ne|Mkxk?bwX%hG~N_;k_7Rf`zO1y^|H$lP6RdoZO*9ey>B`)coM; z+V?C~9mMRCT(SL6FBlkFT(FPhK$CQMQp!}yY}+6-!Hl@5H6g!@~OXxBQE^(7f71pJ)xPU zXj-bju6q$OT6d%B*;8s_bDw7}A%>CW2u5IRbOMvaxZKW}oW>k9bbg^#Sh(iW~NxQXi4B#7GIgu zAtINt`MT>FMaWWzH^P+j9DM3YXd^+asSdoFThKl-oUDYY1?9;p%XcK^q?ucC&N{Jod!37YR`ShXU6I&n@W#+?&k$?I{TF-8#bOGLr0fhbeS4g^l3e+!QjX@sN;`NoJvuzsRnITgb5Jeo`xiaicY7SP4|IeMu*FMg& z_!P~>xA|1dSX?6^9bd-5r#+Dss}AL7U;83@-(AEl7ZB4T&@K=1t7kV1V;-msXmSQ7 zLFJ?Y>zt97$lFR*e;V=Xfsa*C1n7_m4TvFxc&;Wy7co11q` z!S(?+cmC~A=%%@$UQO{e?UcvtyInaYzsa?%p=9=N?ESO+eN^ic`8544L zvNldEfBO8Fp=Jb^dYtcofz-iYzVx{~?eUKd#uGkd;ZzhDsWl)nxZ&yH^Ud>wLFaBD zC7&LKM@4W7&ULZv7WaJmbKLTs@3HdeM{(R)=i*i@N1JgN6qjZUeLqSE-F=mqSPF_; zIn4=ceEa>I_~Flfj)_O`YA_mMh`@)trlcb(bBr8yj%CoAkwk4DE*J`h7Bcs*P8xA# zW-Y;FL$vT2i|}6NaptvfEnMZbVxeK!2Zh0`$5ntdeDD1j$DYMq%fcO)Ocwv@9+}45$kfmdPn*?tOq*A+d(UM0CAn&0|j|i;^;xxZntv zAcpEbdH=<(FL{mOHG_NaB5Aj2VCZI!%m^K0LsJt+!A(Z{oH=&;Aepc5NmKK zDN5RIGn#g}>AZJw{ii<3+9*a_GpNlli6P6f5{q))QL@1L(c=!RR(2kkC!OPI1MQ0WDv!*F=cOW`4hL6_m1ys?Q6{5G_~ju|gO6j<{TFkRMC6e7SBsNEkkZ-Q>P;2JbfofBDk>;Rvdde zk9pD`@Y8R9lZSqBCDBY5I$7TI7t}fFO_P-Y-ZnbBP#TVJ55l|W%5KVv;WbDlSMY5MTOWmr)c;* z{7Uli@y;FFXpD~s+KqQPFJEz4%Jy4t!e(7G%fP32H-m3BVcij^L?wT^_?{(QXukK7 z!lpkb$r=d>qBzg?U)@O4Im9_6cYWv@Wzo8W!+JUGolp!dD25zP+FNvp3Bh)*o6^XX z_3!>58!q}fYlzU98KQu2x+&_39d|VGBlnjrl zny)Ik_A`yoMZmd3Np2nLG&IX%1xJRr8WKz$G`wI{$YMiw*cuLe(epX!FaMHsVuI}6 z+gbmKkFn*VFA+VkiKvyKJ|OS84m4+Qn7wiek$KIBt~H<{I8%ANBf*8syYQTcflG!P zv-su9IpdF>&DQ(x;l^)&0Xsc~>1Mdnsmqs+YV}Eu_Gh5X`ebAdtIWME{r0iVW|;$0 z@xAL-t6B#C=0&#mH0%gn5e|Fhi#X_iJ%zhy;kNGNfK8jZ;>~ZN;UG-|8n1a1ru|T~ z^i5{zo#*MEeEz%m_d(}~X#dxRy~k+>X(YViUFY+yt8c)JjneL>SZ5it4URcv1sA^O z?Q}aWn(+u(=5s(pYTWj^xV(Q#qI(Sz)K_WH#H9DndVjdo0VgPRU4kcaE$;iw1^nug z&$D#xK|J==uR#x9iyw&*pPNvaq8ZQ6Q3?}{ded2bc6B!_HHCH|$fS%y%fY8UcQGR) zO)~FLBbbQt>q_yt%5G0$20b^ri<=@?qFY3jX41$rC2UP6SUvZ3J5^nnFf3g2b%y0V zLNQ@jXc*?TJg5+y;Np?7^@f{iN`zCG%raJ;dJ^8)Aha@hIFW{8x10#537Pjcf+))W z+>{$lk~%hCc_q!f#BriHA|?(#3>GcQJ@Uh^+35AYpdzk3^vz|s0n%!&GXlYgmioq``A-B_BDUQ;>VmuyR(xGKe&wbAG?tB>Yo!$ zP9fb6Vm!7e^mK4Bt1_g`(Q2hb@i~9WhkBf00T7tnfFKkfm2lgb2$~JjMPnTGyH8_?GJ_Y%)^QFRzov%c*E`wQe;`e_nFKXBQ_EQ;Ouvwhkv)TR%;9Jk8ttyT}4 zz~_$Q5n8Uz@o)QkHu@%y%l2+&ag-9&4_>&s?t~+3x9u z_Iwtjy>C|o043fd(&Rrr{}tZ-k^i8%WPe&|ib;ggWB2z$hUlz`NjU|Tn&tHXsZ2@dEn?fd8Ft$Y8$R+0uKCPGEMIdd zXPkW&tXqv=)I`11vO03}5T%y2A+x45y-iYKUQrd^h#~WE?G3ka$K4NLBMbOETosJ? zO3ziF(#YP-SO$)f`uf(&NvzRGdM1mebhFFd#8elw&I{MRxOy6f0~Xd}zRIL3n%794 z&^Wo3Y}11z#$cO<%tTBaeJpCC+y$Z9H+;_nue7G7ShRG1JSHSO7ePB7B<-^8`s)}m zLGu|!hAHPc;M9}wNi#oC3qSXo)#$uqsFXje{u|Aw4V%~BPV6&WH^qq1$~>!%Jr^fM zA(i$2*Q&rPUYgHE>0%@lyJCpcB2G{fvALrh`ozZ*9km7*!HgF^@ZnD~x_EzD)5^ibhFUJN{&v~$FI5dXjtDM zJnw%xbvM!pbdM$r1M0^zLAV2&an-dq@#;6dl|{>zk#<5ZKpb0It*w0HqR%nWP{tag z!6I7gL3C!;oN4xZsSBZX_wE3x??L%SK8xig1N%|!Nsccx3*mmw)ML6CJHBxlSAFjD zEI)W1XPo;w^r)lo<4JI)18iYQt+s3(Oz_PLrU*5gW7S?Edu3G{&Z;8pEowx(|HGdo zYK{a@N1`0%uY(?xl;620PBO=z>X6}{)>g)EkEV z7uI9Gu&}TTn*1SlSxWbo^(=}Kbf$w#Goq!-VCBj{V#&|!(#0qboAD?{43pcpuxQaz z)H|%L2q<0^rl*~PWYo|;vxkbamAH4 za@$=G(rk`!+%fAo?4bRKayt(#EnOLqI;#Vn(R-VMUZ?n9H*iT*uz*FdSPUWXPQ(Pk zvlJn3d1`halB{Sh_7_a1Lg}U3$tylbjcsexTMJ7m3!!Gsp>u(2iutogPq-W`yan1E>&oK188#D-&qiR)^RyhrM z;Z{_i9vaPYI!$=``_E(hngeO8=ZJWmZ@%G;aOHJKYZ@=UZ!LUTU24u5uR8Vmy2viy z_3o15YPdly**Ij<;60tTeM@VYdW$B|X!FK}Cr4NnLffu&qb#GANNktPp#MykOOo z0#@xS&u4l16dd(@Vqm=|a=|_@T{24iJ5S)mH@}gQN1w>d)(5%$OJCsLkAH&bt_O&w zQ!=tJt*A|lsJSQ=MS~~Uyp|1xcyy2FT?|F)rEt+AxM)>V1?W-kltYKSvT`0Pif>rl z$^$w5`TvJI@B9_N`ub;xvlQQH<0$|KUu%xE4!vVkusMpVI6SUI%;$cx>ja!#VdIYk zyx9jH^f8t^iWkM@po&V^8ym?e*^*J7`N4N`|Dpz|S`JB-FTdto?8dEhXJ&HX!1Uzd zNJ*2-Q-MuEtJxh}YT2Xap)BdOqRs^US;|b-<-ShFlV5lin@xjmX3?%=Vl1LFJ;`}* zdJRu_%t7t?YbGC-`Y(pNMGo$~*MhTRXD=I+7sFn|?UOuW51j2NsKMw*S%R#*Cl za0}PMwGXfT78-_qbc_|ecDyGt!h<*7#8@2DZntn4mLGRKSrmn4K??4npS{KST&!l} zvg|MgXFki=`l}llGZCUfCeRgSbmalCWN~m^GsPxXP1CD6T>_)n=sC;g|pNHXiuKB^>Aln|85L z&Sy3GxVnbymH|lG?`f|kbk>{iS{nuD!aVVXDWkRG>4QZ$qk}~TU9Nbh4mq!13JQw7;fU*#utw!uEKg;mL z{BE@pLfV2-6{7}?8)PdFV9iUP&yml17A}t1_VcT_{Y6C%DljCqL_jjE;`- zoe#X7WZPDvPMeGjQ);2Y-zyxvv}_~_R~A!cLF`rqGnfQ7{0`fP`Nu=Q^#B*6Vowpk zN0?*`f8Y}S;JyFKjcyVva9G!H@k?ID=v0U9%ruzX{6H+OM6Z31pd9Uw1>9AcEpxb# z%{DnGos1A9b7V7)j>4b4#u1Zmy4XtRI|1zYAFaF^R;}IqG@QDk)M6)?jx)>I~MQAL@nE>=o3Wqk) zvgh}9&(tRT2Wu>iBp&EQyud_SxE_&)K~OOpQ(7=; zUpnf19p?QOqs8w{=GbxDdPb56mpV|$R2W;a3X-wjalRDeU609~qGoyD6@opN<2@#1 zWVc&0B-V5DyWYt?-?)V3#$tUIM6^_NuX2nlIUhN9nUNl0sLt+DX6^Y}6U7R~2kXDK zF^sNR%|VYp1!qA`%%?v46-F12Gu>+QqL)6Gf`cW&b2bl+>pSGM4{_X8AwKH>|MfaH zDt$_w+pHCpVVDC}pADAe69;cX@Rso!rVTcs-5g=$iBIM?&UpHs1%Fp z>@_ILexrhE#B@eRIOK^>=g}vg!X^LqF64oYBs;rwQ-@fKCr5Wp02hL0#FdmNqb6ub z=6p-Lq6E$r{-*3R=cGX*9jcp1>gEXmYJ)yTJVp&BSq#S?$M5~iKXP+-C*7Sh9J+Iw z@Bh`y8SO$R?N*8IMS^&cM3>n&{d9a`FriC_B%=(buhf#Si%r0F=(cB&#t6@O;oq=+ z!xl^y<5Nd-ETS_t%~OBtF`V~LZ$h#*;^X{`sJqlk4=HZ;a%zvI!m!B5UE44h6r(Db zu>PIN^+2ZfHJWRQ#DGIcog->@*?iH({Pg1&a=_|CIsH|y#~phNI+6736Vm%8d)?5q z-bcvnYFd@L$wqm*8gO3u$u&1~>z(&tZ4{_aMZ>3H#pGE#Iml2GZ_Ch`(H;#WYk#HM zcZxGCiR_$v(E<}`;o3*nxT-b{uxw#1=IbQW8k&^zE4OXO@0f%%mr6wq%)x8X+5TN5>`H3gslaL6lwPM5=dT<`; zb7FY7@48+Th1SG@W^7x(p4jJhuvSRbvTWVq5I4i9TD2Tgm(5MV4b@t(jn|%&z@wzj z<2#;_Ou6yAcXP)jUt?9Apxrhm@`weWxso@o$)SovG#0i_7 z=eXbhZD__g6?RN#eC4a(Wn{F$L{oVDnWqy`INSK#{#9y8q4jgG_b8w1V9+7(tIW|- z{HKi>9wt~HC}`mud2%X(1B=1OmUQ(B4tc>#IPQhdCrcW1*Wb>yZ+#oB@BDydrj2%6 zcu7N1=tI+4SaxbbT`!&xt&!tpZ`ZE)EVP#bKjdpmeax)-C%hi@Lez+HqoXW8@i%$; zvtPhh-uVvP4cF0VJGxoB%z5yxj_OuZjcSZlLuvbPV;LClH>^<@gr*LQH`~i~)VUu3 z>HDYVMOL{7YVh?(g{+w{@wDIO*cUv9`|#Ku(~RAC3+vB&FC(d=>pE3Iny1BwDMQ)$ z_FA3JTB+I3pY+s#y>zi^UoIxj26alO+a;Np;Osa46Ib4P8_8IM)U_C06fra1=E$`x zdGFi*i6$u{Q8N_drQJ_q3#~mrLxwKtU@K1D#a%F))M-lkPLD~MmPv{=!LHBsUxMp& zi6?im{{0{1#}|BxRYyIVQ(yIW_@marSVSI3kY^zbK-guru43SzY}UHx@7imi|0NM0 zIR65g!U09SBfa}B8abNWPP;Uh?+;^Rh&2Ov@fBKTjA3SaCnF=Hc<1vm zuL}v70!;3pz3Cy69IbTXnK6b%M;(cZ#YmNeT7W9rADg-lwj8O0IGq;VhaN;SS31wM zT$d$>9YSVI9s(leZm$J`Tr18*@`M6Y^bEnt0*O!+Z05NClb_=DFMX9&Hby!f;v~w0 z+#s@XKvR8=(5m!gD-3j@(*bhVGMF|G7%L9`oLk=^qq}%12R!LaTx_s5;*xLukZtW0 zqbYy%^vBYSv*5^-+qinI9pQDfT?dJ9*+uiv&o$RMq|*OM{q#J1kIMPTW36C}Mbuy& zBuU%G9dX~6F5$ilKTnc^6BpL5h$Q#@9QfJK)2#5VS?gJUrfasXrPZg&Ta%2A zILz1t=f34UF1X}Unj=eb?Tpb8L8sdsv1%z7fA*8aS(}I$=e3+v7UgWOFuQ+xpe5aJ zcm1$-^(0h!XX%+Dnp|gQ)Raw^Ac(a%HTX_S(%r%B?|%n3eC5-uee_YB_S(P0A8`aa znglD^0-`b0624)e`_is%9%a_7r`V70dT=wBegCJ}c!X}6g-`}Sa-9NFouxfLUuwdG zhjC}ujZ>=5C^QX`wJaJRo8>#cFjZK%9-(Wg0hTPR!+aJ-c@ZiarT{nHO4EaLDJ}0< zdd!h%BPwnDstqBh4p0Q*Dp}fr*yejf7>|o6IAzBjcVgR};5lOrULs^-5whmM@-UK` zdrIBWVE~0ddcPmEO1=AVfg)|+hEC6rL=oNynF!t*mL0kpY> z1ywLzC7DXu_{j^o`XlGFMhvFip^+Gz%SyXiuf9yc>~%mg72;PXJ?EQ$-B-JC&p;*T zH|I`E5S*D1+G1FF%4x7{1tOLtvV7tbUuN0L18G`#-k(2>kS-9F!c+Br2%SNC<~8;5 zOLvK6?+udsU*O1*T2o&7+lI-LF`>cEe~ZE3;+X8f{aO2x|IJ~4@~3p04QB4XjhjAx zA=|(D4U!$xm~JPSz7|R2T2096R`h$H$Ize1UH4NN%xxY#a}57tY@XoiL+GH11jff` zFJ8hEUj9mMy5?%ufB7>swogH;gE3N~x?)Y3sPqSC?PiCkyWI)u0Bm~ix<=it|JW;@ zEz#iIWvcT351<3afb%5L7##zrzWKFuj$X&kSlF+dan*V6!TXNZ-5j#RMr>;?h;(DCWHvUc|>P{u)d6-yiQhNhH`zSQ2|ad;a@r zN}G{J6H&#Q5FRPBEU=`OCp^1>*;SgvusPH0wkdy)WwLucKv2qodruvl2|C#(*}9!; z-}H~%@Re_H^yz1C;yHhVJM=*OqL@6qxo3nRb2PfUzL9FGFe!`>f~B@M37`4w*JyWr zxKE1D1r0Q$vTdm{TFPfx`x=M6xxY&WQcV+))1Zpmck$xU09N@b@J(m6qYKx72WVtz zd11+6hk}WEXg(z$r<$neg}cjBls#fho=4%pb=mptukn+Q{yVGV1k>pd8B3OVq9~#e zh$99yipS+i*VM+$bszk?-lOi~;cGgE@b@i(@dlIT`2i+k(g{cW-s90`0_wT@{!QGm zVIy7J;E+SsvU=5WM1t_z=F_D@z&>pKt9YeqU3XpN?M;EE{}mpus`!Q6O$%Jm1mg-% zbz?DJNHQU!NftL5dD0Vk)Ze~=u@g>X$EJta`n_*+&-ovOyEkE4GdRtQYkX)hbE+J9 zgD!qpKFF@tO$OrayI%h~t&y4tmeK+;G6tg|hQ4NB2dr2RWk^9BS=K_5 zmZ~IlI0y zbvF+JDQ9XRT3Pk^LIG_c6CrJNh-P+h?LYrBxBuj7j(zgeIp*v)kgYiwMq`WzqaoC> zZWN$%0Ua`=+o`{UB3Mp+2~^=Trc(IW1s5@~crmH>7#qSoMHS;i(-5>jw$dRD)co&3 z0Y89RR~d3pf=VI~Swka=!q*wu$IsQmwQ$Y47B4gmdkAt4$8Kx$aLsx0PS~;j4kB-G z>cfQLHy(u-8&Io3z8bk(N_S?O(XmA#yv7)O%>glT!q#8iLIc733{{60!^)$Mge1;U zG2erv^aoYV8^ElC*9Y%u-+K=Y6}0O}GmkS7Iy#P7vAhx$QuCmfYW!MoK?PI(4DTHx zf}Kp6y!^Xd_MUfeu!)hG4smSq1Gshsi?4BpYXLWf2wM6bGqjc*t36)tWx?UAKssZ> zWT%x_%&O%qJMmGZQH0urPh9u~qVZ9trn)@ug@0Pn$#Rjc5rdey7j@5_z2#vUf&N!{ z2sPN>;H7tJW=!$y1uI9NX>d}CgmmS89Pxq|@|c&rnC-0;z3U#Xd-uEO{P<@ioo=4n zpjB=|oxU@d=3roLqI|B&AI3wRC5P4Q?*5+bqC`T*^e5d zxC0jRwDaD=-PVyLW31_9{NOczN4$Ls-)Z6c9d+i2z0?7&WkZA83hUN90Md23M2!Yt z`_2zJ>rHQF>GJ((x4R@07BVGqZ9e<453_RVC{5cSvAMp&=)gKz2gt6ggl8Fezsl}! z_p`sYhP(8HQ3mCGpc9EFa|)A_BoA%m(sR#c!_R-o8P9q)N4)Hn_?7!%Ml3i`?|RP3 z${b*h7G_S)R3&sS8W8Vu9R;56|MV(0Y}|^shHlm=?;}KOlwqxfL7H9*2Q&(();bk30-#B5Zjc6(X%V z>O_r$Gf%|w;(e>H-j`P<@4Jsg6z?;2G|G=bZC;79FsPbSA?jjzlf7&T#SPFW`_BONdAc z{co?6SKky_WcIYDpOv~dGqYJ4cJ*OT5!xA!1B#YS@|+;27CY4@y60BD|F>r`ecyeY z{@g!j)pK8fTeb{oSj6X_i>;=y{f1bxWaYa(7^{o1Jyt@pvyB_P`~Clc9T}zT9ZB58 zNQ_T?&@|Y@4ewFW+SJ{uOm_AsFXMKO`Zt7m+CG@s=EI(p$PT>n!VhD8hOFpr12 z)&iooZpKYcg}~9+V3#b0Wy{LOpy0}v6c}U5T0V0bHf{twNCJ9Vh=Q5gNq6H$VhkPc z=~zoUZm{HtBk<2J;z|>7^)GH^N7o_7@${#hN<(~Q(2-|H6jKx(5Z2az z81AZ381AFKyFzFEb$_si76WzEQEIdl6QUL>4|UB0;~ELs%KbU)6)$G(?>&W`trk0f zeigTU;C$q|8%d^S(5#Iy)WY5hl%MLEt;+VH6ofr=Vc+eg=#g_2p77DcRl z>Qgx3aZlv4Z+|PSznR947T$I9saCk33kqc=2hcu2bUg`M`}p~TG40{^-ke;KeR8i1 zTl>=X*$7xbBV40F{FKLY>RB)4-u5KpZNuhoeVSjq_>wocfx%z`({)b_J}| z030!B=25YH?`PNXS8sR=i&m_p+X5T^|LnbYyk%8=|NZ{1wf8Bv&7BTI?}`OfL}TM; zi?PL;C($&GNgiYJi-o2Lq6U)~>@jSS)}=zyQ06&SxRVPb`0Q^D+52n-KD%9F`N6f<@$K(kLvwP9#JP-Xk(c(eeZ*v|p%5bPCKZWa7ATtBV9z-$ z0oUBdFmcpTaKIr5LKGQ3__5E?Sigw~&x>F1EX1clX(ca%S1Z^2`c)|%m!0>qPI%?%==x2xuD_oDdH;LZ@tKRT zyBA4Y^EmODuR%T!G6Jbq4ALq*gAhm=Aov^@-xrYY?czk9bQ_9mQ}viQCLODD$m5>O zQ=a?BeBy2A(!TPW#Je0xyBoTeQZZS~60GoXF8uN-LK-mS-e5C#^rc+|Ss^JH7Rl{p zh|)5p@+JAER*d=7pdKP>cvIux7ydq*p8jNRPZOqFDObMZo%ruuL)7lzoy%ZOQYe|} z&}&&qPbfU_q}!qG99Mkr$NcHvp3eC61{P*pxTr&2!L;Z2_r%7@BRQ$Jtp-^6vbgZr3x-QM;F{p zvUJhWqm!h4#h%QZQSN48Mk)z|_nwLIv9d_8LZ@gnMq{rZ!>W^pk!jl=pG(6NhfrZh z0GBdxCq7 zq(&IuvtO96hoGkHL=@E$ z?*q9kd%A(L7>FCKnHF`^;>)i+nJx2kG!lmq4P6&s>SCkS%AX7^`wdmV?iD~O;8OYj zuK_m|ey#`!!a|a8%o9$+$76U^W?OB(_OZq^Qd0ohB*ZIfcqfwUyI43_7w{y}GMLUDS}=JNN+y6Anv}|FHi#u$hJBdK zO8?$e?om?c=a-cf^@_1|Tmv3@_G{@JdpI2uj&7{sqElZ3*WHY7Et2A~5(E{hYqLL? z9h^v1xKs+hn}9L=^5#4E+7B?ddz^#${Rw$P0%Wyiw9lLcFlZ{H2%jsn?&wnl=0L z%s0G|#z~JSUDF_n!x^F87fOMZ1ysUnb=6CLVAn@PiV~em!)C6k+;r;rgV+aGIb7n>~G;?3u3wA%I`qk&`uJ5_c>1_c$fy&s;a7D z6+W}vVO`}~40DuS-I4#lWn~VpE{e&}dJ2&$);lmlckMV+zxTU5;?=KWrd}i7dJ8{( z=R0YC^;^{E7lOR8k#c?(NiBsMnZw|U@?w}PrNi~!rX&u514$s3=CDX>Eq*Mf{*Z_8 zjI&w}SkW5N zr7aC9iVkJg5*+50RFqb1xcXN&@r*xuDN>&%Z7G<932*Upck+$PFX8wj4n|#YsV;OZ zJlTtuft{44XOav}5LU}!&^`}|LTjrMyoyS8wn^xG8-r^*>T@k_{kQk<#kaqeL+^Kg zPI}F0=!1_Z9cvI713pyk#VBI5=+bGX!CLtB3_7@Ub<;+rL~W`1;Non+)@r=(10P{A z(J&X(V#|FFpQ6$ z!>?VqTC%Y7xY>G`yY&uYv4}OK#<1?FBk*E+s!_e>VPQvWcNej7jUvpK(uT)+&+Z#; zplK{P#YQ#S7&aVrG(L)o?=K0PgP=HjGkDSB;0VCa%tK;k7T-;R@23eBPiHL?`|sC# z&{cFry$_Do`QtGisI^+$@ZR&7zvA0W`@rY0QBbu&2%ZZPD#ks8*nux>aMit+PAV0M zPsL*A@!Pc=vn+{Dvfc?P%NcoW}$*FVzOu^U}% zq2hydtOVWpvYnmJ~|!9gCQrhDwyUZ9JG#SoqIMvn%_n} z?XvlfZCriMKQNxAINuIMj*4%`fZVM>CTVW^<^#NvR7t$!7q@QZd4KjYXfz=;SmT+B z$4O?k@|pj5KSvy}j#}N&u%-u#mv^>$wz#2a9Vs{g!kz=LPa=tF7Yc~MC9mZkjg zYqmpt=Ps^&^IQ4G2QT2blb*=KPdyoTzeDkp784m<&RNKU?Oa~m=N>(}f+NVPkZn?Q zWV~vCbQwdMz@1xXxbPDfGdVSl&)F%N=ZWI+K1it=4ZJu}sWv})4jLJd53eY&s)JcJ z)mt(WAW73x6RX%sM*IC}?6Wa$fU(hYxLfthCB=YD^N{&%+kz>Sg^q{jK?j3GVbg)$ zmTo11@LsVt!ugE9V9G?qqzMbR-9`*J?@?ozNj&TCcMNJ{jJ1_IUauB+Z}(I0_V%JZ zSd7X6<~^NVJA%=fH35<%N*dQ-?b;%+&#f17RU;L_J1x{mn44wp@=N*gCobdwiP3gK zl)(Xl7PcWWQ6?GbDiW%Fm!wPk2}|#Tg1}nHyb_4BJ?(((Jvd-aB94C2-T5Vy2AEfmQZijg4IsTzozMqq55&Vh&Vq?et}%&y&h_uX$J+SP`Ic9>I{!@By=5wy9|jkrGY z^RTdVK*wX*^8cXkk$Y|<&v;U$474dt+0^3WNhY5BG#>FcFXOs}879&Ott-FJ_5b<- z>RrJ}T9`=Yf(_Lfr$qrtOXElDaoskpH09bG?&Qh;&r2}PwX|CfXS>u=Pt={`E0Cs`NDAu!)2y8TwZ{>C%7 z=9}N(F)w`yN51@3xWf*IW&=xRjFxfF3)tep;8 z=t8NIlUD|_GMD!bV@y!~30rTk0o(jM-Cet|-V;X#V+>s}L`NQu6N7iYNIa^WmsW}y z)q=b1r3aGx7vzChXU9&A_qZelfkc&PY8=L!IdZxO6-`E(_9oaZb!O+`rl0f0x4wl# z;&JFE)M6VdK2oU|^&F0wI?~YmKnM3)q&M*?jB_Mcpvgr^B*UmHrWP}AYi#+ghvFpx zlq;^d8mZUONO;OqACs9!l|q<^RxW9nZIbpe5C)qsv8vQ#v|{r#Er;lNBRynHe8BIk z8ca$^)ThUo{GBK9s8^hh-LyZgUtZ5o|Ls4R|LWJMEw=GVyXaW>Jm@qPjr+>_?pb*I zw0u!_1ZM)Id0v?xjUa};pzeOj@quYm9 zfvYslVG-XwJa6-7RJ|wBk_7G*qjg*qbHq#kgtaFDy{FvirQnQx3_Vhm}kjjHmiTekA#=e>|YB?9@yE_w2-oefiA<6dK0J8$;9cE?@x#k+aa_VX9zTq~W{qmDJ z=nr0q+cFI`izO=zsjuw+l@2vkr6uXB=&UeJ`lpumwtF=5!Eu_htJCH^=YN>Snkl-Z z6(N$~lSAGSlF->sQ`ghZ5$zZ7U0wHhc!NP$qRyKA*?VPba$@N1?qv|vXpF|tgrPZl z4tx77SJ=G^I$a_W67Q(5oq~ETNT>SJk+dK{XUpEDDRHd{YOuzFcZdeqfU2W?*Ih{0 zA*l-r559{unlQblgd?d|$cy`~epggMR5Rzvyu+ZRyLMxo!=g0e8lA*ZpI!$h&SU^9 z8);U7S5>SSI&&@RbG!Kb*=KPmf?t>?4n_P>9`Yr$#PkS)YnfgRB!*R4%@tkp>hsAX zOAUvMXpk<{>@W;BZJ0|E#tu6I_B#kr8nqf9|HKymtx6B} zd+k>HLR!&tACy>(U`MN&m{O^&dV&v#BM_epiOIa=D1oP9yu&KEIKtikejIzonXG&4 zV@c-bx#6>);rb7LkZ9X1vd~2dJOQUl>OJ0A)EmS{;4_Fq*4mSOa+5=n$gCY{jLBS& zL-jXO#YBSJw2p`V?a7R9T*GJI`g)?7MVRkoJ|>wfJK(Y)PKu;CS1;35%*B3p2jRX! z#P9b~kP?z)9L@ya2`4EwZs4OjkAC}Gxa;6e%)131ux1?>oc1@EUGpS!?a-~t{RgUK z>P+3uXN2-jnvyo_{P$Hq<}uHDA&u$HwC7V?lrm;4HJRt~FMfu@x2(ewhc2eC zTEz&7R=Z1;5`*;bcq{k1hH}{kR`D}lnk&~>YAmUD#GN+XE56C+&O8H~IG%piSu}t9 z$*^H6@Bk3JbD64LIbFR3o|{(019J03DjblW+<2ueP$|4hR07di5R5U{sKx~sUCb@p zwj+_jWiTZp1`;76{N9TX-6U(WqCnUuO8$?QiKiBlWlIDrmXv%}de9O$QsEg0Vk~Q> z))c3L8Ir({(uL93hod=481{O#FH}xiTeqQ|6!o4InA(3od>jWg5<@QmR!Y;I)H$MB zoxCT4$<3a3Qg8SoW1>PUq4?nTC0ZNB{K*Ro;j3~?(Vj!lrYvlQ|ad16#3 z87+5m=&;je=_V^$2AP5hsx$dPEy46D0otM*@wneYqdG<{4$oCr{fJt;njPdpfMqE$&`k)W=PhKbHIyU#Qp#H z4_WXXlAr#BAHVgVFjrqg)N13BHpW&u3dRI5QpM~n|JnCUN2My?LgD?Pg+~n7i8^j= zgA@Psr5t$J(R}*Vub_7GE!epQJZa(iQqp*oWsMD%?gRr3sD>=YdpOML=Py+a`toj+ z7SK`?H%P`BJo7DY;CdF&B;mNa=bNXW!dL=6=^_$b)N+Vs)knY>gLW0E)%fbSujbi* z@=~Vv-$L4gS|egZV}gadZsDTy-_OCDCWvc7ElXfUw1Cl+elUZ#Gc9^JQpyjrdd|Yo zRBpg)%afuUHY8qr13Bq+XTb@_v`Y5eT3%3T2eq_1Ew^aGa3xpj1inqffTfh zwJDKxc%Nnt;5O?*2Su^!=F=;5y9y79A*LZgR$ZB1Gg)d=>Czs96i(iwF&g_WVQ7q= z!`=#-v*DG6JMW@yECwO%rmWqx8E*oFs9NtSD^g*hr)h#Q5r{204B3Wbl7z)uZVU&C zLKH`IQpegu4*?sM71fF{O;r|D1|R@rFWh_x-hH`kc@3~BBd8jpT8vYrF*%u4TQfB! z5!3}oW{jbmwrMutns=NFKl?e&t|u~?=8-W0=UTLFwNOLqfnN>UnuQ_S=#{#C)|Dxa zu#D`frtDi7F{EB`)-abkj(pq+_7v8Vd< zqaS!)G`_-6R?m%`ehGIpQJO!CZlXVyR9mogYlMW2+WWb;At&T$pjncyL&sP!#4{8E; zz#43=fj|5xo_5w7`T6_|@$TKk*Zz4R=J5UT-V$k6?JffIUO$53ZR^rPl~fbueehIE z$K|XCYQcGfUsxoX-_B3p@+PkO)I}Wp@Q3l3bN+$!!NBs@7htH&!McTSd! zA)W`tg}I6>v-MTFYSqrVF1>J*xjUy=K6cS1+<5C<*mw-*1QSJ>NI=;^u@aP!Vq*}i zG#bipKlYJqnuu7_$W*p8s3~C#YQh@x7*tlsX!>4I318ISwBIW>BQva>nhc7GIV872 zxG$51QMxc1`)o7}P#-;qm20=M!gp$4HD>YlJBfU718#S_OdoVG-b!HrRR-}=(bE>Z zI;^$f;4xZ|l@-N!W#*<^uo%30(lo(~W#bWt<0F&9FUty3#gAcG%hS8{kowd*)MHdh zW@m|v#d(MGj#QQAy0wrgerUcqT7yGz>Zm0tH-GrU+{uNx|9?m0?$+Hyl`+qf!=WxF$A)Kq9$6=;@Kf**Ve!od?#P3A@M}(I>Om*c zo|)mUFMo;a-tz(MZCi;t363-%5;7ua6>2zmQp&#Dv9hkENGYo+rjkTCh#L{Tv;01o=t`wPP{E|#J8Fb1l%oR|vtPqCRC|c9zD(7#DovGXCsk zr?BPl!`U&nKx6$lV-gc5GyK=bKF)y~rfAgaG^051AhP#l#Psmpmd=>o>T>U^x*I8j z42gABvyzQ~QPRX=TW!ou*Kye^U&Sx3`~fGu_{ALm%2P-V+Kicq3Y94JC2tKWlc6#N z@xgsZC?J`+Ibo0A#S)Bd2`MWRi?Vf?pRLaO3})wOdwBah-pAO)G^qiJY#~{zLCPxo zsO-#1Q+&6>1^<2?Z++vd`O>E^Ko{pRJ}ux$Nt#l6d}`5=u4V_?e@G1~a`hAFO^_*% zBFlz#YfFPy)0-fyEVn%xqj9%K-2k=GbGZAp+pL63I7mFyH*ZFb4IPF) z1D}Gu1{f3k2a2|~R$7owS-j)+%rq!eZIzgn=O((ZLX`{}lwGqD z*p_~=O=N8bs}kCsglK#X-bdlk$p~de1uH^2H;-QPeSUEM2ian3XuC^f4XJZ@7jUOQ zq4S*wKvj(v`8D|(d6-ii%p!;vtcCzn4I!!V4sT%Ic@BE$gP~pzIB{e6@@3z^iZB&L zJo>~32d7-I17!93Y0tywlkNk{um5f7zCnUhv4*Ze@Jo=AS5S@Rb3uYUs4)U!5vRoJ zP#e>koZ!H}{Bw?d*QVI&I6iRsEdy!Yx%Dt;#! zX__l<5hc8+TV??LiaL^Ww-07brQN?`Y%5Fs#9G`?&@u+=psA>+Y)&Eorad~&fXI&o~uKiP=`7ds| zbt{prfwzd*0OQTf8pMPLkXBvLtjys94MD-e7RmKiG z7@zqV8!266a_9>hOk*+~&q@$1Wgy<^(%H71nvL+0#b^Ew;|J`I&$tU^64JYsi0qr~ zWw7y?r@Od_F@_YtMmSaC@dj!^oyQu%X5X9aUZ6fZ!=-1xfy33}TODe3L5*TCp_MFU z*Q849>z6d_mpNQbXr`(?m8?PwTzyai$#k$q6l}zTsdLb8oq)FnF)=%4T5R7rPc4o( z=7<9rkMj1nu8d{4g zgFjVzsv-t39UXK0wwbbSoa3mpV?upEL*GUytnd4!! z!r|zLAL)H$uU@J$U6JoB0#XM!)GM*A(ZTV=bI;}aIap2_hsB4dJ-YZW;#u-h~mqcKVt?vq`IejS9cXDF?0TLZxg#fyOr z8$-P_t3c#r!m8#!s#q&MCOKL?E#`LNXJ--Bp!A|(Yy|73F=ET$v|lx2A6GW>%2W6n zw)v#p!I+4|DYhPy0`b@cY9qYKs!K+2X@}Ug`0sPx$okn9(&`e&7N;Kd5}b6iB*;@i z8Y>0aET}_O-huXGIhBEI<7%>_)$_{Wjlo+*jR*CGTXTwG#@1MK+;QQ+GM>x7c@;7~ zfr(?D^rVw;>PrbHT`4qNnn;w*`}=~b%y0gR_2P?o#1z3nKU_=)RLL{x$}IRd3XxYL zZ%FJIog?qZ@n^lBwg2aF%+Ky-+vT6*miNC8yLAS?xEN$Nt<4foEp+)yPQze9%)Q%T z=-UG{4~nx&vIzm1wKclyHgWJXf1k%Z{df7~8(#}I+(bOn3D7KKa8f2eM)QO!tV*vb z&N!Tald74W?t>j?Z|>q+36ec|$J9vROljtRjTl6QdOQhR4(8FPoX#CyNq2WRc=v9; zd+I6Fe2pF37il&p`Rg;@%xVAl9@ZcAAa2|_Lt}l+%uP4)@S_jnD;HhBbi>kUj$`sJ zlvD#sSqeiM;ImL%y$thNSeY@Um1H5P*SP{#s+udqNueGk?G$_a?R@>Ur}F)aFXqHQ z{6ijc`sug_9E%^TV=)-@VXbNCz7{{#n1Ul9s=-A(lb-e_Q!z8(B=~}eg7G;4Ia|wx z&_(`{g`jrELCaxD_~$}exe4XHIrH0$V#1s8sf$)&T6qBeYP9L0DW z^WvAC!aL5tkf%QP#msdgoDVO}`xNzQ*j3bJut#04gt026C!b9W?;VrlO=_|2OCSdq z#zv>bXza^`AsRi0U;ii`xZpb}-JQFMO&kc6^*T&U6{N^Q-KU3|7;u((LXo#r^MFRx z!`7{sZi?}x>|t$k4UCTk`MxTMMef-H+E?vNeTt+B-Z@Nc@dj)yrZzDaDzC${4qc@jl$O|Q$+AE3;Jpj7 zoT_*u)HiO1skNv&B5V2l7ruh2)kqc-jz8{LtO(wP?gX-YaTI4G^EGC!p&1FpQ?mO=CL@Xu+8b9X26Hd%<)vG52s-lsJQ&&e!p|ZP$PGy?X1}LB zgH2EP9kxaWw`+zQKJj1p?_JBr4HLZZPhZ8qfB2Ie_TUGwZL!7Vh6!fwyo0F?85HRC_tPmrW1 zoiSWHvi{?31+J~4%}g4aw1FNY!(1+VZW z^&X6nCLS?0w(f3m_POuk`W-u=*1$n1Xc3Z0@nlJ6{{H&8bvigFcgkdiy5+0zvh%U^BjZ7V5>(@hlEF&RG2{Y1?(3Wo(Hj1*i zHw%U}m-vIu9d}Y!#U%-8nv!}?eZw>w$C$`cRqdBO$$Iw2{Z~&m=Mc?2CF(Vt_p}xl zX~uOTFQK|*4Su!-Kl?d9{Ln`^Kx4WKZHzUA*-`I9r94o?lwr2!&*hpaW`! z(s#Iw{5$t%L3t_oYxRqy2<$S+Q42(=Css)75&lsR=P_@76Whj`)MvKx%lEyP#jjjJ zeX&KFc2N_8BA<~XtLsKGC8q+XohirMJ--cEHU%wUeYsDAQN(+!QT)0IHa_dQJob6d z<^$)Pfw}DtqS_#=;1< ziOIS{-h{%4H4%$39Dl~Exp8`o9ZkpN=8b&m;!pA0$3B8@UU@YK9dRTJi)|WfQaW32 z;hfX{f;YYT<T?uSStRN!LJyRL9?n_N>ib2J{@`)|m(65<5nz|#J*c;V z^sN?cb%__|x$Wa0;^K48X5+ezJp1qdfyVDV6~A#B14Jspx2DgVZwb-2lB^D@pH#G~ z3fN!{;j0!_Oit?0WsD;s%|F)&ntF`Qi*62MBQE;S%lYMvcVZeb9d!^JB4aU$5Mi?- zf-l57YO#>IE{RJ}Jl-4DjBh{_L)vj!VJHdbk~OG-L>xIVDI{ORreA;ZpoQ2%UO4dH zW39nC$J%w%#XT2A#QVT18jb&b34l{oeb~!foGqCvkR=naI)s#`oWhi)_)gSbCB7%tlf*Q&y*Vbx0JUVnf#? z)!;879z;lX&k-#y^4YV_;c%&;3yU=Bh9pfYrMB|ODYzchW2nMysG6ho*5!5iZj1ES zVoNZrXh>1SE0MK0V@M;zp$|JA7saHBaMzCA+w2wc5>zY&i`z4=er%Pen&~{y#b!esu?|=In_^TH_8>LGeH?oFl zkPoU_TvWx>q_4ivQ&bqrS?DFV4+OjoQuoXpoAY<(d@%TtwQj7Mi&nj9y;imJnx9`AsAD}+Q&`liUn>V6H z3fD}LduQX&inFvBA$1;!Bf8$>NHGy;vq6$|PGX~cWeD;dGXB z5u~DPua#pw7tYq|HAug3=?cmeT5=eQ&DZoEP~t)mYh@`;Z9hgxD!jG){Ybila|Hje~yg z_u08?8}^4k;l^{%L;mL%L@iIENrs;Dg<+UvoB-oPd0R>`)4s?__uek1WiqV=kuv-0 z!PT`JPlYfT`Uwazda0_NvEAwd(R7~MDVlwS|QD4~=2dINdZ)LSVxWBuJ z!%9BXOWv*ydM>?bejcEy1R3aDD>R)l@W2P~#DDx3zGK&OUAx9y$5M-9q}5?;w!^3X z^}Rg#w@$=H1PA9F*d(QccD_%@auq2l3m@8(&c3*H9!qWIt=35Gxp)uNy78QN}~$4UscJVQ;81p$<6$vd;l5ig6nF z8_uzAdQIsKG<2Gb%1fiM?-K?ydJcE9t5Crkt9m-ywqaFpoestr#x`xn=L$yjdL*c3 z_*kXK)J>|@B~^^~w6<-dCg9TqoRXxDwFex47@JA0mDQ)^PoKRXQ)%DfW<+pl5;o*+ zN~DgOF{ttQg$^^9Ue3(-zRx-@kan?FaNc9QU`_sxM(yVN z+RD%2ZW;He2$FozSy44eBE)e_cdEgf=RAXl|Mjc5qun98`Btuf-}xlp{0_BNN|Lm~ zuIn}HGDuMkE#MjzPD8JT>E2qiRqTG&Eih$rqz>YGgj+Yp5zqZ29{aT4Lkzdz}d0WVfrJ%L3A|059sOF$Ht>7K?W=JMCQndY~z;;M7s&Yhq69CZ_% z9a^0>t&Z}xx4e(IF@Y0<7#sKtcqB4~XGyQCbjEqgl$bKCUB&ySvL{qwRuyM=9rP}T z-Mdt~FWJ8~`CIaA*sx(>VX2b#jkfC1*w@3DQ8cpWhmZ{TOQGC6+uODgnFyo8e5=ja ze*5E%E#&12Xi|a6&(k+s@yMwvCClQK8;wfEdPX4da!x+a=zyolF1uoouN!aP2mYS{;YSSc`g(x-`R*hK<o z!S$c~7`I(`A@#N=ZMTsqsK^BPgp>;G-t<(EOL@|}Hy8S4dZjW?3lN+JqbM;TUa^tI zub*Pe3;u``p86y%eA5}2JGUV-txQcODCmU!s)QkFwcycr-O~5p6_@9)UEGmXKa)_E zmqK(Rcm5U$`V6L$>?Dixn8p;}zVcd*d%$C0EQa+pYEy#l*vVtpt>@$?p2UWkMW(IA zL!W4`mU~35y+7zdXn);D`-=5d8m;u*PcI*0srUjJha>!KwHD_+akoqS^Ph6XnP>97 zi$2S7PkknjJnId(2S1#2a*Uc4j1NjmB8rXjnxpA;q}Cx1TleHhD!*AP=BAp#ctg72 zfRwZ~gLdcGI5EX-*IfrD#*ko*@bOQ7o?Gsi!A4Q$%nY?S#-%P3Au$y$i-b;JrKppe z`e|R{k|&f@I?1`5u&yxImQ2=c!FYnom@~mIMvXzmuwniB%JHT{psu4a8v8a39wiLF zMu%abntl$+@k)EwE+QMCH4?|vHf<=Jf-}w35Ezr^0wpG2N`ry2a-j;Tr!zZ4Yy}%f zU?MsmYFqZpTBb|ON%#1REvjWfK?di*Llk5zNM>40Abjf`Z{wg;upLJnMRuJFvOTSXj%r2s&8;#EueIXYnrqeP(=Q6#1kEHGUER{zJk5h%_gdqTwvk?S71zDhrm!1ly;dx4YG@BW~J7K8*&Mjni+6HK#C zvSETlpZ$kC__t2tlc)V(YIoj+nVAP%VUbsbC048EGC($X5T{`ff@M!bBH7cFL;J2G z_s1!sztAns8Op8J0`b^1um8t)@ccjj3l2K^Aa*TwkecAql*2b{V86R=<;D+vfGghc zPq3KKUT75`o#Xv`joE~O?U;THd_UZ>;Et4@20bxEhp11iCC!s^iBL3y@s^$WW?;^Vb~aF47OGy?Iw8dsHtac`&Qi7u3+0&zQ&XXqYfj2F>%ov&-7J# zB3G4gYdpeUNy_$Mb^-trn>ykU7BTBx>=Rg)1o{zAzTt)lms5gjOtR8u$&t?6iCj12k%v1oXXgI4>l~lH;iVV`Rw9%M$*Yg7ZYyBHmNS zv1!dXx%IT(JLSO97!Az59l6LVet(}xt(Lu}vXme|d-qKCU=^&ztY2Gfe1(!i1ux%U z94M^eDGTV@YU5fhY*wA}8XQ_#H(gXagnQh6VL)A6g6njxhIc78vZxA^wFV2{zlNW@ z?_(SsO=41r$&7Wf07ZH{7KT6P9CIuEo2|&6y}62Wtqh1FN^wF+owDdHwSx}`E}-K0 z;SYa8+-Q&_DfhqM(HNtsD;>O5mJ8HYcYKV-eY0FpH3|%>G-b6HQ;`$(P%{zT@dlGm zd;*U-^9*jCYf<02gCD>1?Qr#vsCN^*OTlJAS!O&H;1fP*%NL|i?&dDpyV+=85Tund zXW`SJf;yp5k8t}!@v?BWcZ7RE9!=t>OnNw`k^`Ue!A*|K;%2 zD-2dZ8WfZE%0;aFMyr+k9uvy!EgFRRg;}O1r+Lcr|B{b={tFy<_#w>Cx7oCQ9XoHh znQwgkQl{5T!o&t%aM~-`*`49wbxpQ^?+Q9seh*n}kpu}f)c5kOq&HmvpFm*0>q#1N zr{jK(gGgT&qOT>B3qVL_)Tf#ypgz18Zyc`cunQgBcfQNzuRN8zuKp>H`-2zoh*M7^ zJ^C=r+Ga=!w8ZWksRYQykCh&tndqLZr^?=K7m~($m6W7=g~*ERi)KurvbAX7CQE zbS<6w9?pT}gi5KJxs^dkcXkd*U4}VTyr!6D1EQz^B>832v3+^_iZxl=UO=oNj$e|dDtsY!!$i#e&^rOXesI9 zVj0xsa+lTlTXbl&^i5$YCsvmW?3el4t2?JXYi!sKP{!9)_)h3`dexw-kFaxb5g(89 zl;`~gKl;V>M9n7cc8kecot@WT#~nBPh=bOTv2J`4m%u@P_2*2Ucmj9K%yZ<1{WG?Jt(DJEvQS!vD zARc>+gpR%itOx52Cbl36Q7z*AANmAaXS=A$%;}6^Oy(D%rO8iFUeYD!g{rPnmsfgC z_EwTp9b~yy?ObFqT+R3z6BCov;sAr~Ehr6o(4)@vXzbgB!QWe51zAN`LGNQrU@$kW z5;S;6x3v&9>PU#14QSLtJ6>2?RZ@Ds%F<5+RXVeCnIW3bHcug*7>CG~!KZNVZ5~yO ztXQbkP!l$G5rf1Al36C}9`#)ik5gCrO&IBwFU*bGhH{p*Ae(7__u<#S^xmpxrW}*1 z#~avi)Dd8UbEq*9zx?HO7-N|lA7}IW8YZjci7}O`;jkl9RynutYb${J*lN7Df4mNv zP+CYGdm}gvWM*kJNH?$L0k1oS`hyd3U1 z20+~QY<~3AZF4A$>XIO&hhQm{>bDonH@CsB&Pa_gMkNIoj&K83U}7+Pv$X=M&YZNqm5ms%T~|r&tLd3MLpYRDgw2h?5ja*OED> zJ%S~|a5r;Z@hp}lz7@s#5J8=1{n|A|QI!j{M?{d(7>&I(ydlU8+$&uLU8ckE8@mkB z6xZ%xL`c1-HZ_LE5t11;mBqH4ztEdJXeF4e%IGDtGa24895l`=jWyF?<30l2o~eZF zoxn+oRd#YSgCXp`VSXfQ9->Dv+2@ZyEJDQI-|7u zJ<@+LgziF+y%oAnS$F86cpHTSMugjL--Fa&V;o35Ofr7_Dl+syT zpyT0xes(jDI_dY>Ig>KK=rFNo$89(BvOj+T-?;2TI&<@^n_OFbqOlG;)|?&`vkwXqB?LT2*q>-Xub*CVM^GnpSBwOP-o!iIDdS77_=( zonq$~+5YKI@}Fm($=qFAIqB7>v+*T=hP(ffXfq~~U{sk0uF@09YLOr)iZ^8nD=RR2 zb)`k5vSb4EHd~f*)O^AHFr@*ZcO(e!c<;ZnI}sA1P??uf5lkvAm>_Mdm6X$0Ityh& z-CG`%Rj;+B%49NRlaZdY)C5siP-WAGbz$wuAbaf5*)SUS*l_oF!Y~Yv`v02{B~5Ti zimKwgV{CE?wE?Em(@8KgJm!%88ikU~&Ozz|7F7(+35_*tP#cwsN^^=PN5kQTC1cc>EBTYg(rhA zvl>pzuu)M(;qUmw;u>JXiQ(wmqF8>=2L!~`#{<$GZRLiTJ{-tbEworxdi>(=$K2v?7ZweW_jfzbfk`_ui2_ zyY))D+vfIdGrZ^h7h;>^5Cu|p5Yf;QtCd5+v^T-bI}D{Fldh1;u3X-c{uH?<=GPuR zPxb#*6z?2c_S=M!(D~{;RYqep?)iivy{8Z5Az}jexv}SR(F#ciTv}j88_gz2gw0e? z%8v5jhIxU{|rnDmTR#USd8@NU; zFpb8VaLm#C!QY?5WtV(_nXmm9^+m;L3ML33crh6iBs0evc)dCx%v#l^J0KAs|#1nQw+D+aa;VS<7SIcow&aFrOwIT{m3z%F}7sI$iI<25h}nC20o*gt|~4V`zB5;w+9ACS?5c85r(>t{ET{u)D?5a%HN5U4)D%7_TO)FY4(~MEsoBF z(YWVFdXFaz!-BryN3Y(ENPh2i6ILz!&`t2p1=x@Z&FQtMwG|V#(&=+x;!t%St+dUP z*|{Le7a7DFQib}|1bQD()lsPg$s%ZE(TOSA7>Ht`D9&`|bGgRM94-5^6zE}Psj1ZR zq4UsSTzjiH{mDUpLZYg@uvwKNICEk!<73F0X)qSAaQhwGNn9XwAAI2c#HP0%H7uf& zJ(_i+@f$b#cuG|wq|qwK!yt~3G&F0ZhwR70&pdJSzes(yjqffZ zHZvB>=c@G9K7+B;pn!T1jG;fdS$=)>1UuCwl%hHUGgao+%(B#%~CV9-~e2pSt?xu4Nwx(sG}3YAN3{q@*Rm(F7N0?QiB* zIt;Rk4p*N2Xzr$5Rm4_V!qMn||C0Gfi0@O5Qs^!!SA6@2eCj{H%GmUJlmug4(RtBo z+eC5#{?cb%T-V?fZRJHne;-SSc%TeQn#ws4x;V;~{WdOR?>RazM&q7M7`pd~x}5Yb zFbcoxCPJL=J zBoOqv#K=ARkSeBU#hz!VPfp{kL82J3HXJA>!_=x`jFc^W(H`iK7W(!ToscAp zIP1$QZZ1cYsn@9ZqVn1!0-$*ZAtQZCFR`@8QM#fx)PD~>dx{ALWU7i9hY?G6Vv^>G zC-IaQ|1}>y_Z;}2pApUYtepa0LZKr!3=I*{^|-@ivkqQRmw9s=DFXgHhf46BK}|`0;05GKclM^11n#Q3%$eL9;4guW4fS3a z;5stQh%wJ=efdleI$*zW8fxgI46J&M#%S#O(Y;p^23@h7U#V1RZs}DqM_DGkzW0_- zxQcYKRkTS{uQb+9qb4&ns%#^wOJ&@8x28(XUBS)IV=@w?;&BS`Gaz@&Cu(dB+3xCATAN~aG4O2+JOBUsb zwdm4O(Set_>C8ZzRED86wM<1Aiv8E@PNc5x=Aq#&e(4CSpY$Xi`NSjn;#=N|x#>>K zmYI<5sRrep8nz+xpr-Tp5^8LQic*l)p15JoS*0Vd6r3lIb3K$6UqAN(p71x%qu*-M z^`4b0#>uv>=jF#fmyf^y-%vlp^2v!%925yB;I-%^6`llfFH`jh34IYB@~W3`*JuM{ z8tmsBKYa6>X!RX^-;Z%l=jMPixYyOaY6LBXFs!GadCY8&)*W|o<-eZBH{X2*yY0U} zN1k#DOP~CB`n!#hG=(I5^iXKzKHXa3tHf`ccxFumfyzR!dd2D{cXO{;W#rT6a=j7> z<{qyZy|j<>F7RHwM^zAG3nNb*c&`GMG6qQunmN>1KK$t~@$(yggK0KNvlQ<&a0g9( zTj$&bU%CIv4$h$e(L!LI8i%G<1nUr~Y#m5(s*HsCs8V5^2<*OQb*+P?^HnK}YjOP{ z77W`>Knuhn*uQ&qr0PgT@wxSUG?K|9rl~xZdLJL(j(#GWn!&0^@PYK(ZXqI})k`JH z%3wgRB1i+}gZH?ZX{;&A4LpwKlCgl=u_INX`=)p(fciq!0n%OuTQ_mZ*S^eHBf&Nr zWTKe1B_qQK*yu@Nq@Kl;=5}?wQRg}PIwyq~#vhoUBBsMo$;y3|lj-^%Cf4p=6b!Zj zH{Ey>tyY7H@o^@Xj6jZvRb&mTAwhR~b6*Sue-Q14fo@h|Vw>mY(R>P{NanG4{8*dz z6CTT7oOl9vtFradi@D+bXOi5y1)1%W5k`D8I^imUQN{YY{AK_!_Q~Bk#+gaZ2GxOg+V&i!i zVpE69ljv$8R)mB>1-Vpia*a5u=t(Kj2(z_QQ@1Z$ba>bwGSY=pCxT4+^3GrFKhjl_rm1H)f-%r6t zlDr!rH|GXzD5%3|?8Ib{8PCmk-NoDA^8s3&Nz$xOquC6Edo0dL-Sa3u7$HeF1JQPv zYFPd6vfxr;c>JxJ+ZAJmmG^d;#~6dEr`>9@V)?Rg{JyRQw%B1+tA7M z%1ome1(V@=(^z#hG^5eaFujb-^$UkaA7?g|IH$NPP{SQ8H#-|zw*ncSk;#cTv+rv! zB(g(Uj9ML$PS1u-&X^FOP?F9_iOh@KFDYhih{1aruFLvwdQp+tr0nHfep z6TI;FH*&%$|HjJw_GEl?DHCnW>Q2J{oPRbCKJ*}zjIohU5NGfqHTLT9&PT<%YPThq zRSxfKt-&Ng{32?@1$VR7y9)iXf%{zx+GFiKU4!_f7DbirPK z13!H88~Nt3&*y?yyqL{re}!b*6#f1z-bi3z7!&6&S%8qb+@s`77w`jaW+t?71)PHE zjD}4scX29qC*A%FS5A_s;(J}JHDoSy98je_I#y9t+O=Cqv4v~cj77oqGuXP3%Rl#7 zR;k6$rZgH&un9@KjY%w-%VPHAYq>`5bX}N6RSTf`%$s!{MGhT4`K-fUQ0wWu6bVTA z52<&IuUQkXo5uln-@OH=hTV5tJ&@JZ!-5V3oP}Mf#qPrIdt+hn#?%2EQwCIf@{G!e z0jF3m&>kmUyM{mems4mT_CR{K{EDkS^nUos6(n1>l4ZSu8|5^r5dp@7@fkw?$5-zC z`D~_if%~GA#ZGbj8Xchncw?3E=*fdKv+lxtFbu^O&N#+fX z!xs(Np#;_HXkmN~y<)85vW)5O49+%q!r#1vbI$)MOINSPnuNP=yOl>gU>!gF<`-Bt z+M?ZT(jXtD45L3{ZH3G(h4G|T3cvbfyhX&2NQ1s<^T1dC1Gg`qq-&IQ#&GV-kEi8@ zRMU_PYgCIX&abb?X$szHFak7&Uf*G6Q_K}V<-cF|Dz5&oZ}89;9?QY6dp+F;9YMNe zl%}y*U;1ho8@n-*cZTM(#q{+HQ=z^{uCP`7DZ5r$s}Qu}p&%s)L+p5Mnc^p3`U(%4 zT*Ad){5;*8Zo=S8sox>4bS9rDFo34?yD8^icq!-p;HR`(ZM@G&8cBi32XM+!jF81* zq)=C-+NG+G=t-s5GT#$X6*~10xGU5-LW2fLc~7PUmwX8(sR1uoG59oP)rzITw}`km z4C7ENuEn)$R@VTty9#iVAqiBeeHk903=jvKF8DqlJN8)8AN+`k>uzV{%A5H1Kfjfq zo_-pwshQxuOF&N4$97$@$8GNsmjxc}&Swb%Xm=JH6X8r1CME+VELRAU3i!9Z_pScb zIs9xlY-!ej30qEMv{RsGx?No13`|}fHT;U5wf*QIpoAwv*e)< zqq|`vm!9!nrq4N-=2V}o-$N}$QXDdi(u_(6ByEO|BUM40`D`@@K2(KQR6eJX)a-?3 zXOwjL1kXO{E&TE)KVtnCzd&nqINo4R6^~6AYTh_}$EjBjTHz*?BPSKbp~|SE2=r%W zQERw!+ZGP_lRxJt*WN&D#U!JnEjHYC1Mhm<8~EVqZ>QIrW=Us+1c?%|5;(q6=AC8X zB!%EXO&+rvilVe`v(+Z;2uGfJGPjwGWvbYp|C~F&d_Ku+pMJ2rtB8JROwK`Fln1qt zs^YiI(z<&yH+=X%`RZHVMx!;#k*A!(>Sz8H>F!H0O~FR>qhJA~5u^#cET_IK_Tsov zRTNcfF*+wXYfW892Y{8r>!3PpFBQpDEu0RpD$r=Ka>WvEy5%NTuHKFIl1Y5(i&HE* zXQz&8PT{loROw5?8%{nI(;g-DeT)I8VH{ZFxR^wNjgVvbTH!3r71PssK%e2yLIniM zi5yanJehc(2U*zq<2lDKB>y=R08p3pS-WOcl*}FMhRE-{EdAp8gIlw^q+rnb@T{2V zh6gmX51oVN<}G~p^nc^9W{0ualup-S?%v9wqm$h5m9H{;(ZyjFQ*vIai6lZ@K=MB* zHz@a7a;*y5?FLyoA0tfC3>$~kjon4&L&eI!78|yAXxa;!-MPNI2&U7?caI&6?c9^0 zp5ZT5sNluK-}fEddL!4J`%Na3CW<5V88o8nYcs*NlVYqOAa?mEkS~xYD)&YeMUnYP z%|n4v+0MM_kb5MbuP(GAqwcquaL!EwcH1qWl*X`io6_q6&am6$iXibUli; z@qdGFEn{?a8Ka4%)!oVu&iOn?J?rs^?=jjOEsW5LzN4uUz@?(ls*w;}?uFGMOZ8D1 zD+)q18YA$Khp_gU&tScq=D-zeIQx{7G3z&xZSB@fyaOoXF$iiCQiNWbF*4JoaqZaovf-{0Mb>P4) z0VDZ%er*!GaT+a7dEc2_|C>8V;@DU&?^?SGS}}gpx%aWu0&e9#6scwObDtcoKexF& zi%Kl?!uYL;_lp;;6)GMHs!#a{mgJ+>VZ>0qW3N5d6venyWPyKQjc*s%?|;ECbHByX zs*zb_by@Xny5b6wU)@4us*7zv*Y#<%8}zr%uy$mEOTTe;AWC_y7;Q0U9E9xzxcO1E zd-&PbghsnTdu$w!1pRZRg6!uZp|aKMTsDBt6M$siW311U z4ho!>#ChiWKuJzuG$dnV(CMHi1l6f+)2KJ7^DJLF9ymAU@B>o9kP9pp?u9~baqS%B ze?L_aS`@U*4f#HHB6FnL5R!f`7}KP`WQ6f&Je7lwI)<#NtpDCQ+;ZlB(AuyC>330a z7!zPvV-hqf%#~w1TAK}LL7j#Yf8xXFkAFmS z>ny4+DvC*k(=h)vlFIg_dH1A3V$F+(oJXKOq;E!)Ubj!X-R6z&d=D>u?VFLw+!P&9mlBC`n5sa7ezVD; z#~;m29fKOnpRZiOcmDAejCu!I8U(c@2=4-54K4$=rHpLa!mVe0gwMVBl{9>l=bUyb zYo7N!`fFDrBT2!laB+V#QB6tJ;fP&|q7&nb&&hy@ru=y+=mP*fe~k&41nFU|PbHMj8ovp&t}*b;jEJ~n9~CSDIy zjqv&P%e(P4m!o;h;ykwy9Z)mMfle8a!&_YBGdxu?Qnhi&}>$a_Z?}D-1E=wDI4ada-Q96kL;=|x#NF+#Auq)Y*<7+iMOP)ecFvS zRt%l7QBvK_eC22{$4te%&gY#921XPX4oNSr`xf%QU*0|+P4a^UW)QFs zXk(liHzHUpi8olMG-=`*BaA=&NFMas6PO(}Y`N^G+;G;J*k9j<^!j)ck`SjpI7Iv4 zWE*C~m7%)tgWpiu$#YuvFLK>fF%fn)f?GL>efT5zv*$jKPrm!TaP#fR)-Ilaq>7P> zYSIv`yQ&0pwQDyxIuetrTwtP?&VU$tKH-UfeJmgNe_vp7uYE9$G1lMl8=n2NM{v$( zK1jpNGSMCdY~U*prIA&rl735v-D*))CT@OU2d>kEgJS_AG@B#LbS60RttWBSrn?!> zJdK}U&H68Ym!y}wKj)KImi}~?MsF*vpZ|~xUUxi~e)Y>d>E$owVQ+a0-9sOMTRBP7 z7#avhO-zhUF#=ou-3Djs=rof{!iIzO#SUNU2KhPyA1^{)EJ##cG8Jj;D)=||zAB+{ z0jvr_0}_iD!D>nT9=tbW*aL;krS!z`suNF!)(GALjQ~t}7e|9#Ww#fpTp`c!kTlpsAALNT3q*j!7zP);e7>??1M(P0eqISYQKZnAO=a=m{e&w zL3={hZg6KWWA_Ih0XDb?8)HMk;eCN3)B~EbeScuN$H_!ZtRw9OK31+9+H5T_fswfo ze*SYV3xBjw{0wc`B;lTupmxX@)>qbXW^cS9^6}nL+#!Ztrxo@sF>iY zTim#T;Gi)X%Em^Jhdzjhzve{z$`wpqb}84t??WWF-G%M-apDS;T_c)XW7h2GHWOXI zxvD$+)?A9KScnfrc7OQ@tDf{!{^W5_<;!n9iR7+L=*%pRXhtVtT&ALeF!!8EiGSxq z;5m1pivEiVnVY5A>Tu1izu_@Y|7)(e@n)8;-i?W|5&E0%;Jt5uGw(h51ZHQpGC4Y4 z09JW|sa0j4IUSfXf|ZoHx#Ncg8=&A+M0rvJ$w-^zPanam$3L2ly-hrLsZmTbgT)-AJv__R{VadhT%SPO;l+n!ajTN5jk>|4wuxJE{j|I;@VYf z+5l7cOQBF8zY)trzR3PI;T;yvPA4c8K5z}lf^M?07P=#Gn~ zLhg?WN*OxR03ZNKL_t&?Y0AcLd;`7VMp`~s$sI9`5;5MA|(X^kx=Qa_agRl=MrphI%_96c(+n<&m_G&`fvXrdmH zM3|nP0jr3ljEy$q3xs)KRYQQhOqA{Oa~yORmfS9`d$+S7{4Nw^gG`1D!HMF6jnzPU z2i^$YhA|wkios#=INL-IK7_+hJQ>+%Exqe+{y+FK1J zlb4&P2hwboMx(?zOZ=BbR%$~7d?An9-AlJ9+u=RWb_O!sCO>rCKX>92s) zO*M6BQD2VXsFWzQRyLr#-(5rIg~%y^rb+O&!5_c!W&B!%%x3J*R(^Q$>qvUSsDyQ0Wfc-;__Yx8@CwExAWFa6=NG?P&%b@}<8;P4^s^o!mLzH6)r4sS z4GfGy8&ETp?Dmj z7Yth2a)}jr*dPMnU^Ss{Jb(VS6Pek6Uw$#Ql?@Hyw%#napuFs}pQhImq*-o`<-@ci zq*m_p&*rnV$XvykfT-{ANOb!fxer9KsyVbV5+r4JItkJRey@^r$Dc9PYp3969o&8= zKl{YTSz{8k-$O*{YmiPARb0P^X;`v`V8$nDOf19M1Yemk9u{D#$0qa0JC^=;GDmiC z_{-@IKW0^*JAZB48H@70Au;IA&W1@`BXmYvLzG^2_L?ki`n#@hxUWHj?O$RYbTQ9I z9BRF`x`s=xsA6mYRYFZ`aP1b^+7&$DwQpeLh(qb!dM#J~=ZDDt=chDh`gos)J<=;+ z%fxoj&!BROiX=D}C(!x*$W`hnZvOlfDVm9c+A63|kaiPRjPS6R9LL7n@8G&meUj$Z z6m|Xb88jw*y!foiP=&N=;wL47>^o~F&{v^r!y7Ap*SA01TltM(unz@mLYTFqzMwcMVa;m(_#cns zXVaT$S?FE$GxQth;?Djy-~9VyxbAD`vfsK#^5ECLm8H)=hW>tQk5$z>dI&^neJaRjs4r`;JT62=lqR>V}g4XX3t zdczWkdk=lo%#~=oHDK(}_t2er%)QI?mcZ@8VBBO6-kziVw^BNTY*!UU?Xa_pS4EJ)HTO&vDVuu4Kvha{Adc))*v7aG4{)#8{=p z9$cw9%d;U+l~m0q@aCipLrC0tl5e78xS*Ka0oxml3YZ3$U2!!tY8YL%j+Vq9(Nf1hH_w>^)9V6?1ihC&6R68VGH(Pi z7Hl$57|ng6i-0Ke-+3vTyVVxSjSq#YZ8Yev7-Q`Vk7dckDt_^?PjdB# zKhA#B%H-3ZM0d1HquD`SB(X-#QO%PoEse-(_iRogE)r#3_+C;Q7mQsKABrQEjba{h z7=Q7czvY`B{shn8V?UAy97MXLiHT0e5&?w>&`0z-x5Um7?kp7Uvnh=BKvAHy>kpf9K0^Y@QXMqg1+JqyHJDN*>_Fe4yY4((aZJFbNuRZ}Du#U8qARdyS zn~R#5tX7IkDEDZobr?#=V*M>*bS;W%scKbl5mYK=Mclh%vM)vVSfW|l_D6&Z!g{XE zn|}%i-F}~6t-p(ZdCv#wOst}pb}u={-#~e@J&2rflS23|<6*g0RrbWSPqROBzUF5i=Jw4T%WW3)VGAY&$%R2CUdf zk}h+|Jox&k8!Z(H!Ch5%*PMr=D<}wJ?SR_P0-xx?UvR!;J8P*TRCE{?^ilM;{&1>V z1ZlzG@w7GL%1?frCEXNpk+80cv2g>BE!&n!*z%j(8SRXaHkIaz36il6sRks-N^rFl z!vNo)HoR6!*cHu(Dtb51Y_{$=HJ4!qJQZ&Sr@?qGhq}Z-+V7KCL#tscN-D8yp*m3a z4a)W{)KPbF?Ya)bE)21C^V~4ktb$b=44vkbniWJgfA&rIzK?sR^`0gP>C&Z)J^Ps) ze%#+dQ@G}fpX8R0|0nIfqu-xJY)o&pq6Z&Ge;fuU0U-~%`o2JkAvgCbr6h;VwGYrq z3!Gk!7K%+u7P=%O4R(9N6L{1!p3av}do$en8)RDqY73cGQ*n zK~y^nior=9f2h-IO=)tO%aI!OU@d6|iO-mrY{S;Oxx=OW+9Y@}Y}>FIy>%1aH2Byg z3O>sy4C^YAuZ5YK&fQ^tdq`|x(my82!B{K+LaA!Jwi3A~c@Z8ixP-x)VulE2v)?gGn0UesuZ%?U3TWmAYhh&hZ#_rw(?9D|d9^ zzMS71-cX8S1df`xtQ^->k5d>KU&3Wq-^eeo{|)04D@pqr3q~Id^?Vq)3ZqgM^%jw& zXmw<1pMCb;Gq7^B?Ck7}P`55dmc@1Nt}XXd!7vZPK*fV6a7ZKhRSJ_ZPlT!}1N}a> z&V^yFy7z6}Jt)Bz<}TyRs^mO_g{6q|^3bAcLQW8$BSA6L%wcC8uIE3-9KjKSmbgqi z+*Q|b*Mbz%ohgWZq$9R65R3;_Imb_9CpM5`NA)BoUz!sZgj)Z9kL&lwY=!n%#F8Wo2$sN+;v_ z>`Qe=d3=>n7LgJe#2xeZsQtpdVCj-~{so*WK0;b1nwgpYG?#wvQ;ek!-%n}TB((U& z1Vb~lFbFaREPZCy-+@gMbR=QVL;r|bHDo@ZmZo8FF2kuGUJwmp^E%I|)A@=39Vn`# zPI4a3sVw~?UOVtE=`F|ugU=L!UMG|77D*(od&(1-hH0;)v^^)h$w1K z-ju>+*dQcENHR~;3)$E>{*NEdqfU4u(@C3cKlvdy{rh`KHqMYucTpRQdt&3zLxLyq zo<#asQdAX>0Uw-zDT)i7N18wjjVGN`RA?n(v&9&TX}0N4OmOhAf5)b+8@b|hAEGhc z#bs$xtgGa1xv|4)px^7#2N)aY&;Ig-y!(@1V&B6L!_CZMdt3S5e|?769d|U_W@eb^ zjNw%fANESIxmd#7J!a6bY`6hvMGs#HPQB#kB||jDsw>1CL^UM9qKE~_47zCwJF}V1 zU;I3uJ@)17yJioLKku7NAO5GTI_?$t{SP9W?XlbK*K_kbPhm;Bfs2M-U?SQdP0V5! zNULNn+1YzphjxqZRdWIB<)8)FJ5ya<$X{Qgs5>A zDxMBSm(3W+9O8Ybyy!8V^||QEYxuxNzQ9P*0ibD{Sd$=55EnbtK35g<1;0O+FSXW& zBFp4OciE9C+?xjShyuLKPp2z+ajit?^)~XHBcH%A&pHy@o26-#j109(<~+t)j0P~t z#JFKJ81jj?7;mr&#)Hw|(&2p;Vr-VtYBtzsuf4+W<)EWTZA@-Q!04h__u{%Q3Wm+U zi=mr}iHd0D!5u_;WMJEu`~SF$U}Ve!52%hc&)Enn$Vk0n(1o=wcBWvHdO~i*gn44` zajIm!9$foN)?aiHOKdwx%lRy#h~Yxz@^v9E@HCyU;l^8;7#YD?rM+eqW?}+qCV1z9 ztf2{pH6;OG7|uV?dBU9z(M{h`Z=xK@C^Xd>R7+88Vr%c~B2UGu&LeBPP^sHR?B{pC z>#)7=%YFZL1z;?-uZ5&aLD?xWG`B%R(yv(@H;pZtu24}T=Ty8RAz+j9>#+7uBp5ocrKTjf=uVV^)rVkgya&0uQ}x#@b&`Nx0ahhO~$&pZ8e z4tV81F>3@n(jc8^@u&av3O2V#+0Bk{!`Ht8S6vI;+0d!TlU^N2YzKTRb}mbt=c>je z+X#sFsPovg&v#CJ2h;!k6AtV-F8tX4gKe|;EEbG$WVo0Y7~(@yp!Qm7VXF^*Ok%(! z2ApH2pE0e%OJDg$q%n$%qp>Q2^Da^-f>W|7l6w;r_(X8dN20KgHH?o+Os1kxBo(rD z<&UqP8>tkKLU(p6kAC=rIpghb;O!^=1FwI@@od_-9xHvk??MvB-YOMR*~OB)*o#M# z3${eQkhOxkjPXv3J=W|7-eHZ!=X{=BsqD767FT_3Ho&IehcLYmU7=l_ehnuvOJxJk zB_8gOWyu``}_YXsMBv2x#im`=N>2^*z&1~%qlof0jRrAnbNAAMcslR1@YcVRBe zp(MRk%t@;WRQzJCEpb$>zUNM9U@evnztdfZolh+9mA9LBPOk1u>kW7l@NFM?H=;f` z$96{Xd#>fdC;c;{4|pJ3uf2jR-}f%;ZR=rMFK$nUo^xOmyjqMjP)!0SEH_6pJIX-o z!;~`Q8I*YJUgPl^qEVVBnHWd+-^cg8Hxn`fyQ5Yy-rQc6*qa9%l1xT>bIW`RJ>TXWfGz%G3Vi18h6+LG+h)Xf-Tt zK)i#8J(v|weG2QnXVQ#w-aFqztLt!?EA!Y2t*xSEO5Hq9h86@1!=&>LKzzHH;LSO=Il{iXmx) zIe#P32u(aHF8nECQ4-BfO_alS7~>J|@S5R85tGDIe=H@mM+`A<)h*y%HqkH?EG_1vSMp$+5 zLG%)f!y;IWF%=Z0dKgk6f)2VTONqSB_vxh^&(;OuYlE_X6*toOPe~H_7Nr$wZT9qc z?JiwhyAIa4PYZ}V36#2ulH?;kQVv{rjfv|>2e;>L9Ppas8GGPi%-nDTm!0;{G=A|* z8dI})QY892q6GD?X8zHzfm}Q<+%$eB^{&$JHTcY9444^@Y?`65Wrn-IdoEvk)d}2m#kCy! z?)S6*i~f$;)sr-r+F)}T=6^^u!FAfKJML(HJ$&QB`3{^IAp;(9^wGF=`>}q-IDhh@qi|yujE2!5WMCg0 z(rp#3IV|V5kC9vg)zWvuM?Zfy=bZOHv|3~IoF_?Ik={@iB{JZ=EMh_-DnjNnOcTVU ztXeUSrO!mCjrSSe`{<5cvqLRP$2tgU#7EUY3P1r zu5{VfiW@k&0-#nLtR;>X#!<7V`sA}dd+xp((a`;qvT?O&)V8?p&$ZErNS9q~-u8!_ zNJ#Wukis!^=#bI8)xn&Q6(wUuOwsZUkdF@=)b@&tok()#;|8l&tPxz_Vfr&%{Mk=4 zX$)i;;(c)7L}IcZkJUs%rImoDsM0W&o36T?cDqg5ZZo?7-q?vTvM3XmWf|&x;qFh>OnGIutuMe70CB{C*Y* z0}`9Nw1CLH8Ymb8QbWhJC~(CXL<6cyqfLM5a@M`{)$H*XPb2&FZCv@DcfsX9r@3_+ z!9^3zFal)6V7$k84X+Uss|EMX=FPk7{D+(rtO^M&vazM?`JAIzvUHqpy!UO`W|Ntz zS=2U|F-;!u*k^L(ozv|5ki)t4mfLvJV;;eezVjt^8?&?%Ps23v>Z8_#l!b*s(9*x{Vt+V(Ben`u2_gd{wQ)Si zhU>L;w#yB_Ue8D#n%ka|Q7Nk5kXS`|N|UrZ9^uL%*^ho9@N6xbEFG zB_iGY?!9~QeB1*Ru##CyoOiE_RLE}uEf2V{N+kdm5m$E-ahR*0K7XQJl?nyd>!Md( z!qin)Fe(YorA1K`{gzM(YDzA)U4v>xNVFRXY`FPGnCW5Kqv-e&)~tH~T{SpDf}?0` zOV@*YZ3en}I=3SdG7ROC9n?=nsMK5&JN6K~i%zaubQpY`x%JLh3Y#6LQ;Q=>zwZzG zQ0V-=yP`u{fVrl9jZq-ECkci4f+r;U;su*D$yP6A?XgF5z>}VV-?W8G-urL#|N9~u zGktvK%1)eCx@%REn9henFJ%5d9FMOQ3OU+rV)B$U8|aAP@ozYZn{M044?prTI%A_; z_`RQU&_RE~T{Ft~?z?l_Z*JlAQ%~lj@A((9sVOEp?SLx#QvO+eM4OAPWP6%2I#eV< zg?Y@+$`KKhD>sP;E4a*Iw)IFh-^~>tI*T)3@j6DEOF8bNALW3fUqE-|2<^!RE_OPC z$(RY;uUwMULu!;gUvLziLk}gJ>an(;apn6y$cW2GNnF(seY+C z6DUL7nWelJJmCU*V@ca>{OBmyka}Y%q-v!$Dq1fJs>&5QIKJr})4gf3#t6@S!AtRW z1Sb}ZA@f-vnQQ3YgwdY4U635pHv%r}GtudA^ij`Y)kKpA|Is=Q*ms}6xkC^eVvdvG zNurgpzg$?rYstA$uYn7r4UiU@ZE^cu+we)7)G5X$sLLfDCHhZDC}?DG#8!&hu23E` z@t#m+{{s$ys*87R3nIJO(zyF8SZ{w=ZeuA0vFQB5 zBkN6{r6WtZ;lI8NS6qkdX1ECF=N4eT;=rsmpBk+dnhT9S)x@^SNf10%Jxw3ak1Z2z zACuielvcx)6_wIRCw}p{S5dq(#0Z)6vCSs0dDFje*HkZ*K}Kjc@{U04Lg28t;MIU2 znrj`!*B2%8DM>3K?RVL_rH5+ZHKeJ>xp0l0Y9La_*T~0x!%bxB9zU_m?^JQABe8}o z^`IvHv%#qgoQg1$92A&TqY{!}iiSm=?E6^kWr*>Jc*J_FHT=;*2gI0KRrFhgnikjZ zM!~RQ@qFBKAW#GRT#n0n-QiICAWk<&X+!~I%Ta?O{wZPS8^}>rsS9=v_M&C@`xOB^ zH-D|*H`9*(<-cUp&wkEi(!jeOsm~%AlEM(DmNTms?QCxZpE^dd-2CHkPoj$I`^}G6{-w#(%=f0mx?p2T@!7>EV%`-a_bncD8tr(;A zw8ydTsOOWVDOZ2uEV|!3hsNe zf9bf;O?&v(7|tYIebbFxaoOb@vin;69h*7s1xInw*FVXMhSF{-jYc~Vn~jMCU`51+ z4n{sASvkb2Aiwm@huX#OR`PcXGr;mRk ze|6eB=^t_+>52}?NP>tV^Dd@}6|akem|Ye;qJp*(bR@r7?x zE(u?hsitxsHF`KXM^hXJAFwy-(;Aky7%LXn{kS#&B=IkIEuN2imO~U>;6|g6Pg8Z2 z`fLN6^Fqz01+X?04Wt464t+~-k&q}dWb+?6o#SlO_6r;*2C zOA;HE=4&htd?mX#(M)b=*Fm;ZugPElt(Y}w#q&dibf#BB=#r#?D7Y*m&H6yI9%S`? z!=o41{nBC3UH0A*g(0iyNB9?C6unZ}l)}uk2BR+@Bq+UDvep=rPka^+TDlKco^?9c zede?5({+p=`Bc&+2GeMuK3WJEDmH9dP$jne`L#OY7rok~DqfKLD!5|y-erB-%{D)~ z_!?gF{A1CntxUGsOx<_`pZwSdS@)<%;`=Z%+97orN&W_=0)1&dP9$-rz8s8E(Rh9a z93rIR^R9E98Hh->*P!yGR)aHk&(m}sv*|9b{rqS7;a9)LArE^bM}OqabeFB9JJF)q zXcVZjmry2zOCnV5?I<`RCeYUKG{w@lhC^QYGS0c|HSE7>3)_Bt85_?2AC^Ar(WIk} z1RJ}uxi?3AkDSZqwO~2K7cPpF-0W0q3cb~lqzX4?j?-oN{Q~6iS`c*e5gae2!d$o) zOprL$(&}8bM|Z|?!>{k+gp*IF*;!5x7x;iu^4g39U@3op6TLO6oD7wqtYw^%&3Y2k z=3C#nkZ=9q2PB%%99>G9DeC$`BtU~9Nj?e`ijcfR6-SY@LJ!djxR#s7Ni2T7#|q`} zU9PsICKA2#sR0wzq144QZ4oWilvYemuw<-(_^fzL<_50C(qVD!(sft0!?1qweB84f zB7b~MBPon)1PC)LLxSr9L`8~a48{aKY4tuLFCMb~97JrmGLx`f{zBzfOx5pHAWKuY z?G`rt^kOEYiDoHy4QPt`Fb5iuJDCHgSIqZp2x=WHcV2u6O_R_YZL#D5htOEMJf!{_ z&CyJbxJhkNQ>1LClto#Eo-8|i*>pgHa4uocB4o3(F))V5rPFB#$vn;Ib-U$p)mt_@ zyuQ1TGP}6`fXkNr&drB=s^8231)s}C=IFQ@vWXVWKmQXR^72>FTDFWE&;BACzx;U` zTYC7^#iU7U9uGD1!(m;PIppHpn?(zCH>WNBDrjA~B2HR|N!U^x-xz9a@CCgT_ zttUL>v5(=+Z+s;iF1`$FAf3tZ3f3k#h}*qS`&_>EvR88L4}ZdoUVjn~`=?hiyZ4^hAO41l1kulUX={rRlrci29 zt#CC=*?7^4tX{oa7Vn$F0a{|Y?n7rwN`kU4x<*>*fRw+Jdo^f5)HgT}d+oIc!D~(t z8Jt2`v}0Rb_sd#e6bvG=STOwd&4rrescAL~bUpA4+(4Qx^(eoi7e_;f!6wD%PvMlA zx(Y(Jqv@yZpc2*0)yHjFgARLw=en!QsOShb8pANv@#^s@jIx}eMw20nd}0GQa>HG#=ljKtO zOmw(seW9{4ScaAk%Yco@vjRA*1`T)~d;|x*_5^gzB-elETio`APt({mjqkhA*wiw) zt<1AjlFYevazJIZPBvCwAlTt$GF;|Ky&+;YqLKybpbVM?CrIJpJ_dG5e>FB3rYHW;3CIfOinx>`9_| zTm&a_32D{byek}pQy;bYr2s`-r_JuqI}-ax>zLM*eR_9u&1vsq#7WU@${oK=^iC)| zW<>Df!=HYJ?K=_|5cISd>8bT`heWpdyJ|Heuhf4p@8+2NPSMC;!GKsi8PnY!Ze*0_ zzx37IHIuPrs*7zmit!?YL0m})*I?KarOPYiU&)i}IAkPBmU?Vr@an?IYqT}@-r>EE zqjHf061xPYQLM~~(ZwiT@lmB>Y8XeFd{tqpR5iUeUrd^tO)wEzt2)*!Do2&!7I}yHN}QGM;|v_lWRvu zNjU+sO&jR`;%aQ>nH_Di^ihvydUPDu4l=AlPGXaqoMayCWniADM6@c~sVvYFp=#1r zLvTvcc{5R7UF2y7bre@Pn97r7ls?L)yYG*I5`=S()h3`z|C<+?q!1GZI zAscIDicmpb-<0NCl8?y5@72y-1sN}Z7a!fOec&iqW6^F(vL(ZAxQk!B??Zgz z<*#CCyTfx%Kb4iwK9Y3pGMbZN?%n{-Yvd6`QHV;HBA;8&0ij}lq~uvhKDuNSOu|&s z=h3IUn%j)ByKQmn*S`!m-ihl^li{L5R^AONc^RPiOp%#clC2xK<4d1s>$lFvZrqBG zN_Lf_m?s*^4qz9Vul-QGb`f6+u_y72MetzSvV4A447-^!CR0p<-qF16E zs_4MYO|HZhxiTVHYeGjY`UzmC#b_+Q@)f zR}>8?#^^lw)U)ou1ER#L!5YQ_9~=jDK)Scm`Dt6dZBeJMKNP~eQx{S`N-x?G&I8y z2!_T4Sy8FFSSv%&kPx*bCkq-dqKr2zzxejIY4gzZ0Tn>9L{H`Pf_nG zHCFt561)!zL^Vp^4fSbQQ2VytQkR;RYal)MW@ZYN4^@~L9mhHl5~jEIYJ@}eWw}r! zFpHb~|9Uv#-YpddoOo3h^jp>6mlEs8dLff0=>dmw;EP|y%5{fu^S8dmuRd@FjrAKz z`)P2%&1nb56v(s=BCAzQLWwFcp5P+m5R)O|>GpdxnxlN=KR?aWp87YmO@o;Yck{Z} zzmku9_5+wEc<*VT&}zbgd-IfI{+3Ujb_z+?pxxY$0IacbUaBl+iqle{yVPghH6IDl zVn1)y!BfrsE$EhDiO++9OX5;h3+Q)HAi=mN>!XG_=1CKeH+xs)@E@OQ6t#7B(4HqU8 zaD}p!L44V5XegMeEqwi`zvGuDpU&4`ay;op7twS+a7zjZMt-Y%T<3Ke%s;D^oh}0^ zj|oT}Vz*fl!RWG@7Mmxeq9o&Q4dP(zU)B z?j#;rARjUCyUfGvR<8NhxlEX5ln`{W@lC~Tc7FaqVRRIkWBI&kGgY=-cOBetJvc{i zyu%)ke>~mxDA;zCHjM>YF+=SN65EE$e$wvU-f(O+E6H(zrC-#+VO{Ka4YEl+vtJIM|^ z6kRbvqiG7_u=lyyr7yW)g?bakIWtn}xK!v*b2cJla{2@<-(WUrv+v(OkBuvqFfuwx zdg*0sJNrCruTPfG&_`OliZ64@Ou6~O%gAoMoqd-sW8d+W+;sWnMJ&?aKH_cX9@S!8 zmdgH&hS=hh7GF5$JDm2xGudbFJ(!x_NHcMCIt@Iorg~I>aavbknlG{q>H;eD_Ceu_ zUGsvd$PJ1P=^qTrWozYqw2Vu&oQH+0=x3qFn692C$09Vbw9_ z;TPw8gO)03dj$5}or53uIPOjzPJ;Djp$MfOF|lZf8?MD*w4xX>1j&~gp?RLfXWrwUEr>JVh;^)1sn$vrr;0u~wf1n%JvReb?CaOFUa!1D$juq{Ir~}b`8=QDeb}3B!ORP4E5H3}!Wcu$CNhv=#6yncvP-UFm!->j@v+D7oeTbr$rWQr6Otss#S9nG!1uSU z2HkPX5^P5?xmR%qH7;-T^2i+Yvjo3;LE7EK68iAM`C9@6A z|M`Wy@$K(n`S?;ExaUq>aQ=Vr@)tjs?%Xs9f+b9{ywjSClP@P*zOOkbX=wf5_Wt@W z+T->y2w*GQVCmZ#qQ0%1KG$q(MTLIZc=;UKlk`ze7mA;C&K2KQc3QraWy>bQ_o48R z)vZ}*3}L6?x?k41vSARBb$}aQllzF;A()Xd3bQm(fh=3#bWks3$mk9OvvJ&QPxc+Zk0qgYXrM#9~9Z>fo|>zNSSHsBnV`r*2NXA@Ee zTWMkQ7=_5jnjpGVk8h=9yNH9xXlwH;I_<4CSrb+UYr?Tr`K8vYrhFv@J+;-OI8S8qy&!f47$C?DI;WNs-W8}bn zdEUo9%zh`ml&609t&Bh6F{m*;2WGiXqlR8BSTVZLNL3XTGIW7b6d zg|^PQ7|s?aM&WB0j6D`2e!a!MpgyVkFo{O6CR*d-*kiYyYiZR|?zO$=j3MMST=(m8 zu}7%qg0gmaUGD3&K}p8OAW5(`h?NFU7v80lceLJB!1yqI zNkkaW=DF=V-(kGt@Ycd!yYbLxKZh+Y4;GLp=@Q!GhD;hLD!64cz=M11`I zgBr`soI`BN^h}qdjy#rg{{4JFc;>T?O43fS}3+2oq3{`20pS>Nvu$ zBG9Z(UnxYpJ$kpYs997)Bhbe3=r^6pZF$0YV;Prz`SWno9i*L5H;qWlvk?%7HQ>av z^ofsW%?Yn&^5~S{f&b-UG>V}(nbc71rtFcDW^xJR6(>7yZ6<7>CtU3glqbD$Q}z1sX#C< ziqjm$(XJ=a$piOUgOwVJ1=aLy z2r~`WpJ$c5!LVWYlOlLvMn{818(@ur_WZ(V1gX%t?ZOMJAsrhFg2Q;YHwfM7>7J%T z7e%ud6aQ974GJzIgJ~vQ^X>m)H1j0tF+QvKmL`dZ0gsxnlXhAk z56eIliJGmT^jbqkv{DFe70k|}CQvpkFu80TnzphSI zV5?wEg7-0QDmnyt6^s?!igA`d=LH<_^5aQoH*@{x&%*uc5}I=!jqW@^N&Nvutik)7 z*_k=UM-#sL??2|y$2@^M*WO9mQoeTX7x>%1e`M%| z6(bz>>XVqcYdxEO_(K|7=Hn!SQZo>2Hlu(zPAt@GnQtIAP%yjQHjVilv+fRl^?{G@ z^?&#zM;!G+jye7BNgsD8Zskbe)kn)@9}OH#c+n+rB5|79>%df@)S~p6yGG~eNZ~3& zzUr=R1wAPOGhz)mXf&I2myGe0lTYB*tiv9SCO4e*DbjA2oIE^+7&7NW;HLyCREE%P zq&SY)K?L01z@bb?Z^%y-+|zTs|O{L0sp+ZI`FpxMASCOGZg|Hwao z{XAav=6A7qW~LOe`#k0jEto6Bi?_(O+G8oa*g&M;4wyj(B=u|^DQRP2x=?i}fy!&K z2qtELRNJA%Nqj9uI__Um+;4HO^m&&@J>sFE>4;XVW#gi{-C3{0HC*>c!*KiXy6o__ zyWr1uY!pcoOp=5obd}hxn-1$bF;S!~=QL)9N^G_{KMBwH0Sa z@w=?#kYiuWrsyywF2}nJYm)eN4dZ`Rzwk(|wT)J5G=;7B6iH1m-eU;~fnreD*lwAM z37z4`R_?SMjN$gR8=^2Viq`tX(=x2^!}Y&nNtxhov>x;(rN&51z`VVYU=6K`RVANX zLi4Dj*yklLM6xcIee&;V|KM9RWc3Q>( z2kyf!FZwb2AGjYXo-|HjLlC8u&Osu5V24p$sZsLS(Ui`rCeMBEX?)`gAH&>sJ4|;& zeJl=lJqL7C{@IC=Czfv4leQfr8#i&|7r)3?UVkbR<72$!tk04j`E;_?yI@C}q+&49 zDz(f@h}tTNO-zl-zJLK!TD8_DAmwa9dkHU9K@HDmBnYHUX@94Xgafp1IL4oM3{xw1 zrj^6mADs`^+=O;Ld3>|RMC)81GCQnS5)GfLN=3r-s`uerRUzjRYo`)wVR0y)ZO<{C zd5$~jjcmzat~-ZIGkn(rhRd$Jo)4VyX@2taOKCNi;9|OYE?cryTXh(v*&hVaoTA10Ecx zXJV<_9twRXBg1LKaNU3F_F=>DC)j`ol}>54AfoVz5ty6n0pR<&o)!INkrEa?r0v86 z4#g&6e3=MzHcydgP8r`L+iGfLA<9@9nnW+^yvy9hzarhRk%k8mkBdbb@faH?9MHjSzObqa}*RPA|pdo2{mtA*85$>6qrc2?iUcBe3 znbP5qVYs%thWyWi9MUKBtOpd9O>X>Sp$!mg=`3k6anw=lbL?|jB5khw#7CGr_Zu{3 zW>7aDauxENnfYm&qZ3^7o6C6o!w%+_>#k$jk}+QWhF5d;*FH}sU7BMlUcyAv$Eha$ zGr4kbDYeEvAhI4InQY-!?ZmTBcrEAr-MeXQ+>Ex{HABxb-7C^L6k`*dDmt6dnCr0N z+u!G#C!E6it8e7RfBQZjdg2MpuNbAZycK|n5}z@p#idk;L|LE1Yx6aFiw>M_4rE1Y zB_S&lTvU((7&21ow=|bvzTh01waCXOdFDIb!W}a+?3Il1>yLe$k&cp)#r%m-lZyO_ z${3!86K8Jtc3uiIsQ8JvL!}~dG(j{~4%EGspA}rkL zOEZ9KiXDwpoM)odVE_Fd5G_@G9ntDZJ{hjz`m;9-A~I|k?)COwp#aisVp}aRHc*nX ztj9u4%HOr*GWG)=BGTVAkS<*o(nh_^++i7h&yM;_>3vqJ84JIPw+=nh57T zLYr&8`z@BJfb&=qL``%QF+qG5Cl1n+J1GmN8an7;ZlZN-a6xJsSmE3J_Uz9xIx~k+ zLudH}hraIhY!E}9rg#jR=K;+myoPXgmr~2nzcowWL4$#@MB3|Xt$jZidBzFK{KmWD zJM(CsvB&PK@!pZSjLn;8O0+R(G^MXe9IoM7yl&k8&n2~F=)x5&c=uPS?N!q(PD#|@ z##hjK@=@&n!k07J80U(!{)x_ie2s=nn48bZeahI#Qr`ZS5Ayuyoxn(Igq16I;d}r6 zeO~&C7t+mhMn_uVwL~_Pu_ii31^&~qV`3zP}uHu?cf0pJ{ z3a&Ittq}e2L}asV8ne*+-Hm+b)Kj_O8(-s@r=G&0?|%=o2Ofai&)(xI001BWNklbW(c1q2rn{h5Uqb$0->2!o;iHxyHU=sKDU#a1-|X;iC_Vd$c#Tbtr;|;S zj*fEjX&>a0t8YU{5rNbs@%!hnCc%isAXu?jkwERiV4|ZGLuCT zj2l7nZXAu*)MO%fd`zh9WqvN|hb>Y=NDB1bqX^D>S~<*IeGQ#Ue}(DH;>Jf|-~Cu~ z#M7Bc$H*iE{uqb&0+kBPtY05rc0d_- z-+dJ>?|^|@Z@V*crE8%+s(&UFdANpav7?ame7}3V7ew&l%4Pvy=Y9KU?7Vs(p8bLsan4V^#mJHoygC|5 zg7*&Zd|#lJsoce6A(678D^+wCuZpG#ok`1+-|{wYx$;`N7hi^HyD|%*z)|MgZQSO0 z(y19PJLA)Q>8cm4fI~&G#?YSG#A&CzlFy%c zI^X!jhk3&ZFK1@UJqW%=@2U~d`u53?D-^Foynf#0JmkUqk(lZwc<&HnYYt#+XU@=Y z&l#>i>AH1L!*JX1y4=@pLLf;<#zuos*&2Mi9Z-fk7g1^fG-z!?EQ4VXBQ%yTM;Za0 zcg|zP(3zfruEreIz@^<@3QTd%Hh_(jk0i^v_Wbi10Yn`(F~NPr2L!UnT_{sF2Np2x zJ)%TfQt`gaq)ru#wc&l|j!8-Q)mdlJxMvFOD($AQ?~9LPdc_K|)P^y<^C63Z$j_}$ z2#TamsoBZa{I&=1wH7*0l)_pfsY4qDTw)nXt=mX#01eXV6Bjkj=>Y2&XYd=Njm8=etyP3 za`A^g&P$%~G-mEt&#sf>eDL(YjRZ%w!3{an*eyD$%xiA!Z-` z9DRmNp%t*CqfOX(8IOD3G5purAAv2K=}dJIYsfRmXXY5qJ+r^QkaOSmCfb|U^Rmx< zf@Q}%oA&N2X)YZjMM)NVHCH(T6f&(ogNN;gmZUG~x1t0MKH!F`tXkNsT5NZo-+bAUeX3rR1of;_j+;JO;53U{Jm0fmSiDq4r#Bkf~cZSJ_sSvYa%^t4*eG`Vo zUBgPp9_>35YjqbDIc?U${AkL|vZXxhGpBRsP1p0EAN&YU+kG$I|GHQ5;|tE=&?h~d zJkLp5BVif&@!r!cp20=sGgYfV%h1T)O)D6M@{0V&N9w(mf; zXrfMyG#bzyt)~NPjn0TKCouw$8|F5wXKb`VVhuCX_s|5$JXtg0fL9#D-J_O0$Cq*0 z$3BYOxe=Y~gq=Z4B!q<|{%yUNzMs|pL4#JN7an}pCC{6D@f+Xby&wGy%Xi&_PCE=0CX0L@WZN%&J3lrV@E=;_Aw+GO5y6Xc`)zB<)k0$V z$uBNuWNb-nsw=I6mV2PXG%X{gfvOWvu@>N6fNco-eQIJXrD7kKVUD6?6ec4 zDQXOP9ySu!Z9`|id~B&b$YQkAo_g=K1ao}W!C(7Zl8twfI!_}_!t6 zR(+XRFH+YX)wEzzS|Du0esq9kh3bN{wrFo7R*I=TA*-Qg37y!G<6w=#(g_ZEaSnQwRf%Kz@~EJM?S=;NkS%op%zlGa16aQl)l`l zv@+=MQfbsmg@JgSnM0Zl{{4GD=k=$3h^5O`Gdt78rWPb86wpxbi`lkBy}>aZ94U@B6Ygc!4(r;yed9G%4D3xXh8J%^IfXN@3z)k=){Z%0Z2cL_wZ< zk2iv|2ApH3T)FZypJa5)X7JE%!h=pYk=dPgrjrEMB&>oh+?E9OalbX6YQ zD_|^MFR5oSlthh~9U)lt;RHCT*GyL zRIcLtUIc|z0gECM@)*QNDu_fZUr}|aID9sb&UaXM+j?Gl^zj`3#`p7p7ahlkZn_9o zjdR7>U%*Pv%=8Q)(!t=o35m~z2shpr9$)T2Agk~jQVCNPCGU1nV5U2V zOLLBY%ZdE*pHAmjuY4;j?an;^6Q5%5m!C*?*#vf?g^6=g-%}H`hG0uAwS7l!TNzki z>wt;$oo%&7e-x=&IbVjr30^~e?s&uGD^B3ZAN`0!zxqY;1NMy|2N)GR${sI#9=c{9 z{5>5u{rY0`${W#6hdd_f6-mSk69^X9ztxRk`=#h2)nwbd4yp~l{vY4vb#H$+D_8H% z?0k-Grcnz6&Q*teQ=>|iY6vZ5a^)V;LwjA2HzeCXLeL$*V+#F5v44p%h!~tpnCU1d zz4XHkYyQJ`bpJgede2#Xae_$ru=} z;rbt1Jw3s&Vfd3w9_mS9LTl*~NDR$JLN+^#@h&<8_13xihE$+g{fJLM&Z_K6{(vcLmVv?u7{he$|1ez_tVDbuuG8OQIsUv~f zXCxc58+xKVBg!W=l5vS<#n)(!N3t${{aqx4gjfOgT)ivCJMP-BiK(0z-c+B~4~zV8 z{qL+;T8osTFlJW3m@1{*hm>L`9!!%?u9#Mf8?U>HR~&sbzx~z4eC@{<^7hYulG)w% z;qW)Sk{^HNY%YJ_-!VDe!M8g&s>x??z7dk>kWme?B?~z>X zwT7#|?6NS3_WrrP2WVB6LS3?g5oqGUq~v2u$eT^9hoo#SJgF5}xf72*@dP$xT}EaM zmwxUGv}UuA6<|x1ZTUJE3_`co2ub)PjDqoC)ga#Dfv$8R9pURgxPaHZ<8(%rE@yV8 zgCw@hN)Qc+-NoMKi%ENQ1ER*7T6`!_Z*>MaBFTVXTOUGf{atJMf=cUdQM_~HxnsP! zl(EJbu9JreQQ?sGILAt}TL1>(aFcp!;Q!X6?uqmiE1Je)54 zxggU>=1^;py-2id;({bG&OXmr!diLyzq6dBlJDk--5lSLN~OL(wta= zBLu8jQ4;TQ>(_-~F3gxVD4Ny_1ND)C zN~e=52{Z)McmbD$gxFO{!lnQGNm_T@L3?h7?$S|s=z}@ng~zkjC-^i4^;oHexs{WU z{*8qiv?o2+hXqJmC3q`7gd$g=DZ=b+w_(*|jo@9*1NPYq?{b{8tX)4FMcoyAD8u?b zT>neA#bU-#21u3Ny~cFiBK#{@s&2XGZW?KePo4RBj(qZSS+mzZ{Px;kaPVUu&RiEp zn+^P`ojCQ(Gnu*kLNb2M(c9Y5d2MH)+iCcAJF4g%3qxe#BGEc6qqCbaRF5v&;U zEg7=8gPoq?rzgLSv)}hVp82LzIpWKoXT#)j?!4l+j5Z-BpuNu5pcs{2)q>QY4eo8? zVv%c58(vhpvYrsPg@;(F^KJ@sU8D0*q;XmsJ`*sjZ%uyMQEj3iwP@09$oMrQP8|YmZzNigCBA7JKoRuPP;HS*Tpsx ztg(0>DWXLdhE(Bv18JK&IN@m9sTPatMpzipvt7r=@>^JbJ~96%vB3`5d(?xqww%@n zx2M81qnM&p4Y-xis2BF+|oO8^NSXRI21*~}Nq09nm zELj$8W=$gGz6)Amrs}KoY3X+*kzQ1)Jem}#tu^Xc;bU&aa`!DaW8-)@_nrqnXkYSf zh8<~f-HkVwMO}$rX3O@H_BNOo8hx7Q8Uc>Ky@e?+jdk!PFtVKIn zOll5_gnC$_Q%8^GYaQ?}fr<#4#PMO)&5)@%8q(qS=YE~DPCAJ-2S1YIzx5w<4|*Kk zT~~9=``*EM|8geWvxSy}Of_gKq!wMLF`llby4L#$HkR1{MJ} zRXP@d(>Bs*^1Yv4!mCbwA0wkXF*}uE8c7KIG};sFSx+mL1(N~Y&P`Xh^Yf8yqkW4! zo%FR#y=NrTGZ`spLn8FN&tlq5oaBXMXvG>E{=F}fyp^$r<-z-`iC4u`jcf^62|GL@ z8Lr;%aoHqjnZ{jBk>U<*dd~#IwXi4XpD+v?h8>(R4EoD-*)lQ#NrWuxK$iCuMctNe zu9ogtCY%b4?6e{T^4Nf~r6NqNy)$rA7lBAhx1eIWp>-5Y@wvjLO>F$_6^xn$8@-{$ zMSiWA5^Y2WxHN3#y%bqy)NJ8utfcsO;XqxCbT#@=kLKX6`Ymg}_H{<4r-L43tjWQr zoXXVloygKLq>OdMFXx&+2B9IoN|vuv70jzKi2ECFq)4(Fm^62TZ{etwp2 zTe$JYTiI{T!%0lawKrbIkw-m^Ogv+wEqsv_FOVp>iBWjcQ+e#GPUf1QoX;I!`B$1Z z-hp-;&PvRZ33id*`^sh+6YV)`aC?*!8N$KLXP(*3Gc*w9uepk^oOCjCGhI&n^4Hk) z=%bhdTmxi$6!zMeV_){y{PZ8sK)PVmR|md$YA@+85=mMr1N@|R=n7ZkgW`F-?-A{a z3}8I zpL(~Ro;qJT?M51t5fk|MwD|Vb*WY*pCeeW?Pgo zrdxRo-O;Cu4qko6vtm9|8=23J^FwDL;52uke+E|M#Yja5DB!*Rxn#pKHB+;a8j z{snWzALvZYLaRZxas^L)_XpU}Y(OI+*I-y@lOzTcMV@VRbnm57)k59kq^2zJkytF{ z?_s-$22rGvGIiS>ARz}s5!URrlJRB(Nm^WS)lD(sv}Oz`(nEE)PtfIX4cC3DT|y14 zubp=+cpH&TAZg&evUzHjG#%&t?>&>JKJggNIO9Wn@$56PsUc}tnu!TIf^u*XU0(n< zu>^m_Q#t&Nr*Qo*e!@*(`XbF6?u0o|YXf(iKr2E+^P=i1^jw3Gw=gxxM46kNBXN!~ z?eg6Z{2f30_IbScLmy`UZsQYHHM3>xPjNa z>7Ar@l)0%462X%rUa?`E5lEt@XjWw_Tg4!s>p|H64kCK}PD!#o_eyc4tKYS6{?Id> z(Z0z?AyN@~G$Uc^LW} z&6rS2@-8fHi&{49(gyYf{SCwKhu7y`P8jM4`q%_6u~;Ld7?_!lW9e$ts5NAJa93P> zLQ*0@jh%MJl^jr^VT7r*>jF(iq%WRH`ZQDZ5x0p>42sd5KmPavCZvIhsjgxLu~IrB zIq!oN-eRwD(W)zbF>ZZ`RWZFNY+(spTyMiK*Ui}j%Madj8cQ~8q&+vzUoVTq5M&#U>#-Qv`^or;{t2sM@|&_E}PIa)NF_%3vWuGtcb$yI^)E<}8G% z!>+rm#F22z+V#viDqr$K`>}wNJ1j)Qb-z@j!T+Y{-J=k-q$Uc8B(!H|FfN5$IQ+3k zanVJ;73C<$~9j*m#@9+be?(4aUA*fcQCtR6kTN) zA5DT~r2wr!QokB-VN#GJ33(&su$P_0FTe3s*f>Q#lT~i`*5aK;Hz>U?I_CvVLvc9t z?KzSxqct-{W3G#zn=b(tPt8447Gd6O7w^7$?IsphZ8VUFJb=l^AHuX)Chy+J-RGW1 zW8THYo?4SoxU5Q@h9P~=AAiUx;ykWv`SoSj@rpOR5j#H4?A#1k5KTaBxwnZ@COG$q zh_`z5tqDCCobV%yiM9JF{`KZZw|~;GKssGcep5IReHaDr7S=VdSMnda$X9m}*5zd-#$3gl8=n>?7upZ@4f$RjQAAS&C5fBF$PoI=W(*p zE49`g`ZTmQ1Mm*a+$=wP`&;?k(MR!v*Pn#F`4%L15wI{l!1Mwbd;o2IaUZ%m=wV32 zFfX2mz4jz-_m0&K!_{B?7g#?--tP7uN^5&Tp=BtwSU%dZny|m+kc0!WAqE2?i}HyUW)SI)ZNl1DVwJvbOzy>JIY^{l(;|xW zYClQ=q4f6Wrb<;8V{wk44|0w)O?dRd55roiH6+#9V2E_@cvUQp8csZ3T(ECe0Tb+j zO*bQLHu?5vKf{*w8!*-&qBxg_(7Yk6SFBrNPq65O0pP~rb-Fh_eeGb_YLSkOhRxFo z?M<5_+M>MqufbR4(%*-wHEbl{Dg7Au(^9D%f*>uTo zN!uN)Iz(M?Myd%8j4`F~S+;r`$#!128lSTU07(&EClU2ihbDk}M%s$p@Oy6h=g%BtUX((HP= z!yk7P*Ij=Tx83~*jyn2@YRD9|^R1@%g6v>K11xsnQGlPT$u$8gx2PvO>U zF6MWi`#7z28`1gM5L%^*!Gh*xQts6BEGCEM>)YcV%8dX`5OI*0o>kEDO@cd%nTCm2bChW&0W6sJf%&R~EaO z`u2$GM+T2J%0N{QRt(N%h=inc?;YwLE0<5QX3yO)qJ93mGN5T4f=%1~3C8=$L>izM zAB6bM!(7hQ=YA8(a(3EvHJwhkyx!jLkmTk6?`uIXFsNbp-S9fyo3Ch%Bb-?5#1fnp zY?6@8Ph+H3M(VbEQX>r2+(RG;XUi}$QCPMN-xvwG4Avszu+G7zEu|Ajou3*~IVA=# zX_;AIqx+I|UH)*vPZ=>5av!^EEvFTQP^k2T)*U#i^w;(UNQo&x#lSTz1dnQvJovR^ zfz+UR&dNOD_g_DUP5=HK8dG!F6gnd#?ER`&vG22=$4mVA!2kdt07*naR0dJRHt4py zsDQNwBVg2F)djj$bdD+rN}`3VFxVElXv?b6qg}-pQKl%K5n$c5*OU5CS&Vuf`mp`+ z^Ru+lgbOda0!$-@FKIZ;NUzv$xQ6R~+%^LxBsv4B3eLMo%S*^I$Lvg-=2(j_efg_A z_`t_-${SDRtbh3=oA237Ye|DvqZOug8gx{p(+FA%ii~wDQhU6Bw*j?I)#H{lF-IK1 zliqv^S6zA`*ZtdPN!G6?pKarfkQor0;^rM`yUpZy!d3tFCC>ksPwq!8f^LtdcEF+3UDt`Sq{91An{$JEwRFiNi>|SMRfx zqE!9~;vr4gvi2@kHd^?*HZh@~+6CLe8DE=7*XyHfS2L&sfvTv>itova;#w`%yyQ5# zlPhT@W8C$#AHX%g!_9W^u?AKjrAAS+R+QPeKh4g~nZ?{QJBf1DVk|aK~jX4`eD!(|SHkIqGG9O-B{mNW%BRO4L#f0lvk0fdvhNhzuKsZG1s>8xsaE zhIHv9&Lo&5WqRW#)a3zcD8>3U_Xt@86|9}Q4ZzqK>9XZvQ@~@?Ve*Xmn{UIYlu69= zxKUJ(5nLCd@YxA$+Qi*gUQN>&R9qCn$%09%0&H_X>krE5E2VwSP`}Qi+%UzUVu1v_ z2^(8tkSt?ObCgT|>7&?RT|~Zl3$%p!R>EGddo8PuK88Qew=u0Tya|GBys6S-O|e~t z|EF4ad+*U@SFTVL2OtC9({RGt>u&(fP?uo@c3!oNk%q-N&lOkw9xp)*TG{9J;!wji zT=(C!LCOU9!s1x0pjc+_nGQiwd52?;cm`kl@)x-L$_sePlMlfs9VS;T1DleOlY1AD zYbhg(tJz%dDXPcW&47>fq&t?W=PtQ4z>p%T*(%U!Trh_2_vkq%=HeK>d zzWSy&vd`Xo^0c?UjqZ{r?Fl6rPh#@1R(yL22)2pOQRo6x;{6`8AMALOnZ)z5cm5sc zp8j_vGhH;#L!z~6%@?94wXuE_-^TI1n&K3CjBb{(`k;gOLwlNJw+U{WondnS{lKQB zgHmC?xxGlZEK-ImNn4g)VnWm9C8v!O`aJdg+>_Svs6Q2$O z?sd?lU^}L1qKh;QJuZEg42L*32G}x- zXt0HBwo>-qV^Y!$ zfWJ8MNdEh0Kf!8~$>k$7Z8J_IJ;n>xB+>rVm-I#>HLX;+b8B_zMuN>TAz-};=*T$o zutRwDnP1?7^M1^AU-=v(D9x!^He7chUq1D9Y`J@i<39RHnvZ-uZIfUpMgslFD^_bp z2BoKZWs|6)@er)#gf;w)B^{rD<$JRKfsf{Q=lvULMoghLH3I~#B|Y~xUJHv|zrdh| zEUO|7!%k0s3Qv5`J6X5y{ygeUr*hCMPsZs8iCRo;BD1}F&DQC#mHn!U!HC5InSt@Y zd=^v7b|!U>&6izDe)aFkW;sIetwa4*EOUozxc-N`g}%v_AhMR4wlS{ltGQY?NXW!L9ClOsNH2D=}3 zEZLG4wowO)WSfNPtvQ0q0yw5Rbb8T13A0W7(n%h1;_gdu^alXb}@<>=?1z~z6q17}h^hOzN+mX1xZWO50wee*jx;Bimn!Yi&|Z0Q6p zUPNPUc~Gkk(KWM)(#2-G(YS&6KZCX&UF0!!vA^q?-7GT6DTd!7y@Kc3RH`1fTA+Sq zPDZ?@(J%^YExB{-vSJx~@3lI-JFi<2Pi*`2F$6~XCQcd-{%VvQN49B-?DyAm)kPO_ z*vn6(oeHf+igUjA^CgDs4X^X|H4Gy1M__t*t+rmAw{`|pqa@2F$qm>>gU-xUnLAJw znn91=*EsmF>6U+$T3T!NrW=cqbC6=$eEY35yhL$w<*ZQV4a9B1Yus>E5i)N3%@w2w zKF@0rLAqe4k{zmB{WD-4aP73TE-gLlih^zw(Ht=z5{dremMr(E(&oEw zdNWHi&z3E-G)EiEr-nzr>s_pT!c*9kB$!5%PL?6ol87b62Bb0=z2n72Zf#8F)M_vA z#-LGJX~klV#R`n1DR*3ZJ&6ySfLF(3A9D~!Go;br!rxqr7pXSLMJF!9HC+EQb*k4; zIUcsvgBm(nn}-`>br8Pq z*(AE{#6j88E>MSOy)!5P8Z!t5a@9ciH>4PJ1{8~D+=U%@mIH20;* zSENdNUyzHSgOJ|JIzek7Nnw0oyZ|k{Gmxg()b?p5JloQ=Zcnq&GYg67!-y$|F*=g6 z{K&t+tlXVMER9>PW7E0kk#<7;6*K@K@!iaI=Ez8R!SSbX-K}@iRv{zQW|MgGEGO%F zM#ok#xpWmHBNJrp92++!6LWk#KG43(!+M-DM?2kt*Hjn#UiWoYCG}_Fzpbprwa0yM zLF-qi5)B0Hwnj=CGz!tOL8uakv}{-tV=$`VJ-N?$_`?naby#EjTGOEs_x7B_`q9<$ z3=_2~Hc0~5+HTVl`06J=#R;!}J?(6U#z+Gfvlj}h1Mhups`P*Us!zvWV4D*Lfa``| z&Bf2hi!xiKC~ZQrbQxVSAPH`+4efT=L<+i4zffRNRHd+2v#2$U?70^m4GF2%q$CKN zZ(9r9yyPi+=j(uZiI__aO2R4Jxt{s8>uE+Or`|WH+qMdjZT-deZE>XlO-y7$`EnB| zIIliVNW@rZSkyyfzRNCm-^GvLa3ag{He04=Nk$vAM-vYGo4;YnUp$RJ&UY{)OK^Bx zo+Dbsx%o2LwPXMn7ORoYP>h-Jium|CyrXI0hD$HOW)ATl@yY=Y+8c3-PbT=q#aCjb z;u9CwbJ#8n*Zoze`tw&xYP2{s^IUW7<^1gj-^0xG49iwef=%eE!@CGj#CuI8c*Z+C ziAk#Dcp2;$UfgC)JT%YSU1aTJ2Ot@?fy6V+Ql!2Xe$KUQV~u4fIfr`V5i2>RV;o zXisZ22>F(3uxf(YM6`Vh88$WQQxD&BE7~yG&ONDq4AvU_E)wjeNmAMk!(&f8o?AO} z>@_;hZ$9_W*!kd;CsLSx!hE|!CM}MB{z+W%yW3FH#H%5-DUCEmMRBRcr3smLxI6@V ziZ#(;PY@eyLrcwql;Ix(Mkjq&RtBT~efWL(Q2n@DmC;Z%CovBqx;0hQsNztl1D~s& zqAh*-C8c;;7cm1V62nX9qhL7TeK6y&#xOrO&(n{1GNSQJAPbw2q1<@~=PS}1fT)0U zGSWQZ{7-&{0}nbF_S_Y-bR>qcOZizTfdVdDMM?ipt${tjuwl3l6NbUx=ujjYlS^=7 z1D`(YLT4TiA&$J^Qq(YLMDD~`nyYuirwLvm%RF>F-RaHHnZpsL3}MrkUKWu0 z>ch@*He7Q#O=Ix63lycq_MlWfb+oR<(jBQ{(q}_gJD?Ls=sv_)iw|7aAW$ZFw0mEM z0EG=b!K+1*2G&_dHs>t;!);u2+S^#>y3EbY&>BsdpJ?*1x4nx!k9Y`5}4K9mPlWA*or#p{cOdbX9o zlMbh|^R9Gf=i$~n*zoQD#`q+L*%{`$8S~!og1>q*SKoYRaIPXC;Lbao&v63IM8cK{ zPE++JQKER%_lS|hXP_}nTT6TI>P^>VFx$8g(kCvU*X*NaW#L832}iY+^=@Llv@@YM z=Cl@uS_Y%~>N?9J;~}Z**9^fQ+>m#=BnHGeES|#-c@)-c57;(b+rA-c;6QBFlpLGG z-536bTmN_~2fySvx+4t|u|XSI`wXT3BN#FQw!dKzk!y$Fz#Zspi@l&GDrRgHO%t5= zv;=hHUBTwl6r0IHQE=hjpfzrA@pB;+*^n%oBpn|KTv?lv8l{oXlr9IVO=3wG960 z74NhhWQ&vqMMJ-ZF&5(#J2MS;uA@xkaT$j{;So5O;f-+Vudl@GfKj)~uxA*q`>$yz z&+u{Nu0gbH8!3_`ph`O5A-Q{s=Ik71%M9MRID@OgyrdTljt8_pl)OCkRr;TT->nMb z6*?K$p8a(Wwj=DS$~~KBX*}{!p7OCzvux!9IQvB}p|Nf=*>sx@K8UMHqth9&aj9xa zpb%EIvOt7Yv_kg_y;7{JJ|c@+d;Ov@7e+kbP<7FMS?M#5t!)OnK=&}H3#brosAw{a zD0+L6+;rOwVOdscO-vA6AsR`MQOBJ~3mPLF`ic|SEE)UlyeGdn^J8$&CNx)O@|=5S zyFB@6$8!1gf56x@m}?{kte|2-O;ZVGe^D4+y3N)04+yE#1AL@Y?>A!(-JXM)&s z@j1@_@xZ*rdVs|y4A%_5p4+#^h2+6H)`6&G#T0-HPhgX*D}S`VbaX zA5oitwu@M_HOBa=UCD}rxaN#V&h#IDhjG;@A-Ez@2DM3)45$K~S?<2(Dy+{CRcz@F zRH2Fsx+UGAyLa(ouQfM`Nc&OosHp_eq7o1Baay9_H6}K?unCrero6+Fjw8SHa(?yp zzhRk4nVO!ZHI~w8SoV9vYdP%XQ@As+NTY>!0eK>Z=~(rs%Y*2<*cc>uIERKJY!XHc zJ`e6x%bS+FuJ{ecg^QA^=NV5u96R5pWi3Da;RTSSl`p&YBTvIMT>tX`NBy81&T3~#B~8B0WbliD6>hZM)>uvqz8fRscqHa*sFuFl=-B? zhS_z@wdT32X-E!v80}R{dDf>t#-5LSFz3DPWJYE^I+NoCoC&tZ&Uw5SR1;8x_ZBa~ z0Zm1sVS=q4^;~%VA}q5+9^-LPLcmJt=8S@Ov^!l$pquBRx$v@Zm{LchWm|{)g$=-> zkv6hpD6`ZL$VFz34WLvm9#;S{1qd{{gyd0&k?y$<)9q{AX9otz4U)erm4K3QSsZ+B1LB&`xi!U!P{5+;Me z0z?ow7-WI~0mgvH59|ln7>vme42WPXzz;A%Zb0V+1ZtB^z7-+XIZp6+tYLJt*Uc==NH5VMw}RM3C3Hj5uDHPxJow|?az&uvT^lB zaYo4%Oe?|KpkesKTi+^VB1M7tfky@Y&joFVX=o)gtkiBA27`=_T0Z{vH*@M~r@`S{ zaFZ#54H-`(ZTI?>UrP_L-Y{I>3BwpvNrM#vtqq&VjUh3X#p`y(;4rB)0y2uN$Z)KD zfnb<8AxILYZgMP{F(GR}l#Vg%{Po2c=bGr17K7DrV5lhG3+&pC-?fK?fW9PYQd+T& z4&BH6{QC`YTjd&wG|(YwjDfZ0Rv=}tQc;wM0JcK5FoKx~sQ<>UAV0l;Z=UsZHe`MF z?Oni5resqsCLZzt?)|#gb1?=#yMbI`fD0(3dIA;~%Oa@>IitHp`O%HRC`@_f;%}da z9k`H%p`IfT-^}Le4ubH#@0=ev;0$RQ)?e$d-^0!ovP6n$9%LE<2{m&p{^DZxU3DeL z-SlWK|LrB9c@RHGq6$TVaS4X#h+~Zmm2b7Jr(Ed9B=k{k|BAn1)1w~F6-ORH`<{1a z!~ISn0~W30o-cbjTMs*w@4oy+Ow9KfEM(-w085)RD`aYu11Wg;^$xwFKUS2W%F(GR zGh=}}7+`u`Ci=_l`oZ^T?c9aTFXC{BgtU8=)zR1MLLa~{p1l|joZ zez}V=O5RBr96HA>AM+6Q*#R2|*KyG&KFprq?%~wCKb-Esk`2P3+8B$mA<)Vb@;jt4 zO_Jt>Nr!1ZIw}v4p|fq=0U@j^gOgP*UNJ?I_=|l_L_Ox0`A~_T7Aa->=xE7VI zMFE)AY{`|lPShbr$-Dz&5HrB#i`XP5O(iC0R}FRJbBT}CI&itiXO3)nk%vCuRBY5Z zh^!Z@2lDcTzObkRV(6fFVn!8A^p#(IrR!qNA+AH7aOlD2TU3tzu}$#1xZK}0SC zcCBBtHEjMm?syK}?!@LT_{7pmQ~LWB5RJU{T8eThB-Ei&z1X~p1K%q~!l-Tf=$kV@ zXtg?cYiL=+&P#qvlIInjsTdc>shdP^R`CNCFZwyNMuYK)N-2^q!drDzfp&mSN&El0 zVtS&rL`;b`sud+l8#0ed+aXnot%t-4sZ%yC2{XUCly5xexoq$`OY`%jDde+Lvs#)OF?WU&d;C)|RY-s7I=El=bL zZ#|pbcLIu!sd5RR1QUiO3nRP}tqv9wdiq$*JJPl#-*70mdes}b->1LC1J8LM_=IVN zX)N=}6nA~aYuLW`8h-hnH!`{G==HksP2&1-4)KZ+7lhP>pfyqqihZTbR4FKh#I*Zb zP@~sqeBi)l!t$5D%!luLAHMbUvv~i5?uY#3rzHJ6PG!t~oO2H5j_cS$Sr2Gytx5eGr&C6lV;oCQKrH z2n`EGsv}91>5k~C!lJ$AQ{$IOd53uG51HgZ*U$?byWc3MaA&~2A+(d35O)c}gcLtgZF?qPK zz@s*zT|qd922O6cS)S>e--5nZa+l$aCB?Aol1njzJPOOSasjA)J_U?-Z2QqqnD7Q2 zWC)O?X<3MmX&(1q=g3+wRk6@Vf8gRMuYZPW;!*Rqj@Q>9Xy#GpaGIkXkCmL+u4CqR zm+|#yJ%hQWW%lja7x1^)DLD2h{`k#rg$@?Hke}@2eNSzCfBoTDm}( z@EL)-RmKmT*mB*C~o?aYx)9>!f?@@o3``V&5K z%_6&ICYbkq`p$tQAeJn5k%m;e(IR8^bH?VN>A0V>Y%14SARlm3QJoWrpw2PbN_fsw zp1@Ia6a2|(_hY)J z$oqlDDyA%EMLnWn_T#;Rg(S7)SkS7_=FEQ8cv*~x&@Gnm~lewj3miNvFKJ?rq+14%G>6NeI7LRx|*X9m8 zwUJycP7Efs;5^0?JjKalx@SNpR1E4NQP_~Sx#U~t(e_HNfvbAAJDtpwwTNl)xzByA z%)F>P+AE&#`fL5Qzhd+H3LuN2f|nTNg%5cnz95oq<=veF^C&e?B zSX$YDyt@ebQYgmDJxrU!V3h+)W?V6UXLw{It2YSscZvD|LvV{ig)1+;jJeb?<&}L` z?}VLwY&XR(Wb||+pTE4%UwrElzL_4z<;#6ct4)$5QTQE-WMd7^<<;jJJ5AS7;7BUh z@UgOtx(nZGmrf3J9aSIDyYO7}mix@l_h?N{v+bH4WVtfv4v@s4sU_1qXxc`=zwpc& zV{y4hoyS_(GCjc*2J0PdV0vN(kBPcEkCR|SjFH-8D_%aQEH5u`$|-+@pd>b}(Q?;c z`+MF?okINOJ%~+kR>+J&$!HtTk0_i>;|ZJOjJ&wK_aKkI*Si3t6PX)=@2cRtXxB+wj+#zC~0ZUn?tykpYA z<=^-k^t%`z(4?73!*NF+g`>squDX^hw(Sb`szYIR>zvi~*V>Gl^?L13!>h_5QAZW) zeG}Yo0&=g>g~*gbf8PL@CDz7T<4cuSqOOW%6>}6cTHyrC&+z?S9yAC>OjW4H3t}SQ z-5LwCvmAQoJF~0Pfx~Cmo3v=(oOrI-b`4+r_P5#H&H2O^zsV(6UJ)A$ zDVqe5%5)^GB@SbIRTBf+gq;O%#@|zt-45XmEQoaV;0>5sT2;)91=B{X4(> zj|=(ZXFQ$$WC+XCNL^GP^jJQg$#T8d?SIpgX_eZ4wF$#|!?0G6NXDeP8xM0c3|a|l z1#$=b_6;FOHCsBV=^uuK(Dgh6L2;dw>6;#dw+5f*Xr41^EsIxOffQr6i0tJ~%Vbo^ zGxl6`0UaD}5RfBllS)f5(qycB0qP);>gp{<)yWU1T+0a1RPR|tC^aATQ=>rCg7_)L zlcJhp>;&GY3I-PBJ1Sn)86uPQhh4D$3Ws@g1;9 z`E!j{b?ckeI({~~-egQGP!#GqYVtXPRa5_p+5|uWXC+X9icl+R&Ov4H8Wr`ZFia>d z2u++e)U)9QF@h@u{?f!gRGKBO)TkR}Rc1oL?=5E_=}A)nGFmVUn%0_ar9B}`l-3^$63n|@-s-Cw_qqn`Ry zt~vfT9CgN--20WU$1z!gDg_lPSfv)R(|V9-lh%~sI%Yr66{R90_debyuZF-XN@*W` z0*`;od%627Ud4mo_;Y7N8rfM36M`)M3j z6Ld|qNN1+O2%R*czh@7obdG55q*6z)#%v%(sbDbViDCBmTe6(@X<`SO5@fdRPP#q$cufNt`V}RJ^KA=thy$%OZ)&I@#ysnrTgmS1zs+C5tf>ur= z)N9y?%oRorLI6IBV&7}IZ~3TC(9(LfQXd6t(%Rml+Cc236opnE_u`fI#unMuN$&Kr zH?sGdU0nPAw=uo9OE&0+J~e81q2>?3j>k_tj}56yO&nG6;1d}Ns+4dH-j+- zV-x(`3`alybnbojTR8SKifUC?xr zC6jEp&x4t{^C{%B(|q((U*eHZK8yZ_Ew~xWQh$jg6^!#FVq;E+3)&BL7%Qcote`1X zCKVOMtnQg5YdAJ!>|kxBf?1pAY(q1mjsI4vM1{i9D@j{;^|afQOtt37^H9*3R_qvk zm~siWF+J0g7AzDx1F;4nAg$MvlEHS(;#t z#pfRNz6`T1%u)(_>Gjvh%g5UPz#0Y->96(=*I(mTLg_~>3W;TM;~`j+&@wId?AU=6 z;UY!Gnh7a8Wqf^U#X0(YlqhjXgy~zINM@BpmAvaoHD$+dFC!(v7hdVkV~t=m_-IS+ zxbD{%lSE*wkY9V%U|||}bX^fSkd=RKS#5`qRS&%S!YzQe3YFK!?xY36M<^Ju4&(b6 z=^;48g~!_A7??gXVd&4#b8|b*kKg!Ce)h^&v)LH-?p?qcFdL@vb5q>uZ(hpXp7$KC zO%w9=6xL3G4;c+sES7`>gHgrhIf7?0HT>#3-zUi}CjKB>58c4cj@ZalTe$eQmvix@ zyUFrmHY5!pdNs{o-?`T34Z};ViJ_MM@I$tys@!q~7|H+t4#v#kgx(|Kj zz@w-Y2IOQCc-pwoI23xQVLw%+$vmlMBvljQ)z`f6tCV1)kWN~YaPuGWJ?g(q|!Q6Yq3Z5MAGQ@(4!}|=3;wnxBJfx(q! z#cTCS87(1-DP+ipQ8C~Q>0-i9KX@*k=}jDa{|C^WYLO%sdwzX{0itU<0EyZ=ogj9{au(R-@c2quq7k%`lM<6DZ+kHk9r>F$}3*R zHy1;Ph>rOYOZ050NfD98_b-~Rz_$g&A|&7~RxBi7T9&N4#8K^Ovaf%KFFodTHZSfX zo4=0CIn2xy+4M9sr`?D9zV{rs-5t0TMdvor*90%Yi#s7ANPtn#lv=i(e?BZOAnNb} zxhju+^h3y&_Tk%;eCi9|gjNz$c4O9q>WIV1`fL5QDiTqngBU4nLt_A$4|9YPbQNu^ z%^KF<0I?fIaPds)Xi*yKMh{sZoAv03qt$oN?Z;wY$ko^Ot7by9tW+pSZNgACE51Yv zoDa#=W>br$Ipu-xd@n!!_K&&tqaR_)r3~^M6;Fz=xcyotrY8B-=fB8@UjG{I{m=(- z>p!{&d6pw4@Se5dzaEIK4vS+0&sjVT>E9uHn#Ki_#}F)FI4IM9Oq(jrUR|tQ9L3QNkG^ z^@gMt2B-1;Nosf5X z%q(UcdCgA#^^7x^y6BhK#l0+KUDB2zo1G>*WGi=i#ozLfSG|@iZHvLw25iy+mm}hX zOI4C!#AEtPOm>%8yx=D!UdW6kGs=DLdkQU4re-&C?uWiW&r$Ka8yID9oe@878x~QqJip!xdEw1T#?soc< z_|fH8A(NJ+UYDdjfvCk`qX?upPpV#0BDx-EVc}YNDek2-Ep1h5!!T`VqN_o|&|Po* zXFcp~Kl{+gI1ZUWOzpvd}`raC0p-o|HQUBGZqHUIu5 z3_o4Jga=YSNtGffA-ZT{(`LF^ptbnLWmxWxqU+`EB%>(540RB31?25Evqv38rXi;o zpEKn>doH*TiJ?Tr%s>@zIlKPj7bLl&xkK=XHPNQ5LXK2dlh=*EBD&g!ujBviO0$Xj z-;DAj3wNXLD_snYg!{g-RQkyQo$!4X#wS3~K&tTVQKh2DD>{(bu zfn;hDHclgVxdRV)-}{j}-jQudf}Pt)rj|Sh%LYnc|2J@z~mm| zJcDci1vsGfGIM3eGaZwJC6&)iSt3X*0uq$VKYA|TeeD}Ke&;?8zwAoReeSd1+U>}o zpcI*!exbR5>qqynxlp<5m4HE|zcPSxE(oDF&agaVc=S8}k#pbh8uIV|kQvjW`G%d1q2n8G6*>r#VkTQf=4{5=q>Uu`<1c$Rh zM9Xlx#;@Tux1VOPaPt?b1stN47@T0)YZGCq*XPtzP9ZVTo;a>#BesUS4_~hv18B2a z9iX+99jBb4400F10~3+`S`h1S<1voKTv7#V>3>0Eqk-y$kS#2d4l+LQx>xZ>_j@>U z>sygcx3GlCQK6|SKczGcSJtg;53c54OT+L#zH%6MJd961t~r``4Nb$`95OM1NmJTZ zV9y>3YtZ5MsW;;?X2~|hg;v;j+^xy2Ax$k}VA2ZL{OkhkAQsXwkVX{}gq;`vhKVF8 z4=`hFHKvo5O#SxPKGiwBLlcQc;V3*`&DJtO+DnD9 z`r^Mw4&c>H%GWo&|9|(CVYA(}^lpMv=y&_HykXZ@zskaS-=O1QKt^r?5w-wmZd#v;}R>QV8G6rfgt-r^DOLr#V$i73JV z5mzQ=8={*~BY3mY&NPu89a1{W3PLv-X>CVnOry9_v*0U-9;2Fo2AitUoeVYRbqdYM z^r`-SH62hvO)49e@ORD#PHedDKt9OHea>kQxL3%!C|P$VP8h~D_HyIet4g6sjbRWc zBoZlDJ>SO|OKza2kmU|B7BTTjHlu-QxK@a;JGhCxKS>r;k-~DbT?{zAdSy*bf zafv0%GfbATG0$24>esMd@jl16jH7S5m7@-s126pS=fC0V-AiQ7M>HyKx+T(AD@$~E zny{M7{(&Mg zC>>pjB-5r;S6BSTI`otkqF^m83xjvLa^#7(;>!Lq?V~ob3xm7q&9JvVnaou5j}nou zt!o|k33SYl+E~+-)H^1~0g3}UbF=Jd&2sW%p2DWP+>?;kBVzt0F@>wM;r3+F_*2_+!dT3(Cflg*Us~>$NV`T{p{D- zeCSauEjiLu5N|;f)W->f#_ttH;6+A7(G+OZG&t|#)i5~Ihr3V%{~?uq^x2mKKvLJkV;Xf2tuk#x;NwUPkxSzF1V2UzwiZgCxR6)QlnYd zoQfNPS z>!Z6-h(#rg^>p6hS|Novr!S={C=-1aYD%md%>f7m`Z$F^MYX@|DJ zRBwSFe(YRYE&=E98k)sF`?JThuy+UANjUdoU%{lEc;5MP19R$veX9qnI$pOiazM(8 zlO9+tcu&_fEjoawef@O=zGp3Vd*28A5Y4=ne2ploMkkF>F%ltH&Ep-wnvclm)Daj$L*d_cfzM z&V<8Shmhm4WvuD&g|GaGQy%&_F4?vhS{?Q-F4LN@;U1U>PD#Z(5(5qwXgP6WZM-eD zF~MlAg`ov17#AF{LZY!nqrkqrZZf1r7*iCA)c1dliQEn~!7Rf2Sd9CS7+wdns8hmL zSamBzJ~Xo%WaazRy!$e$KdBpdj2nj(QyU{-45B7FO*yix&%N$^M_NfRDe&G0;13hm z>Y7!O|A}ovsj90S#EMk(x*anfbpwp`c$V>al2(V0fA*`~={}F;9Uu4?dd%^w-(JD) zJ-cbBJ!&H4(J5T5d6q!CREf_)oLYjS`}%O{wS4LTlR#|0Lm%PkFM9=kvP05IgCR+D zL(^J6D=YQ2>#u{V_4nH_h{$@wuxeqv!f|0LRAOrDVK^hStzmxqHbi~H>s-g6CHteC z7!(fKj7)d%2CTKT1lof>y-R-w&R32j&Xeufh4eD4_oc6Tk-jQJ-)|%VQTLBXtQ0;Y zA|tsA<>9jC5x>-7hcW2u80`l{v_2vt-j}>9^$zhKQHN=Rq_Dhqfn(d7x#pu^;2TeV z5_8+GptWx|OUpgf3NqP(P1A7O6M67^|A`Zy@wba2g8HaF~{dR{&G;|;Q@#7tyD%26^sQj zM+BR+pgqM24}B2kE_dS2FL@3p{`r&WJ5Lf3btxs9!_Sh8{Sz72h&GUKArXsCPH^lQ zkKrC~dIMV@{b&X=mUJRo+K*YX6&G2@Iwh5Ou+$J?A14Y%%Kbx(A@>8^z+taj;&ab? z5%)XwUbsGVX4?#6h0yQkI3`;iw7Z1QdKD#7n_P9X%D#2Oof!dLb$N~~&C|Z} zYW95Zdvun2A69)YylBC7#t83{u7YILR4mAP*D4j!^w=LomjH@eURrB^4=J| z>d;WN>24Ber*Zr#9_A*PKIUd*swEv@LQ;19>SD;Ey9XYl%C5^Vr(+UqoKTdGNZya4 zZaSvC(EVSN)%6du;(N&oUprneT^(3j1~%x(ep?8NrJ=u!$B&ng7%72I>?MOKVYxfc zbe40-HP`UvC;u5c{^>(Z^)eRr?!zVEQ_#st*f_@#Pdt;;KYlKAfBeVnbc#5~ zu(Y}AOJ8DY;PPq!$V#CEu{veY#gl6 zcd)E&zW*PWaq45A&IkVe+az-v=x2f^!O}AkgLf`y9IPqrK&yn!XwQp9QF6_Kz}!RP zprr=ma*U1U8KxkE1-g<-UQNHo?H4)=(~faqcK4<}=vDuyw;6w?FZCtfYX&dxwY}`V9Je z*@NpRgi*yvOuUXZv=V8MsyRubWRkNmSVlW@oc)2XaJ$pa{b0hoZxC>ocMnh>6jR+1Qa~TsTUwq4JIp!9}ap=A8$?}9Hu}Peg4FM!7 z>%nZlrwPN)fj#Tja`g?Vp#v+zLJGRf#!a|(iWW<%_W4e zS!2l)%f{Q>mIa^3DnUuT@Vg)X6b5-EI?OzKF24eCF4%)=NCqv^RmWBo!y<|`q&beM zsK%mBimuTkX0^>zX;v__X1)Q!Of24POp0{4|w@YnV*>Av+q3z zdds9fIAdh4%QK$)c+h2xTHgEa&*CL1h0P=Tr^>2F-VJj+tn}+Z8;k!z$jgC#h3v=k zrKaj^7?2hT=2Ei`uG2}P<*`>GkL8t1Oep07AwBA5o7A?(K`nI~#2OMOP03O-Cm@Oh zjVXIvAE`rH(d{NiFF$U-*|-w(`aCpEuXpP` zKmO>a`2*YGIFqtvex9$s`+ZpNOT9p`WoqpnDqyU|;}{H-ZfeN#b=?xu znWUTLNJ{{Vs3CKC^!S(ZJ*BRhE1SB2fSVjT&M?>Qb6Bs(^xo^(D2jE8iS)|yenl6o z(m6_Gm0i3#LyB~AgQ@ZUC2A`aYl@~RCNKx3Uzx=tI;zN#gW2T@i(DC=F^qyPqbJYm zNPrT;?@GOe6}tUCr`+)lbP~lBA+5%g;6SxD7<392#Ie-t0c|eZ zwwwDr{7hc@`ZtrcCXsX!NZ7n-lK%2CPkP+x-0BubW2_JEW=2Z-aDxWjz!0^3zPzt$ z6UAWEGr64etM|Q+#ogC(m#00Q<>`cWyM=SnreWB9YyBuY(AS=|#3-ya?(RqH*K-Xe zL*tB%5555=TG-hcFwnLs-Q7E&2vcjga_9aEgwVp%&@OCT=`rsViS=yxR z_{~Lhd>(azf&036%{JOC8^_N+#?s5kky+(13}q|qcPg;L2BggfVg!5|YD`v_VM}AW zAW}6^!^m&bvbN?i-{@fsMoo0BFjy6m#9|VQ?>n|i!ZF+T@P*S)XWKu%gSl>(g`GR- zYetfS?@Z!nHZgbFBRK1mpJ#gOX10Ixo3u>}yeGBFt&Ta0|1OT`~qT8e_0|#?-Y}aN(Q(o}1^w((Fc(xfV(u+@FNa~ZM)d4o(G+DJpcaAzo(Oc^Le9C@pbBg4y`!dpI_VfwN*BNT5I0C zBU4Lzb~Aexm)W#=3sZK2!Jvn+1(&_L_Ug54%#0Cw{VusAT=3f~IqgrM!rTA(W2Cbi z=;fiEN)jopBUQl~6NS-Qik7Q_xyskjI00#kWoD3ZM{jt}QOEPVTl^u1?A*tsH%+_H zVgjX=edt(Q)LH;t@wI`H5?q0Tt*Kyb8a{&sXEJhfNDV$s7^p|pAew+rK$A-Ev7ho< zSD0hzuuQP_e9D;ns0Xw!gy+zEAMJUAKBSjrJnGR8Bo#%xY0wr&>2UgAxQj_e87vKy zqgKHKnj&aw; zK9)3srcwpoHTjlRhEiET`4Uy}CVtxO1LnW^J-+?LFLV0eyqex@N~@EgQ8X^KhEmbr zd*Ai{>1$0j{#qM`AFf}|wIPq?K`R>RLk4WZ%%Ml1VrV5Pd#}DaSpF3@WyK_-=I&5O z{z@th!8^Nfx4;Npk21@(fGA}*)D^D5ZA19d(W4BoTnvdc*eWJ$G=dfFhr=&-h6 zJfA=h^ddEAPO{=4VlBn4>KJ6G?toCBl<{Y&P+Tcd+rkJk@Uvn_kwAtc6G0~va^o26 zUE=uGX0G|rC;94Q{)Cwyf18Qxu48fcJQ?6xz{Y9(;ahmh2R_dBeI7DM04Iil&w2i{ zpGLO0fanD8|IojZB<%>M_!54tEGG9GYjcn|xUABMjcZW$C!qfCJ2j9I;CP9W~v{DDAqWD_&!?)G7-s|!?HsNdr5^Kp_hFC+Vm2mgF-5zV|q|-*a z>6rJ`8*n!pIX#EYdn&3|NevQ=F*ui#y9{fm`21JD$0-l{Q{MBj&tNB~8HgwIJ(M0v z$KeJ8CZxv)-+eZDw#;O!jd~X*T|#MyP+w(Qr8PFDY9f#uk3;D1SjNuJ^O1L*!{eX( zQrwo!*r_Bmuc{^e8_{MHxQ=-p=xa?i{+b#F5&6OT^;`>9t3$P3K=ajjrVcxjzEiA8 z*|+Oj48C+TF;XNT>ZreTZ4nec+)4~HGAV36jH#_hk^w@B6=6f-*>~ajhzF-0G-rAH zcGTsyyoHzrA)^z9Mhz}2`}W8I?`e92T=TK$Qaxp~L^JAlMJkk6wQRUTL#1FHDlve{ z8k{Ht>qsUoF6%NqFdVt7&v#z@YA$%m%b4DA6?)wsx;`UIEZUx+mkTF7;?d0S+=c69 zB+?>to>T984>rxVQBC;5SAW2@i;(A)^TVk1?0?l$yVkG&?>BkSwf>!s|GB*eez@^r zLS?Ke8+j3_1qEqD!lc=>7R53pWFK=lYR)sm_LNc~wqgV|K@d1Xvxxgda2p~bxQa81 zv6PNt6;E7OuoNAZg8B*(G!>nq$ZwDar9q<-I)<=C^t-TUjINR~e_?p9(3)970%^+B z%oLaHx{7Unp3dQOVZwrdH6iI*6lp9}g$MNL%zlYWdCt#A4#MtN+uUI2kW9a7@ z12J5^caaC4@eE$`&i6xS8s{y}=U5X`i+vf4H8ia(!ox&rjggjKIF(heht$)TF5PT_ zb}M0!D@%DsmU^7k;P_|E&{@%>a_I`EL=%*f((Oo9X|;q-Dja*{Rwl*Mj=2!71lwHA zf;O&=Mrhk;mh?)A;*7~{sQ*E84tM}NNNqA?P0%Iexg#+`zt`iGyWEk&d zF)^hF2@>g=&&{$dDRb^B(UB^6@u>AIYlbEhT)CsiX@B|x&UohEvU~3YVmH(6I;;^o ztroVWn0`*)-OKym{Whjjk0r%>#afGZz9H?BhRtmRKI7&UaR{6dJQjLACM4%0fA>o6 z{oqG1amN#Jv#pS=flEwa?f)P(cvuLF3J)>z}Ob;9ud^-H>XUq6!CTzFPXI9=OY zwvbs%yVYiJ-5%(6qp+{Onra*1I1*kIpcSD;s)|nxho5vix)`#7$0P}p9Uy6Ncw9yqdU%R7F$aUw3otXy1)wzYSt|ENDFuP054_ig za8QelT^&M(c6+3`kY+-^+XrjHG$iuV6~BVvt_Sawqi?FJA2U%x|+q~xGocQ@qbGy%cobIOSGE2roc`em@5^M2?9m^xn{RFpo zPwkblK_4R-8->%8C@q_i zO3r6L{$4)ufpd8G+un@L2AG)Ytv-79*9HS7PT=t+0NwP3IQeZ^@D9H z3JiKY<&4uwOcCVjV@)uw)jF6qRS)8$Htfra%sx=C26CU#_X^VH_3wB$cfQwyIRDqb zqcbzha@UcE#8<4O|5J3R2#8JTDx1$ho-@aaM($=XDRoz z+ieEwXA)Jx+B-z%RFnQ-w@tco9C)y-lD<`KlJlQf5q_)530=x_t5HuiuEBK7?Kt%o$o1@B>=L zAP#&UoZgHMdBhY}ytRF@^3g9u%Lc&)_a;r~wc31P$2MMf(fNF;yTG*@H?Zt1#n^?pewr-f=kM495RaEL)GIIWN z_S)fSSVNKP;jzYH$jN$(v`m`|e|-g~JnRX)@thBnZrnl!mwj(g&@R{T0 z$86!RUi3V&!GM+xLS$>x2$0nBn4+etd7XpET|9^he`j1qr;~90KfQ;vW$60rfL=d~HU55I$pLmCf4F{a*RU|_f;kh3MoGfN zp@-rwzlx5r%x}A#xucH^cR(w|y(-h1hd`N{TJZ8kW5Q0(rrX|zuJ3_KNLvZ&GqzuG zIdpsY3CsNDS1=`(M5DKg37UuDreACCuTmNvUhl4Ibc>eJU4D()FQGotUF|)!vJK&m!EYO8}4~`?)coZ;3h}1G_cso zDUz0e&q<8nG~*xM{&IFK^|dTs$_AC6^!G6t3H|6(dxq7h7 zUcDjTxu(N082tQR4ms>F?(vAz$(MTAsTMvSiYD^PjS-x4V8ibYg~Wo(NlX&CJwA-) zbsXVtbkd{s&#e^|Ny}y-G$PjL_zN%Ky-zrU6K4*gn>#-Ium8&9KKHNWM)66oO zL`jR~8hnr|ZoA5es1{Wc6GP`j!D(ezy27qjXfz6|<{@>-ejkj=NJtyIwkoIzO<|rZ zh{0)s2w1CF3%;M>1p3bM?*IEC-tg`Zkhdo2%xz{c5Rz7gx&ep}#XA~&{=JC}Vsot) zW)O9Up~}Wtt2`PFfR&Ymffx2o7?xD%1KtFn%R4FUyhW=xW36Y8NFA=wk@8eZbkd+M z-k+q+j$PN`)YD4aT(ff*OWj3`Ovg!GPU?$^nUo3BS_ekz&O2)^nPr9DZ5TXR-RVq* z+>MINHjgJw+bk|Da{7Z$AtA>~Yv{Xb*`$wtueIz)YumHxMhWV*k%<(7Wx*KFV35&j zb?D~sl9#-i_kZq7Fgc5~rdS$yOlt6jqn20(-5w@Utbp&%^Uk-vi_~Pa(>AI(VoVvF zT7))A>GD|Y6$KU7gqlQ@93KK8cV}GsZ(ra$U;74U{o}jnwUt&U3AVgGSk{`-@FYy{ zd@WsG4*JAcpDx^B4TFe$S5=?6er;Fp6udScTCbsKP!VR1xCwi&zLt)9mag5#M(1%h z6rgq2A00FL_d+Ag#HJRXdBiB(JsFZC*p9W7r(6W`4XwVdPw&f zi@NZ4rRA!J37hci5BwwFfBU;=_l0Yg_wnH8zlh_W^(-&)>fI`5brb5u_sIdDOZP z+>4NcIvLl3G##bN&uT)}f?)A`de}>@=2P$cXP*D6zr)YXV5iyvRESMRvp(@ruN5_* zaV^Mtv#|C`K;*k?{aSMX@B6*=OS_+$Gz|Hehs4J)juTp2kD#BXSeww_w+FJk3QUqQ zAuhG9xg7l0zRr0?j78fWw*288SWE;p7AuC$oe8e_(N8gXv{W^5FeB$pVGYtU z2z@$P#?9MvOrQT7zWcvl$QPdQFg9HAJIr7Zic6bdt)bINNUaTH>za#BeTy3>-W!c^ z)9Z6L*7!c-g5cx;rWZG|e!gA?MggTqaZyNFv#O7@pUSdV;(??k724oczj4!7B`i3go{0$(}j?fBih@m@=N>H4EpTAjv8L1i0T3weVw+^w)yEdJaN ztr)4VFrk?UtChQ22z)Y)E=*T-<1aq@kPm$1A_)>wXjLQqC+sDzyM*h*p5>h9zT^#@ zcKXw~bjJdd8#j{mbMOwMkoJ|yJY(a&d2ZHIj>;Xg*?^SLh?aG;%1XsR)AGKaS68Ee zc?2ZEtHt}^j3l*O7!_CM1$ptM^Vj$*qvesPwOkP;(za3w)Y*wCzJA`1_^a2xfgKCW z`U zR8T}lq3P+IQ&oGf_5S`?Ywx{wojRvaH=y@EPnQqcHr;iq_TFo)_kF+9W1jjyc>Y> zc~HeT3srPLIsCy7XX|)`pg7~07vY!x{cQ$S#g1#QL)0e+0h8GpE{BhA(@FBO`gVe5 zp_813-S3NeF)bq5EU!M?W%XjV&Twe9uRu)02ImFm9Y!6hCQ-D~eH8<0BZoJ=hc!g| zIR~aEpd)&tF-KH}L$A4s@4xwNxJ8c_A&7~Btt#M(9#S}rvB~9xj^Fw6?M_$eq;9PR zpRDnuU5mI{|8HHMiCZ41B)PDl*q~SqSOptQf(}BO-229XMiX)vlH+6DXh^SzuS3l+ z6TJ7@F4;o}T=Y+G=Wq)TKJt!y@YSzDZ@L*OB_x<#Ov{OGAp1N$I*I&px|}A_YCB*} zR;S(*)T2FN?&L>umuLSGR~>p7>mT)Gp8D?d8HIIN6LkQM%`#+Ws**J%8TCXb+KH@F zXzFFH3;fzoKtL?LP%-Zue#cJ6+jlT;z=Xw^wk{CFB=K)85T8a&7qTE^vYIGMb#Jd> zdv>i-^VPPr^|wz`cHgm@tUc=|5lU_Jqh1tm;*?&SeaS>RTJZ4_8qe4Vb}o$=xdG?> z>*qM>)ZgJF7ySpb2OUCL8OjjwHV`CEOPzuF@lH||bX%7eJ;j3U({)))v= z#M?S;m?Et+O^v3h=C`atW+esmY3;P75(`eE4#d;}Ym@MnE=OV-tz6dlR>31y7*-yY z8TMPh1wVF(7BE%{wb)=HY9j$P6~UCK@gxkSJ6m6?&x5SB9avq>&;*4i4xowwELG(Z z2@Hq3cjsv8e9fyEn1BXH2qq3bQq>+b zBwc1`4)@y1T%dVwYs2Pp#}dV;M+Qk5X-an=y!k*S)wXB?-u-Y!JE4}rElT$-iT1Cnji;+A)M<-?$6Wmmh)`>(SFI_`OaY%{} z0X2$u0t3sqXIKnEPv-d9#b1Y?{1hF=$fLMX28O;wu?#C8?_d38GG`oVeEL`7w6A`s ztthXPy*-rv-<{gjIVZ_eW8z4y3#>LUD28qcwjgNIDyoENQ)z|^D$##%}XcYfY; zc*MKj!SQFGNjPAhVlD-HN$1;i9NN2C4AMEM^ANDcEhj(Eo5TfBYhWf>lot> zTgUbgIOw>0!F~rs8CFe;N|jhsyl0}>#wIkUk4;JaT^;vYA<`>d)(|RuSz@XR87t#) zm1t6v1@T0Db$VV*`n5K~^u!Y{ir6ev6%_^Fy8KEWd-`)Y^VP3oY-R~P$3i*6^&)bm z#-ao~C4murzr-Is;$$}b>@x1S?FJrn*cK#|ltHn%c0rd1WiBh8r2El3|3A;*QDU*4 z1}aKOh+9BR`gM(@i7rbQ&(W%;sUiyhF@o2m7!waL`svjf>^~Plsj+X+*h8> z9S^uVX_No}AOJ~3K~&wJ!di^fbhpra4U=*y>c1ao5!e_^s8kX)U4C&$AIleBb1v)V z=egH&p2y;#$IPHls6zLgSEitZtY(k3?{yp2^lp#J2a&I;>a+G;V^*C$1a0BqIzIu4 z^rZPMhp^+SA2TQhY`gwiHt0PG1PnIHf2I}knQwd0fJwnBb)ji&fgE%&`yY7};i{_} zXuUVu0ayGK*|iwqYvb^tN}7q~o9(hRWZARbc>1g)x7X9%qpH&uzD}btNlOulTEfOl zdb(J5c^^|-28PB9F`Jr6CXp760?az}N28cB=2(OXy*i;1k619qfwk;s#(eK1|IFQv zIR`(OCHNB4EBMHVKgofI9K@p@cp|&XlD<=%b&VBe2wj0+SFYW?HLcB{w4R#61S>tC z0N01rG->^wOuPQy5S4W(DT(G#PrpO(QFLzNy0Vhm36+Qjg^7?MiGo{coX~2qYZ|-O z;Y4*29U@Mlg)n%)iQM-!JgF*79kj|Ac^@JkP`BAWSV4jJ8AgHjgFrpar`QDYk;N1W9 zb}qR1%gprWn3>y;rA343MOS(8k=juYA;6%85PE%na^2M&J~K;M8g}j+QQ01qbqN8` zCK4vf0GB8s6V;s7bfnPyeK9s68>yvK z1sC10q7z{J?p0ON!yzeJyk1kyQloBY_QqOtwJmHd`&vvOS05d~f_jV?42m&uheI}V z_q!eyMbJLd4%1@a&1t!J`>7-Wdy0l{27<LtgX)1LS+o_NY{;j0Q~1z!b>lSa2x zhg!BPxi&zKt1Tor&>&DjvEcajJKoCmKfjjWecfwW=y?XSz4Se@Jdf@IZf=#x|J!HO zuN8b3`ReV~FaTfOcZpXoO`54;mU=1@`SB_+bKpVTjG-@%rJHYt#YJS}Tz&(yR9JHB zkO=9C#wirFe|n@Rl}c>NNePeH6CPmjZT`8j!G!ocUoG)u2lC7gp5P}E1 zEvU+h8Ed)n!i%{3b8cp_uMGMFsFWu?`SCpD;ivJ=GH2H+jZ!_hIuPhj7tFUxUqu zMjGU}Mu0-=z0<7e$>~DgT}noYq0t9q-DhW5RExSB8i}+6hb}K)Tce9C*<4c5sI{)6 zL3iTc_o2;+2tje;kRY9XtkLkPS-!^Cy2s?tukIznkOEmDV8u~|B<4m~SX|`yp7d0D zCK({q5$w9s38}Ywhg0ni60Egg0;6HcU@&0&&Lv)W&R_G<&wdU&*vQ6B2eLHsxWW)B z#fm@`2*G1DTELd&I65vORO1TkJWk<&gJyZ{EB_WPhs^c{v01Wlud5r)KuGtS&U)4y z!Ai}7y=lzNpZ^?Rzu?pS={w%d()vFAb^R!|*O)cZyic}f*9Lg+YZh+nntqQcNh0zi z_URaQGq;dV@LJAy6b#JIqrDka1AQN0>sBOaT4eRu$0XP;I~EiFwBE!`N=OU=EP@uw z9q#{NwwGi2gC5=)=KGF??|++O*ADO{#-_z=OlPHaCUO&n%WkJMyDJM-m!l1n@4Xw! z;i@5RG8sO%wmT)#ePhv<0+Dk;bxJBl&1Vi6;>^}WF}Ws+fGAcJHyU%W7{2+gw=owC zizvYc<_!GBAO9iW`QbI3b?#ev*y+#Xb?^B&H|z|QB9y)&gc4(7*cJGUT~Kqrbt0WK zbG&LQztC_*L)|DflRe4AgA>#v(FtU!>+Z2<)3IBtvAC7%F_{DyvB`2Y6&I$ZoRR1b zCOMHsuqtF}2+5I1bD#O72db~5))b+ZVpM+!_H=yB^YWn4q}2=}OnvG$0hd*KGe|{4S5&2k_X_?CB5Rzj~023Jd5|3ruu;R6Eeh;Ud z{!HF~{%7%S20Jsua2z@O)>(pyL7FNOpN(K*gr6EDfK!VO*7I$zyyD_-aptGK$PJqg zV@wY%E3lFN)C>zUEypq@p?3FsoyKnLOo3v^9ukXV5t1i=4-I{6D6o~pOb7y%4apO~ zrDWBJK)rryk-9M^-sjqnRH93cV4{9O1uucXgsm?rjkwM;*^_2r;tX1TuB@$Ds0nwf z5WJ7md<}>O%F&P~Kj{>TWL>^`%R9-h+0A|?Q`?0&BnUo+;@QBM5gtP@1K#qUPjK%? zJe3c9{_FJC9n3g5hT{tBlHF+m-gqjfs05r1Y3MciVcH^)TqIw+eKGNx{skyq!^cQ4Xf@*i|+vplr{S@F=^UBvgT5d*fbpqc?)(fZJ+ z!YCkBns|mPa;)oSL0dL{Zd<9-kNag0Xvca~HRZE~^hBlqNbdA6sCclRp&v626;+7) zfd)^|`0J3({aZeNHk_cQOG|@-L?JiH1v5>-C)Z7FgrEV8B8k5qX?UU8ck&)na>it% zq^--CNJ6N^;-W4#D=yk*)&*|v&bFMg*e!ZxN}_b<$&vheNH-5>85^>tA6fw&!;E+6 zQpHRFmd03hEG#WVzGD)dH~WohV_O<0x*9p(!1krUdH;F=kNNFq@w&I4$Ic)yKg&>* z$|$ZVP%%;bTO&d#6G2lTjPVwWMZ{rbhN0WYjT<-eGiSM34942%9urz!i#9#h3YxS= zbD|l#)OC2usfx8vz7^Y=WQ0gvse1`4CX&yDB>t6-2)TK_llh0LP7Gp}4?U3f*PV=! zYygm-U9yM!!(K~bwTrw-66%XFgy8X^m`uyiluI359|A(CU%GWS7ef(gCU6qHzQWQl*dO}16eEr;|oD)d{$x!-8 zDU^zZZQFU_^Pa=;cRi9B>mqt;X@(t5=8?2(E6xnsdlV!@UkMe)TX$k^yq35A-OG8- zSuZEt@kn&j029)>4cb8hWs;Y?Pp5EOy!N=3-{XcsMD{fdYib{~69%Lx##q!D)*W^v zBV*_rW!LrBfR8+Ql{AfO96JINyKlRp25kh;sA5fk1J<+YsH0IzjDf23Y`^g)dd5MO zZCcHtBAty|_Q;2NjXEQlR_#wKX;)S}t9F})oDLzm5Ooa*L$d*Os8^CvezJq1nc7ak z-pvPT#%JlDG!OGp6fM?*CDe2_>|WYB!}>8Yf?pwHhBg*;U^|aLwzboL#nDGXkb{5Vu)AJEdPOy zw4%24tkJ8Qx>bLDlOmXiWXx8_h$Y zG9wN<{#bsoa07m}WU;@<()WUa8Uu*e^r{ZT3J5eS%H+miYL&NvbLkqn>3V_<&&UBbeHe@Q&=N3 z(-x=_Wo&lr_}OQ_3RmAiC`WjrNB%RP@DL7LUqD$Bf?>GmDNBQQ>-o{O3!L-D5Af*U z`zy|U=f86O&MG}gV_=Aw5yq6Lrb4(bWNQ>cLnG>LQ(2|ak#zpkbQH>TxJLJ&kYDS+ zyX{1OD>v-j8?8y4YO##A-pGqje;OBm^5ZzyL&wo)UOFjgt@}^C3MJ8Ug3?fj@{lCS zERq{>XQGgyMD$7NaKRNty{D*@TR!zEKKGPo@YUaW7FWFPH59k(K&x^0&t_->k~_#` zdqqZx(tOe$@?go#a!3Q!Xas&lZ`%#*xa8aX@~am!7<-nMhIo@V`r4!`H-BGr;_A~R zvNx#SBzGw}BS{l@H!(!5(F*N8ugmW=%bIyzAtAdf(P*7_OyMy1JdR_3=QOU^WVzw6 z{dv->UkP_OG&Wp`P9ub-FfYrJfU>Xz7hdvTJmp!>=UHd`CD+`rmAUnsK>Db0SZh(Q zO;T+L2_-af4qaR7#zwQA)SK8$iQuiJGJ-mXH${}PI~zd{BONQ|)sWhnKGy(2no-hp z877eQB?c1=Mgk^!XHY~P5bCNk-O3&Sj*Q;)ObX)f?*s+Q~}iX z`PjdImIpojNxc7KpJp(>5s#tNlnRcE!uBd8Qx<7xkcMa(uIaluD^PiGo=^%0tTUW@ z&i}_;U+7r}i7MOPqm0I!Fon$PFIg+cpH*&Mpcsz$z*%Q;(nB7`L67(?miFt%2CJbo z(a`*MLtohU`V}J#dvzN^2;T-y*mu2|dU$0i=-ta46cG=V=jzXXmUTDX%wp-;?;#JR zchr$+TG-L5Ef)PorQ_usXa$gU>M8*Y0Z+hu_e#F>+^4gp?6Ei&2DYNtn?Zw52UDK> zDa*L|w@aq4wwquR$dpY%*-cQK>U1r3GhJJ4u&vWui`peg@(GVl@?o_pwnR*(cTI`2 z+Ro#e+{w(%MGa^LRt-Cff{mv>p1Z&J1?-&dF>ea0vFE!#xQ3^n@z>05K8%GbF!mvR z(SYd{^m-7qq8Ehw9D7H8`*9EDq4&KDedkepY(P^EK=5gcu7#JX?eoHP`We~uw|k-G zRuuKJ3gWPmRDPvDt9$jhEnAiK+3VvZ?S?CV#JA4BfXDvfA2Ae1Z`L&l!X(O!m1O^z z(UIa{QPD&NY>>KoLY_pU^|Mk>`~!khjZ-vgE_N$WHRBQHmpl2;lTPP>>kndd%K|^x z`g2bBn=?7|_n%5BCO(7GEgo8QNKgss6NW?qA?+D;a~smn?@lTcmjP3j{Osc&;0v#P zEe9?XRDO)V(;ax~CoW(#Yv`HKAPJ=OSgC1B+CEF#i0HfJnUaijJ#rOa;s^Y%qVmZb*6_zA1Q;4z-0Y>>-DSJgi&E6 zA<*f1nbf3)+@UHf*E?O&QUT&)2?t1uy;E|H=0+`w7Kh zJ&Tn?6OA=K8@72yLV5<&M9oEP7EE%;@;EgSNtKdus9?Onzr5pIe(S{hK(G|n5JJG% zWV+C-v5>9vS}7Loo1^2FVYsl!obB_;Gyj^xk2&QPFJriFK+*4E(z-C38OMZ3wQBa* zeNDq{`T9>|%)NdU2m`=H`>yv&rIJi|m^bA?ZI%qqvgxopQHjuV1zUe{H6}!MvQG=I zLG5!9b#3C$bMK|l(i|e7O}Con!|GW=ROVBUWXfbdw_SDuBXF{N6@T5!n^uI2@Q_ck8$?3Z%xTmFqJuU`TwqWIcZ zc+r@oipN)>>00WdMRl^+)NC3YvhHm1I!{A#ru{Q{vvxNPl*xHycHr#&EO7F1shw*q z5}lDOY(Dl*JoW`Iq%17``68PB8Pi-RlRVa2>&D0d3#y5Sn`nVz+JGupM(l5?Fx}h$ zZ7gt8N{d)125i2=;f%*i6g^8ZJIA4Sy)&WAa*M;{pt2RJcXA*k4>r=oo-?$TPnlbm zCeie$;%o2yFb_O%3ny+loQE872h7i|Wca zGSs0hdTFSaEeC!=urJwjlG9;CGFoUCO=+?#>U$z}FQAlzK7OvxuxBvy4pV_m7O7=9 z0)@qqzDX;wskfe-K*qs8X}#QWZ$Z8HmkBqR4C7|Dp6Z73~*^n7?3>{zO&dd5{9t)I>}0ND+$Gzj2RB!!D_)@QkrfaR@mIsOL9%7aiy8?F0 zfLWWsO{O3nGPRu&p`-X{_Oiy=#w3MTOx$%wqmPm=IUrPg?>+BjW@rf>u#Qnx@zS%O zPZ;h@0>W5a_N<{NP#8xw8Z)Z4Gt?#goZ%OvUA*mrFY}n^y_{3dcopyb;@?+p0_rMn}xysO3`O4&#(wdr*(S~aKOciV+ zw~;)+xXtAdz!mg+hPi=WQQj&EdTcvyN zrCm^xkkeW-kPy`v9G0=CLq=iAoRTJOKbz*I;|$dRg+O}0K37%+r;Z{REXu$-td23J zVpNXt0d`dt=Y8Y?PI}@q`Mp2;8-DQfZLB-saMTuz$5oo@f;9%0Qht3XQ;`*OKAb9r z7m5Hy75~?2+fde&p+-QObOd$sa?X2iY-m+iM7ujd%$;X18*weu)28(vVxC0L_Sm_w zjW_@A*K*MMIez=er*QHE@6UJ~wLeu^;hbAxkJXMlv`%%qnn)1e4Q427-_cjxhh)v? zoGklWt$t7_ER@4BM;yE#zj?xM;H)LodOQpCbZ6rk1jz`Ur>!pjCx#Q38rL> zpl+6Te)vnA@W|77-}zr-u<;PazQ@o9u!^yQb8+}Ms$yMXogrw2sHYbUeYKGuNz`Ro z75V~JD>Rhgm4`p<1kQNo?-QzkvjyI_XsV{~7tgF(*Oj%S8a109Lnuq;*Uj>O{^1|F z;mXT->MLHtsIR!Wf?9W!8;yhzx-`mtuiL&H+shi>?d8w=647C;*mvpIT52a3k_3S> zKZDNA5r!T!8soQag)LhUW685t^VqHq;y_m;AtFdn#-bc{(#c%mFw#u?OyXiwa5@Z$kr z5iqJ$rN?t*A>eP;d*Rd^O#LzQPttxBmr(Lj8(w*4DOzH z=ALhO6$}?(u%2qhMp{v54`tA0u1%6CEve34E)vc<1eLt8N%Sda2rlq|r$3b|&wC>W z^m=UDwMe;nGlOI9$e0Qd7mIG097^lznnYRIwP%v1-3UEvH>cEm<2_mdVkxPjM|=pK zRA7;8Z^&{0B;!7bCc(MpQ}%=))!`Uo3Bgm2JVoL7<+h!?`=39^2R{BWZoFv`vwkz{ z_d5Xfo-(w97bh0=zL~b0%f? z9c^*7afa^kz9iXwsP`BH!6QLgTDXN5ocUMui$vkFZF0QSiK5x(RmjeCol3{5_a^BT zgwit(OE@>nHBi@>AyUHd&OhcvmC z^c?FBy8{bXT)~WiUDy7C4O_NQhJX{3C=qdiH&C@MFOpj3L2@uLP~80lzsvumV- zgj$0_q!|@HZk}@nzWKp-bDzIDo5cV#MsVXXXFThveC)!DFm@Jigeui9K2)*r@Pf5H zR1G1Fkf8X55tXS}as{Ow@RiGc!B_t4tsJ~@9S^?m2|VtRCv%TGA3)!d_|nNKrw;t9 zE!Jao6Zx!YlPF&MX|Kiv?$DvLG}gUSAIK_*hO`{+Jmf0Nql)Xmw81B|9^lsXJ-@sF z03ZNKL_t&->M-00!KB8aM%~0julOqg-p)Y(s-Up1e zQ5PhVWdYF8awZF11KnW<=Em zX18F^XU8q~I}MWK_ZSpxdCKo%dj;2C_B}RkIFu8gd^%-sLrjwoH8o2*&3K;j+zMTD z5%!ez-PEni#{n(skp$+W5w;u=uKESLhP&8s%-vY59By_dCM(mDJ47cZ&|QAMWNroZ zXE!82dGU-wVC)UXIj*>AD{p!0oB81RpP?!(bMqUp8#hn_5=K}{qfLn1q0nY^WE!nn zhhf!ZIUS_Dg8XThY@1Q0iG6e3S>uG&3CGM41nt^+YBw6UZ6fNkMO*4(_Ffe*t^%L= z{8#v+-+nX|@Xhc25S*jZib{#}7i02AZR+4@O=pX)I)m8lfN7<6Vy#h=Q-7Movl9`l zEeKTrJkAOm*9|!B36G8$JQ`_c#$=FAM`x$4MQwgdvNK(MWFB}%gbIqH&&~yS<*WXI z_kH4gyv#GRZUf`t7~>+^8NA0DgZCQgjmbt&s9mZ;W8H2|f%k^8j0PP=VZnQXDY4Gt z$Gdp{+up{&!CWz*s(ci8r);SD8I(*tQyV^$@)!b&51t-9e*US?^Kb9}FfV)Sn<>|C zgiSNJ46*O*4w)uLk$p_0+voK~5!rcLkHlABK&oe|>fi6X_G{g6vss%DDlDJo;3;bI}7i2{4<97)+!^O5>!Eo0U{Xa686a`t09j!_Tgw3W7)IJCk`E z+bED+A#hpuVnf}{v(oywXVuPR=E3gYXBp7FM?i>9K{a#&4%JSBkmx+xrb&~dJ=$f% z)|}ls7)(=MhLI>*^xiY<&vBI%p7xfvF}(9p^ydeND3w}X`Gybk;m>@7YS4>3)(|V) zIzcwN{3QSWp zRCEMFh~aa!=-HU)=+cPJCLx)QurV)(4mlX_iYO&C(iBLOg;2fT zbDQ-bZPIq_4wR>rnqtTO3dOW~K_qky5R0{tD=^NHs?mxb^Cn10cx zIBYYge()0v_nTqROmL&1STYAHNe!CRS_p~X9}gymrBDa21@#!yV+r{3B|qd1Z+aKs z`1UvG**Wa|Iz~YfqCs?s@mXqo_MP)Y@VcoD=|MEAEp;k;PDsDk8aqfPf~HA8UbcL4 zTj)-TE?KiClOAxLf4dB=(^jl(l8vxx#f&Rh*tv~k?{Y`BZ{Nyw*KehmUB|FW_R&ga zMLcD@=CCv4&mAN+ z9AvJrh8SI%QRC8p%o7Ner#E)|;`|Hw(EolrFM91O;fO7aH_ze35rS{%hWn6&Uoj6x z<=+f1Z8N$ zmNc6z)@#kAc=yUGRR!Dr>22Kf-gnUx!?053`US!JxYUh}0;+uQv_g@8yEP2C?UC$` zTQsfU-#dn5UZB+?@LbE$J%S?lziw=%M1o}(FuPW&t>{u)Pye8vaba2P3H^KDm;1f^ zwfK#FtTT*#$&PWsBcJ%k4Cgj6tfIgcE7%}$nq9;K4gs~b?Z?A=nPo{$?89g>uQEu%0H zmz=f4W~4zONFYD@Oif+TE&?!lJ)|KI)l=utmhdU)(Il>LW6`RfAc1jm__AUsjB6tZ z>cS>VZYKA`PuJH3nYb-A1tp+f2x1WNndgZ#6rrXx*6u`bI!-ywwrmwEv+R8;6$%44 z{rji*+L?dO9qmT!5N@n?aL-r2igl+y34|v2Qd1+{{+J}<)Y>~L#K~{^d1d7Z;xKC1 zS(beIb6??~{`p_{&gEA!7|by{Q!pMYRcgq@Md7&C4o0ygL)2s<_G}-i@0qEei_r0t zmuBBsUbIh}a8IA?Xx>NfzBAA5{yVoK&WUBBdX7Q!p?PnwW1O|9H;hAtxPqXj@!VJG zI-yR%kFtFv6J6(2zKK9UT@i8Eds77Mw0OIJJ4tAyDqv0I{Zq1Q`^{YRiT88dU5<=8 zq57HVXazMJ@U^H~O^FMMmLn#bVT^-fT%Rvr`a@p&s@LLHq=yC!j_AdBMjJJ_6R2RKqc+J^G=%?(fc~PleT@u}_Xdx6r zgdmhY254Dl56sT4LuG^pW$ec+EiK{tJzUYpSh#-2i1&T+B0lu* z7jWqQGd%EqC-CrxJdop$JBsx-1r1SV0Z@`CK5ZqitN@TM6(y%PbU+}PrdwHFWXd#@ zOG10rrDE5Wky_$SAoL7l?{U^dSSC>iqCriX0vpXjr81ZBJY==8Fowzp#2N&LFCuTt z2ah9q&KnbHTeWM5)CIe#gV7|T3)Y2vUG(RlpeiS z21^;nvDh;`g0Xz}r#JBS^FG4ozx)Mm*|rlmGtb<{1E_+JB2oco;<_~xp--R{KQjy)1ftEZ8CFp%l4a-EOlgP9bpI39VVu-vp`fmi(fxqR$`3&GB_Zv7_4 zV{q1>-Xoz+UDqIhO^vcoXkq)nn54^UfGaW0H7{IBxHl!nTaMhko>#u?B@9f7#U=W( zX}ZFumm*e#6J=?2y`fMyv;A-j9; z=_rM+$dZ(9cb0|kwIN`cyGR!9mWOGHnnp*N#>Tjygfg(n89x8^*Yk*fd=rb6;+#@w z#S4d53!Acg=!q_7i~=00E02&dYZwNOb^@2Z=xpqOS3eFTW(?dPp)9Y(Z`?%tfT1nqgYvlU^6~{ zn)=miuKC&N`blOtDT(5w;<0L?^H^;gs*0-*W19*`fw6*);-s$UqG!Jnz0y_dVp|$< zU-v=O%vQA4y^xB1i%d*|RiUT?Tz56!c*EP-aqW$a=KGxbl9!-I9f=GItZ|Wg*c2$; zqO(R=8nn{1*H}Ys>zS-&({#QL7Hb-;djF_Hz|3-tsNp&5?r0-2Q5a_v_|zcJ9eZcC z7KTMz(K8j-FOIq6osIyXl;Ff9<{DKB9*k975s?>TquWfS(C_#7<<4Dv@#3%Wjt_r| zOTPOfycg!?3I^-;W8@>EYmLJiB~(5(jy1)w7Fl;bcAhVj?J9MudNVYr%@U*y2$V?y z^0e}J`aYc_%(?DanNGhXW1Tk|3(09onHHjHVp=_un3n!kCxe@GCe;}wDrw>^I)R>O z*L6a>bR?P55v&eOuFd~$wZD}oyK8%!ZumRkeW z2IdpO?yH=u-m^r*)*&u zoYqwflUkDyYSC);IVLGnniao7mo_XNHx^pwr1bmk^e>gwMhNPoAA2#w6@CYgJNFIr z?tg#m`W{vdWu;vFpFiWdXa56cemxb@rqL%Od}AWNz47XnI=NMw1H2VphX(f$0>P(3 zxvVe-tdZDoSc8;f`YO!y;J9P%$b;{59QQx*c#b&yAPN+NXPk;$D>02MUJsk#^hw)U zO^1nX?1DAa!D6ilSaQ9{lr2f>@Vrz#SRW9rxagJV@X7annAd&!0yyFj#yy9cXki+R zwvIyDS|}QAr=P*Z37KeX1vrhO7ZNvI1DXA-prOK#N(Kt_i{zE=VYY`u384*1Y=Rfb z1cQ=7jdGZ4B2GZ^{~wgH^7KbTKKgslX1^cBxu!PHheiiRH?*n|{%U@yZ z&YjTTgq>Z-!f**^14a!&ZM4o+0j+S>MnCzqaW`UeHJx0IHps4O>CC54TI!+ z!>apOcPCyJf7o2}tQlABIP6W88*8gRYRBR%3sY!~1BBqCKd<_z?@=Klr*%Sa?V^wj z2_-0S&;Ekbe)}}GJoeEn9kh;qVIq|>ByqfrNzQZ}r1rgjB}5mI(?sNB zzb=H~^S~JB?Yk9g3qET$sSq%>fLV)Mzlq_FUGxl8zq}EdI}#tm+{u$5o4q{4r?n1U z(b~T_itC0w&mj*yiEF=pG3&Izk3A4@g~3-Exr>Q9p||&%m1$F*HNXL@o)J0)W1bNC zO^S4}gRhdvS~Itv zP;`g)T7D+6=fADoW;5swg=^FmtVuhKe!V2{!g%J{W|V@_q%ZN{qDuRPPhjf z=Akcu4HzE~7bzOCu(olco{9m%HXis(2jo zIQS6CqDYfHNdn+hplcp*WnwaS`ne%jA#_6pI&@!Cqa>!8%{GGfB6t=*|2Zyt^V=z% z;R&yQ6Xj8dp)LuSH8Vk;OnD6%bph?rl)9y2+qfEQU}nHU>-T5C4JaNTD%das4e*9ysn`6+QMc2*7W@l-M*`B5HV64UAqI+1Hs)yj?kjAF_UpHNb^fRLy zjUnpJY-ZJ@jqWF-;xt1O$&3T0ZG)2*v8(Tv)83{QvrigjGy>~P2iK7rP4afqfW>RA z5t0^d$SG(VF!(gk$l2|+K4K#EZyB7hCoRFAjk8w&(=z2VWUf?cSRkey+$|1AoPOFV z^b3PEZE|`$5FiP`Yg8hIc^W|+j5Hv&$F;ZY;7|YR@A=HdUuOO624?m@jNy2Uvk^@u z>27?e5(+8Ul(uZKaYcs)KE!H>=xCel0Y2_pCavSb3Oc3;*O9ochp{sLGO_ zE2t`ub2dFYwRfI&&|{O{+nY307!E0}yO!7g*`M(EM?Z-zr#y-K()Q_cSCK^S7)8$Jm6fu&F~bJg{H<+;yh(~c26jo$JxJxU^fkSx$k zmRr!>*8T-Gl|d)G*7pWsP*y@mRufdxK^U5JLM|Nex(tg8^riH9SVVR6nXna&telyAE+>Xj0~4B1dcxB5FY-3 zd-CuH-;cW{SKVl}^48Zk62`a#RXmgYLvE-nUBjgaeZ;G1Wj#ZlI= zLzJH%d1oGc&P!1vNRW;V>M~qRWx0MQO)%^B#ngW;{d^Tg$3u2}{8N1M_5Z*|S8(lU ziTj@UA`X4hQz%U|H0Ut=YE)&SW^e6XX_A!d4#P(apm+^K<~^?lNkYqNaY$b(E_>Je z_{xQ!=H4egh z(!^G?>1rCZr01wsp_s~J#Zx4PwgO&EbjDH>@!+(_#^os;gaIa<#g^|elL(k}_QI}7 zLCCpEAyM^+2($}n9X5F~P&N0e7VJxxe$?z;nMS#xsKxK#L=p8=K(O_cJq}Dv(DXCg z-$toinB#*K%-d_A^65XBQ3$y zr}}!hClc()>+H0UtSO63LW$^XPD$( zBdu^#(QbH(2tIL%ZHT_}9JoI-2ONm*`UTzxd{xowJG@uKW^|irq=8JxbXzqJavNSy zX{OYx{Glmcgwt@0hLgSQfLQ@E$_Jv^yG{!Bn!-HYAFW+|tVMhUWyJwAJ-+mg*YmVT zo=nvn;QGR#aNOz0{W$gH`*Y!c{D2+7Mai^DaJEK^ycjtUVo{auz4#V|63yWBIt{o< zz}4i{Ef{04Vv)WFA1D`>*fk!a0?rxwMS&{@6#W4|xoHPK`S9m>>jyr?AqVZp-H$n% zhdty0oOGYNbHMr{iX=@+O-7q3S$)W9&@49~1&wJe3{{D?u-aN=HutA)3@vz#VoPRR zV-acskb=}i1u07y?t-NuvT1+l$4m=L50MayJqbykkTru7nFSpRMSUNWhvD$X>)3kp z4IH-rW`26z4VYu^N+>J5F&JZ-VyUTvLreY0{l{yOc%a z-FOT4I`Kq`d*6q#lQ?a!2N9VeFp;U@D~wV{A~$ zN^vtYRJO-0yB7KCCEwy-KYbAwe*GJ4-L{>X!5sZ!J+^0J-a#noi;GFo&c$ZRSt>N@ z#xRJD^a(|pWbecYOIDK6y0;d%OC^BEqRfuBGZ+mi9RxREr_4bwStQq}1A+!qM^iV0 zgpP1vwZwFpHkr>Tm6Gr4DG8g{zzTv14jYCPVF|EQMyX6Mt{s^|Nn%P?hO{V2?Y<=n zm4=9Jsl#~(_$2z4%$+V81*q7hcc^J8?a$c#d9(K?(n=QM+UlDR}R(##1fr z;!!94CdVAI87mcFTNl8P&h=z@9#UF%bRR3Rc7}id>VNX0m;W6%{&Fj`>kpt98)O*h zSp(uRR`69^_pz}|E*j1KOzm6dM^U4QYHBfZbkwu9h+T#TOfR6-2$d31!yOOb#2f$q ze=;sd%=Tv@I_=`RRh7<})o2#fC!JTiIy*{=Z6$Ac@mZX3ulsS2XFivOjdRQlTx^JQ zg87jgIuWUw;j!daSBmw(oZA4LlQz7OKE?U-}}mJ8oj^JsTeIFzlg+ zX2nZe=rs+42zdz z?+g80!*ClQ3=J9}D<38@>ANu@u&xn?)xKj>faS{0Wf=j>KdI`3gGq*9Na6xZDA8V@ zo2;_ssi$+7GoDA7EpXx(jZ1cv1*bm!Pubp|XCd)FRTK%D1csmztEo`u4g{g=%#r!L zPuLT7qO~+o`U+9SIU56fQg(!|JVv4hqHqPMr?3`ZdHiTZVU(U3bNJ>1IN@%03oUc(IW_l!a(zPD831g>kj(Qi!~KU-M-flS;*EO?~kV$HEBc zO*ithFJH)LJmxNsJqB}vvVAo5xU^1N zP2aO^yt3jIQgL*x#U^gwv%FApKV7S$*CXtIDVZ= zLTFu{UMyXduf8rJcp3v@Nqqlk9Tj_=s=`-QELL0rh2h#;Zs9Xu`VT(vp$quVfBzRl z4M=~E-s}v<*+{+AXgO(W?M6uYp2mtbK1bMy26~OoFrsy+p*D!FG@^e}bLFv>0aLNx zsN$G~TR8Qu$IzRZ~S zIzyzyC=OK%TH>sw3W=N~0Ws0$(<9NXPZJk^LgAdFVyfKQ6KHKAaJk^SK^)SY-Nc!@ zDaV9eH*x-l-py|we`gA75p1J%l3FJSX&PTKu7tu_uDkXI&VKo8_}Eu2#m&zrC&Y;M z*9fOillRG~RJ@;Um)|}w-5e0Xr|V|%0fJhbEij^39Rf?ZqF}tZol7qKGzZQV%+Jn5 zI$w<-q8Mz0Bs567C6ki=8diuEZrM7Q-9zb(XStGXlUB>97Umu-@Q zWu-Tr{z<29aLZ&A(rH!NKA~+EG(_J_v2l{?tBQ3fKlt#lu##5*03ZNKL_t&sx!dEP zjz8i+s#z$kV_x7nzxyQ4eecJyZa&gdoFv*vNIC(B4d6oEAOwQZ#y`70eMO}?a2hv_ zbUnO8hl`?!lQQ)oLg5P58l1DKXp7UYvQ)-e5dgPt77#|>^W&{0mtFKtK6>#bNbnrC zc{3;c#xb09@8kLZ*?aGBOOEo+|MOOL_c=FDkVZL@Bytd#v^28bB^4EMaQ6_S|&a~KWZhG2!#obrHMKZwR~eV z;WClr-Q*mBKcO1P{e$5e>P9T|=NKK@Pd0xNAXsa$$tY_=&DF-7wcB-TRa|^y0)_#W z=DGb-o?gdJRO-oyo(WM=N8+>fCUhn;BS8|^);MxW9FMgTHPEqQv(^DWfy3f_-A(b} zV&zUO)-D+3)}@X}+>BS`wF1KPtXzgcDDoW1bG~==jr{WmKE}KL^#gqC z%I{EmVcu?|KYt>H^>`bei!UL!QE5`!v2=A6xshNE9whjnGLs?UdD3d;*U7fjR8JGS zcUB#_2-bU6hO1n7{$03lKF|74Ip@yjaoHEXz^W86l{f8rpk2r24sO0%@}9berp1#n z4IWJ73t^(@fC#0!ppHgG;YZweN5QY$?)I>>!W+NvMJ`@lV~~ZuR68pI-L<l% z&H7m<&G)|Row>)|&I|WhHxBEfOar4djLHp6-e>=y;`MKN2d{el>o~k2ENnXoKXf2f zFc8$VyV#1In1%-=iL#+@C7V?f`P5jXFg7Y%DHek@fN_}U+tAMn)(;=x-T(MzPTV%f zLY`BV!O1yEkCLz2Zm>3-7>jHS=pWqATb}+@?r^)ibN?qiiQ!U67HXc%ROzeEEIxkx z0FO(*-(=yKBn$@}ovuLXgA0$tryJw=zRjY0o3r@+iUK2=puVHRU zsI-})2ns}1$yNJSx%T4E@-H9080#x`p0LE7Z+9*axc6PS_g&8CoU=}4ey+gP0fTz* zE;uOHBxM)pPSQE4tGqUZl^dQ0qNBG*By(nJyq`{ zy6VX+6!UYeZH&lm7T#gCiPl|Pc<~=RgS(%17V~-7HN=_#&(ua77lVoS z9N|zJ_&5f^9bBb%a6j*Q#?v|fj(6gMCq0$*opbb;dN?2H*0Lp~ljFw^?)bN3agt+_ zFo?)Ss``TCV{#OQb~LtfgR%awz#J*rN^Mra4eDq-NJsMN46_!*RZ5;mLdRVX}Cw?ZweRq;FJA^51GXdtlL)a%sAR(l}; zEuLNyee`G~)%b)s&uCcEM=3@Qw1oM2N(Z{oC!-~s*Rrx!YXW`y`98^3M6{8ftsQ2E zTJflt{3-8#<*WG4mDh0RpSwQ~dh#C@iXjgQM=CMLZ2bV5 znrSK)QI99uc-(|(U>bf&pmHV9B#5~3DBo&?y_xWteS6rp?If~ljw=qVa>#i!4{Na+ z+l8|waHNJ@3!Msj2OOGoMt##AtEGwCq$ily33(NQJ8wc~&Q~6cWy2JFb^khFIoY#! z?|!~F@C@=S<_aD&rP?8FGrYUbMm~>GMIG2os3pMmYx&>?wHP)FtDf!K7WkQmJP=Wb`Wz>a zHAZ!wq4RihzI)|v{@{=Qf)8EtDf0R4EN?%7a-$^66z4~%wWLzgn(XPR46{lLBW%g& zsXM)CiVi~TUSlF3$Hy)sWO;>A%On5C!?^I5AAwXua2B;e#mhGyBjFwQ>SCf4j38_7 z!RSCq?~vy$Pkt8X-QkX0@YH9rx^0pEQWg`9M9iU+BOFf_eyAa*$VJC2bUhY__x>Be zdB=xlt5tHXrMrX3yFz)@)!g`{FH(pnKXDg3ANb=`Hlr2LjM9_1&ZbqL)A`Ujuu+}I z4@h&qz8F3CXQ;7<7|=&|7;&jmo5s zt!vUiLpm^`rt;iPu_mFlV;lxaP0nh3c~rsi_2w8hY4yOo<(4x}=cix!I)*3Akr(qg zudI9Fg@5)|-uLM*G7^hq7L9NV(EyLg#ZcmK#wX^$H9SVf?$Wn9+LAs+)0%rpw=Yq5 zGg9JoJ%=Hvpfvn}fHz@OIVvp~xe-N?V@!tF42xpQAXiywiB=UxM_6$zEi7{WIj3{i z+nvQ-&btHWo_z*qo_Y#Pi$yrGcOjUMNs>V@SzSq%)CQ`7^>`8^H>p*T#> zx4M&Q1-j+}wA`1vGhx!iSVJP_6!H=dz5nfej1gF*T7}+r6(VbSpC2|x%f4Ii&^K89GQPZa1K(Wfv2HC$ zkr>+11m!j1zEwEV)(2)v^}89P##pbO11+4Z>E1ZOB2-cFswQqLo`v;_ldWT2GY%Nf zpa&{>J4w_rLTHD&dxEv+-F#V&4|Ig4c$Q(MJ%G?mP$=%?n0w9No0}UJ7e4u+chZ*uh3N&U*XA7K{6)b)jwcLTEoLaGa-CrC zwxl@aMEp1UWP?@8{rg~jh%Ontm~LgP>;2rq2x>gE(o`huTtDc^8^Jq=_dba}OnWVp z8R?JCBD3@RR{%ACzmUk10&SdB8V^=}ebLz^6E z^B=Tiy2c5#)9M~`2M}p=`hyxy>_$XbQ&52k73DlL6j_f2GskFsK(#(VeF$uAZV+ps z2mz)@fvVv^37`A+4SeRS-v#+Fl`C0U=(B6v3U@l^T<&__9XbC_x8uw+PvfLrOZ04$ zM+EMJS43RUOgF)4yAykRZKP&H!W{!JEXD>LaDA@2#NWsn#sJec>R~l6CixKGecmFD z>n^#3bITEVIi%1b{^~2y9d}DaWyi|wDsc6&!@`_6xfK6MCZ+t7V0`H)#AjdbZ+TLrU z3?yQ48f1h=YPoLrKEC?(?{MiCzrv+o_%heuw43$yK`dZcvTTv8XYhC`QG7YXWI|a* zo%t*nS=mTT_To_uUD(1`^veO;4~@ujIG9^jZJ(iOWpf*`2uTggCi_U5RJ^5;Rn-Qo z-n{%K$Q`Q{_AD*%wp;dKZI5bkjt!HA`4gXW&EaSir&6rGq?P7`2UFXdCs0WrllG=6 zExubm(a>3t6pwB+aF9e878%!wji#U$qY?@j!sg`pxf@g8`VFi$DKa{^xW5h;Lqhkp8w4!5JzAn+M}HG4-nJapHn> zsxe_awOhoHX8lba+chD21ob43j|y0AF-Hk1h(-lpRcu>Y##S4A;63jqa|5!h7Xx}z zTl2&<(X^~Ch0NFhfyKaJK>z05{N0m(kGtOSUflO7Pi1}kJiUcHDLh0dW&%e%-dOmN zI4(L?Cpu;cgNXdAsy^-b*laCg^-Y_;c5t?6-ecvI(B(Fp;; zZm`_>s+Gr7o!UZb+PewzIU!w3t92q04A4f7UBw)qdBbb?g$F+v>`rvKPrnd$E$2Mr zw=U#muYN1}j-64DKF8+5Xk(2m58B^OyROS5`ueR3jYb#W$(DbO;*jyD(9z*+oy|gp zO`=aoz~mZiQ2Rij3cuI01q+LF0rTub(ot67XPi1J^>GukAwe#dv6;oHV-3$0H?48a z-pjb?lFw0Go%G+L@=ZW5){f3%xMMOAqSE;)ZQv zcHtGU7HdQB?=`v#BMrH_o-0}h>WL{_>tH)3K^gNx17u`il;u-TX3v*D$AWR}+fYmq zl+oK9OlEZNlW~+pVXJ9^1?Yf@vWvD(Kt_(<>IS`GtK!qo446oMt`mihnOJbAu9MnO z2@i6lO`trs7{r(sV|r9o8S@W8#j-J~xN+|-eD8{D`T94m;tOB9oNrxuB{%Nb%gB2q z?;&Ebd7r!&WIeqqm6u4|)j+tHD92m-IyB~Tf$;7%R6wmY^hS9oK7_y5+xq%I`aMve8mE2cS{wU;S2e#q+8A)?@Q_D8<~R7#RacVFEi<>YgHjDyZeuRzz=v+6 z$AdAAQk&9k0C!eoNjf>rzxzOZ*3hjG1Y<4EyZAx|CuLF3$ZfD|+YS!wxsuOZ@?p01 z9dlVPQEc;x=S$03(C9Ml0gJ&MSSP#w8s7S>r*rqaUBG>Q=XY5@VV+{Chzp~3=8})y zW|7T7EXUgC>G&}_Hvdsf7(VR1zZy8}_z)d=k!s*A5*$JWkJyZ*(@$g161;oyxo zuyD>JKsG<$(EFTsWMoKGY?)|>1aZkZC)#hgy?80CYecMdqNYIMpa${HvF9?-%_sWm#d1 z0+o_qe&kQ_-itoMw+{vgNL4wEHS~%er61yA71;O|KI9{*xo-QnMZyr6C5)J6^EcGw zXPO|TMk{F3u2-`9w?*(+)L5J$YOS;|7HtwIkC9+TXsGel!Fxf~1ayl={|a^Z%D32E zo8!cgE%nF=B*cMteD9VuuDs=IyzdiVzzU39$-?3s+gDcDvAmtLPdkOPPd}C0opBnw zb}W)xW%t$BbEiAqj`PnyyDr&cqoXRmqOo>0mX-!FlK34bHi1-MpYilWfZA)V3=It$S=E>r|UeDfrA{Pu#}(juY6k=X$oy zXWX=5xbr>k9#maylwVFdPh!G+sS_pRBX6aiBN2Ayqq-MSjm3#_XnlhlZn}kQuD+2y z`wnv14L?hm)w_<~PdK}Q-u;_hQpU6r2Doz zWAQ$yVKsc|$SVj&b0$az#|}{AkI-~>eH(*oEF>8lrlB!S+sddXvj*oYjEPdPb%Gro zs5K#$)A4~BTd$0147Ef(Dtjvj45Iws51sE~<4q=$13aNw1~SiBdW z`sBysMjI5x93H5uia}QJlfUv9cHeY}eC1>|O2AlpCMa*!El%&l957-rQO&J!y4Qv& z*6rkU#?CkUM=WbZ4vwW%FgC;3;G+|Y0wpW+3mn*c1Mm93Z)Vq0hNTw?)9L(+Bx>(N zF~Ym>{?&$Ut0mcu`+4otp2>ahb3g9=#NTCg`x5huSy(3{7cUhwXk^Hv)U0l$7Md!Y zTd(C#HK@$QKsB5111=g>wWPlks;}dV{g_6Bbcm@v4-4xDkI!= zw{R#iCO{p;gszec)k}6Q@vzsug3JHuAE?$=x!_(GaMHsb#xRGTkDnFihpE-56e`g=Zb6Cckm#GheOuZOH9_o+CIhH zGGgbLTRH(-WQ@vT;2l&I-g}G*9Z-{K7}YHsRmHoig;zF;KSAprf*W~leD5T{pFD<< z81}3k=FpClIj}n5(*3(xFD%Y_a26kQd|L&oP8V^!%&VOWX$n%*C}Um2OX_zmT2hC5 z$P&3+X|?Rr1-qfjYyGa)62sA-M+4j~FBBR27EY?;-u7Lmg14AA2$`ug$W3(#KbO|z8b-~kX)*7P4_Zu z@LEx11-q}lg7?1d@445VZ-*7gjo`GxMs=sQ%n{66ym#0dhU5fU_wcQ&dE;}R&jTO$ z5bpNtzrn`NMds(T#AhK95sTeFQ^z$T$CH8|{_(zJi;X#!F|g`GRrOzwkI`mNTw7D8 zbOCgV$qe|C(YL1pNTlb@l7(rcx9>lV2?`LB z;>L9|<2ISN!X}K?*{tB{drt(SAt8E5gZ*S(eDQbyhn z6`c*A@!EfQKY#c3f5#Qe47H5xXV;8>`iqU{m_39giB#EW|Nupz_)RO3d zM~l(=JR-G+fsF6Q9XNg`gh@MN)A}`uH$jtFYwS$aPzmotwb@scWf}0|Hh5SVl>j-) zEV%(PLpchLzE&N^!Rq=trFt@xp;hd|dB@URkCo+lcI{Z<Kwk34J)N;U=qRu2t0yf$FZp8f2;=@zcvy_Xwz z-@r|K_i*#U{Tw*F%7KH2SRV{1M-?{95pS657l6g~a!SDVEWRp3wbX~or??6~<5XO!nrIs0r6-|K}nLrhR8vZmnxGb3`}hrIG(gkTj!HvhM|=*t`)4(``fI; zFtPu}ggc17nP9AGg-j|69r2O(zKzpXdh|1ksN%~Jt7^FCgMW_0IuBWabDpfh9(Pz1ybp_VampF^Z+#Ct8Zp?jm&J_{ zW+98}9Eq|=;=(FSN}#HM%r8^M%9N@mE~CYwFDjl;l1B*nC)_Q(m0&itUQ zVk;Aq;OUu72P@sya~f3&X+`ydF`D8CGNS!T$gjAPYyZ!iIpfzaq$(iG3alUTgvb0m z7hilSR~{I$;XGL`IPH{8TMvNxv(zUBWaE=$RvDqI+uzv?5_JClnR4-hc$T!II^5P?*-_cDB?WoJmtVMV8o~#phl?FV0(RRBwdJ?W9vZxQ{N8%mo9a(0`YzT(t=R(r3Jl|(wagiO{ z=2)8RF+bO1ar+{ROUv}<7qLYSB^YDrWf^L6de)L#OOY3i!*-VCH=XtD{`tbbWkNr_AB4Qx7uE#Oe6*=m!wuE zGsaLkAKa0nG z*A?b$Ob#us@~sGort?eE)ofg}wzF$>_#(}mCj}xmyp%xB_GC7rECzMBB@LxpP^ZZqD))s%pep?D`0GJz)dAGYo!qH>6Vu# z1Mu4{0XW)LmvnI!~Jj)Pr^4>hoAzsOQIb~T=86SKwyf%IjM!-vOp$=kR8hsxUsc6w? z=x3sXu3+l`QCh(PFA+lG0!e!46hBvlZdzr61FmT7E_4ejO;tU84`lYr6cmbm6S~z{ ze5u!O(GHo|)4K3A$+V7D>T43VZ^Kt(z`GIi)jE&4?}Iq`rUTsbu4nPhORndj3PaZq zUOUmxqJ|X-6Aiw}cX>-hF`e=I$~2#4QG=S0!1z%Jvh%*Ba-OVbsLBw~iqqzKNv&3; zfy84pB&nLN8BO;)LhvMD?J?oq@ud$&jI~;sfa-W_YWDuq@VA7dD+IoB81WPs2E$dJ z@#Npcl|!luiXuS94wWNb^|xqSQ3O9ZYwyR?Up4WabkE zB58bd@_vSnN(w6&_5A#QelSmX%rCRHvB6Tmk8@R`7#E>nH3>a(7l2>{x#1}y_nbr`W}_}|tkk~cG7S_q5S z7!uukjU>lz)%do~{DrAq@tKRrEJE@3PkJ6BA?wjsKep1%NUK3(rKLueR0w0C8nosS zgJeSHJZJRg_~8G3A^-U=|B_)p!}od=J>je~R(RZ_AHiGS`4QA+F@Uh45+}Y1B!G^j zWWABLo&kw;W;YDz-h)n&pX|8fN~c@WRy=h|7olxo%UI$ioq(rJ2I@fB)Y|2##Z$xy zH}J8@gU~d96Vs^rIMXV;*r;b@>Sq(d@y6KNuP*BMhwe`eBQsKKjmNjyww@S9BvyXG zD)bi&Xt2vOHj)Xg33}|c^EZmGBCN~@Nfqb)R84-P0W;n_BNP9v-q5{7b3VlhSW$AK zmt&UUD?v;a$>=7e2okzBwXBnB*v#3Ecq`WuC?RHi4og#CxqmAZ!d#gsOoc z`3BwxYJz)2fU^a&sTzhBCEcU!aERo*w%=0%r?hRY8Y)%P<{^M{tw%+e0IswCbUF)l z+#_8Bt?92s*YPp!!m744c})ZCF`t%M71;Xs)G0w6LevEe-)tRLbhA8;@3 zamRC6Ut1%~3!L|qzThqY^iK918n9#6622M+AA-2%nCJ{`lkU{CHhKF7cUM5Ey>28O ztmqM8S|@V#N@j)8a6l#=amwi@ZR2lW`M)`|zRL1^Fw6{c(Q!}kF7TY<{$q^b5Zth$ z@Rq$F`UG$J)0gqvPkT1YKk*Z6?3`n+s6|pj(q>|Tt0_E5%{7C~c_>FN93DT8Z7lvD zAz}D{_x?)YoZ~|_>xJoRP1hB+C>|2rXLqcSEpNlEZBVW4$L~LgIbjFRMAu1UTa%w= zP4P`2L42W$9V_H>b5O2N`)w*8$(*3u-p_9AFyFj-WfsDxZR<+s1i&F^_XCqDAgl({F%EN(dB3BU1Q z`QV2>j?q5*RtHEH5}}$-7*t6l8Q7NB(5=A95qdv5qdk+z&^8^2t&XTp2|}0z^2c)r zIm{ZzAF;emfSO=uBS~0H4Y|`s54C}ANbqZDD}Nfyi9|!yw*Gt*WjOIs$}*|aN`OZ+ z)#QjLH+7~S#LuXJQUa&JyGW3(g8B+0Vq(&Em?UbliZw`P$3lwM05A}tTWFyJ%6d+l zxQ|v2c#t@OVq$O_>dS{AN(Mq6SqeioqK5_(i-zU2G&a^e~{c1ybGpt z`y}JzHyvQObSB@rX)jl}MGh4iBXL-p1wRlUUB8SZo;s3rHfNM$^e7ka8Sk;8STR&C z2rqc!5h>ZZeTB+d_S|$cHZLek7uGdGiz&Jh5O_X5jx$a2SiiRhgL58}S%w=2IlO<- zuYC(k+gBL6Ds)e5;5`JlY|}z3n`Wv^B7apT_K2ofq9($GTAu}pie+_qFbUc|n_6ZBtj0iPguzTrWCF#&&L}O3!q|sC1J#mS&o? z*v{{3yOPb?o^r&k?nvJoAEDW|B%3!_Wpc~XM6^f}JK>ZQ+TZSM^%%`XHrw~+|%ur!=GOoYFg7H2I?ZG%s}(?;-p z8eD}>%i@H%5ZN7@c zZWF8Uw9ah}E+__SDls1SylqPlA zUbU-C-;9H4&M9?bferU3CXzdYY@}eCfZxXsQ1E~etlB1rt0g6C*pbCxRib^iChv(t zA}}Nny(cuGGlieAYRFuuq)OCJO8H7^VsKxtqMcVkJMZU|MKzh{fhS{)2N{uBK&rsc zAVA*G5XeqlyQJ1wYPI<5d4mxuZ}3YydE58C#|ysnDc*S9Rot-Hr|cPsrf80kh@}^s zcIjjWcVY7dSSFHqnc0ufMqMbVgIA1(10L{W_vByR{&&3n&40`N?tTw+ut63TdX%~o z=##Fbj1{k9G0Q}sksL%Pro#LYBW+?H3pTk8MI&Q8D}^v`*ZIUn@8Iyk18iGf!Ba-L(-!*V$5gcNplcuiy}j zjqaND0%?+VCu4?PB1aKqZ*8GImR$?owCcb4&ura+;74JRo-cAvKXI97J@Ij@9k>NdaK!Zz%%qH|m-7&~ zhKjpy+S@dyQb%|OI+;67tJ#gGSGrjfT8_}kNKcsj(V5|mjE$BgrdF-PcAHPj)OnGl z51}$Qh9hnuD78DAXiM}Ko2W=!ygqa!qy) zGOG1m_@wMG?f@2{Zb|m#1)Mch*5brcNrsagPmXAT@qx731hnGuCj4oXxFisBz4265 zDXqtu7D7~6PnmnFOsTBK0=TpWVo=+UqXLzLbClLIGL8~KO%Iqu=t1O?)b}bigfA+7 z8E=B>j@rom2$G~?G!of;^cw&Xk8ynM}%#@cq|q)93Tr=DWY0_)uU4rg-4 z_BndqlV_oOW%CTLij%Nj`-Z$*D?~{{+O8i)6YzSE6{u{+q24k#&o6MWpW~d64Kw<# zhZ!l>1rV3PcdWf8`hN|CD(Se*EQ)jq+MAV3!t*dt3D#Q*YY|=N&S&ky96rdlzU8NW z?7pn6uaQ}UF&4G;UQ=K+YZ7sZNo)Ol#S7vCr^t^+JmAOf$=|)|4|&YP{u6J0%}ba! zjx2T!)rSsS?PTvK--hlIRzun}I(i!m4xDp1t;p2lhim-))1QPJZeTGHM&~(Hjd;l` zU&qS!T_It_Vy$iFQtB~Lk85N8SpOG4w_YgBWz~);$Od>5B>AIdE5*Ci0Ym{ z#>T1JDU4uM8!?EwxRSPC)4gL_f#`Un;fHtJRx$W(l`wn^xcvCAF)Os}l7%{kK;c_f zGqfn!cKYc!Um?Q{hI?)zOI(7rsV>!|+Oe=aG7Ni*ir8(fXQ z^*=g`fZpn)M5l2Zb=sG0&11Excy~HEHUw0naYHj9P}-i&vHGPi zuT^jlj%}8ronnDBSpV@LDku;6aF6l+!XHiU zYCNE9$HvrGE!`Pjb1}8kf$N$A)>Yj`nz!~HAaHPyXk@5@`YLjbOhkE^j_H|b4davq zwh=fyq3u&AR4(#*>i4d${%a?>oV~=f=2@x^l_1@F`0&lV>GiMT^{;v<@BXJZagRIR zp3&L{ViZ>eoRxYXp=R9$K*o&IYodSM1+l@r%ZqQgOYIyQ zgG)~3Cg{v{Q^pDjGF8(osfx#S#*%UEwYxdvq;1U4_qpWKPqVnZ800^F=*nm+(@YR6 zsFUQTt5tUk17?OhoOLd%2RB&XzYjZdST8Zg4y0X~qGX}d3KwIBoj%H3iw(RbF-kRB z<)01dx2eE52F@1#Q-J0D^KF(A4As&~<82mp* z!Vr&tIX-T)ULa|!StRbC(yA4RDq=IXoqiT28Afvs-M9xvWgrh~02fFjKj|Aow_2k< zBp{Z>9Xo=GMp6M0*<3Y4dXw}lbUc7c0|DurKmC~m_0uLB+6Mcn(NP24s5Q?!iHLS*VX7{pvp{1B1WS`( zyQve#R6)kG=@76>{A0X9yuqkoG?2Qj3N}KYZ2V(lAa9b>bq#FmgvB8?c%q;Lh!u)v zN>&J^+W@Pm7@RR3y&i8Ws;s24B~?~Y39;6mqsHK^#Yb3}!Qh<>Tnmwg-y@rJ$hr}7 zAQy`cLOMkjIKCW?)64%0moWV825$9i*BLC12)o&;ApB z^T~g}C7-zrl_IEASrfZWp%9`bCUQ!vgocKo*T#;VD%NIPa>*xIa~X3dp2jz?-OYv? zMm}(9yt+myN;!fSxVGJ2QfEK~Zj z;Ys;utE0Y6h}%C&O0CIy(#$=dC?;BnkUO^)LKi@t!zoJL{&TN4tnHrhSS`uYe z#xbj_M7P7x?k7o|CPr08Y$QZSlP06+#*ow1^3fN+fP6T_4F-6i-^gD$H2WDN%a3b|Ba__J8MCfJXE$0zCNbU}9}1aq?KKD`0X{{kQRy<7+WV5)%~=|!_U6Cl-8hXBb**D0tB4FWNfTM}bdiFAr9L#z>BoQcRm^8ImPRh@zi$OEaAv(Jot78>; z9jnbxKs{Sww9qZfLK0RvaHinBAO1KW`~2rw*twI^gWA-C#>UxSJJYvwBXsM6ID=RL zW5~0NYp%YI-+IzBdCK!%$p8P0XEE~8@f#)3XcGC-t?UfR|711;@A2N@)brr`-H$up z;dDejc^(o5Tl9F#Kfaqi`$mvkur79mYOw{KSeLYsww7dWweLd5?SAYX3tgKQrj}(E zH!4v|77LK_0GD3;A+$Wqwv`1!>PYLr90#e9VU3AQwSSG`z#8v);!|P0;+J0br)-?H z3%{#}$!h3QLdH-@xC#0riZ(cY{Gej*+jPvm_n!bBbbJUmtEo;O67j)lQhh~r^>y6% zm9H{yGy1!Bv2ekCD2>#$gw_nlB!OK8k{jG`#QxX6k?+3gO)L+CzI3lQ7sy@s0CZ2H zy(5~Q&74NFjSW(hy1H^ITXcHX%_>E=#%--r<@0UpebP6G)B#(>biOzFaby2F%NK4! zW;9gkS`{4AG1L)y?K-NWY&1Av$X|)%xqx zE=MP%DLdCf>jvGqnsF_Dol-eXM}HIPUKtzp@p+Zb?P-&D{M@Nm8QN;krziLI^AKsz zUrY2xh@r@=#5Xm;N+BVe1X$YDSl1-5uGNSpQlrN9cxtNNj)T^8d_|paB4MW`54z7C zdF-QpnNv?YnaBV3vpG0WMlN_ycn{VTc<;%?fs|mPjH?&KXIL^SJZ0>-8e4)NFkIhY zVR4CJrFb=%yl8MKBCSL7IOnLDMG-RMtMK!gDC$Ps>z;S#`Wtt1;|=@pCTsi`5(L)F z%~mIRmD2S#(JAYUGt?5=OMK&%?2F0&hK_)?;(mU@h} zL74}Wh!)iK_25_Hqf!!yH-M@S3R*67M+fByC(3+(4$CL4EFJv5BxJHZR=wsXRcS^%5?@}xXT6qozkq}j3QZ+aZW-sYsqNwFtb11 z$qqWeR}l&7S45wMUJo5r2qnvf#Z(9R$ot>RTwbw#X#wkf@Y)vQOsL-}8@nI`_||~| z_U4;;(=&dbGfz8#hdl4Otnb)KwwMRm<=Fm|X^Y#Yq`zCS`5r%RtK*Z#moCMk z=AFmKZ%fZno)5{1BM|6VwJ7*W^3FSm=ZA@$@^f%#KTVNjK!l9C#T z8Pkag6}=79$VpOg3c=v}U2=5mIk4)KHtQyt$+SL$Zngm+9a3%AOk1W`pe2!8RgFC- zZSeHYd%Ovn`e*j%_|zNz2EKPSx;6;LTqb8Y9Pqz>|JOOO5atPLHXaT7^pZ$&Cg^)Q z*EQuCju9|s5t*k!iS$UxpB`Z-HyP6j6(zb*ZJAP1)RZ}`lbxi^D4sGNcF5-XSx3|P zn)Zrx^+%Y1Dz(?46G}GIo{5YAvp$PZBP@7FLEs%>!fys4scD4#D1F@HdgoX8^8KU-uI3- zvu(cL@W8y+hO?qGW@{(aQNg<)*$M_nj@o%X{iSbk{hq@(lOs{(Ea=sn1`;>^2wK&8 zo!|#(r^cTKx@p427@2kpK)~_;6&u3wwGx>TY~I6T>CG=N*I&Z<45t$1ffI>kNXCV!k`0+!EC2!N1+uX+2e>`E> zv__e#9Zf@!#>J+ev+bO-82S=lRvg^Dn+!vx0m~{AS`bN4VU&f_PiLeGVxv-0tWwSj z@APQzV=Ldgb$}*0%J56%*j&4eg^4m#1xcpVoTmjG(~>3ad``XDi4b+?WA0Eze0&~o z*sKpYU2@*>{NJZH$Z&^Cyejj(0){1j_wpAZYd5iD+cLfi)m&q3l;myo&FikoM1^du zb>1No>lDQQM4mYtk|VPoe@C2a{DiYZ^GPQO-P+WgvW0JrXR*oGGA-3S`l+Z#_47%G zY-TBWS{LPL^O~`cbmsMLF`*O!j3^80FO~O@6_l0X($8JS_FX4%c-8au?|d&P;aE@U ztDq_+B_bYgmC71Qaw^HGjNpu6WGd8pvcgc6hxwTYU%=BIe<61|?GzsIU;Yal>jSK0 zje<=b&^A00oh1F%*KLfUsvJgya#RIHBuq#S6soF31Y8w5K0a37r;&<}II|KiP6Ho| z|JEvcjjup*6w95V1vz!!24yT!RGBbutcmC88zc!S!_z{Af~P=`kM>E2urYv33GAKM z-z2J2^<0kxcCBRyqIIC8)u1V|;L%tSuMN4{#?Lkuwk;R@-jjcajrAe@-aLi1Fs#_U z=OBOc`hQ~kj_nLb8|1ld#X}M~(OE#u2C67s_^(kDv1O+Df8zxky-%X2+o&S&AArg;KZLc5F5(SO{4E~!xL@H87yefUr!JGt z*PVs%JZnX@CY4p4;hH1pt#Va5e*6HA|F{W*h+K6%Y1qOJEmOAT#N0)#uyE!sMnz7M z^*M0$wJ;pgc%do{zPYJXMn_14fs;;vUeR

h3}f?U;t!oz>i)rLDj9y5$(mWa^@H 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 diff --git a/docs/assets/images/normal_computing.jpg b/docs/assets/images/normal_computing.jpg deleted file mode 100644 index a71483a68ebea1b02a8b3b167fa0efe57b498f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64918 zcmeFa1z1(v*EhOpknS!erMtUBx}_ULy1PSCKtj4xMM031?k)*wq&pN4;jRsyb3Etx ze?PzbzR$hibFb6=?7j9_GsgVQF@9srmeTNkK+HyW1Qw^56f80I&eCX z{QoEW{h=?I3QCPFU@;_K|6YtAVEM`6@5T5DC_feb_Kcsx@^9g9n)){;KbQQbsh{KW zZ|QHE`Zp#&m;9!wpX2f`>2I3)7bO2d@SCRo12F#*|E8&bLGm92ziH|}0P|1rZ<_ii zBLC_8Z<_i~$oy0Oo2LGW$bb6&o2LE~GXIeOf0w3E6`#+2!Fl5XDTSCkC(PqB4wZQL zv1;6R(LD*k0E$YWk~e!!_?h0PFG?uN=V`%_rbu4E2||6Bt<=45qf$5_(+r*SW^Oz4 zB+HvAT!jugA|Lnp&b#!t&Ia^Qj32%&_Z>Gpqz9UyDtIXjB(wk>2}pu_GjIX@@S$^b z>WkZ??rfX)(o8tZe{2Fg3_iICc-bm=}*oxkJPVmPKV&$^gHE@AYq!a$E8sM*7@ zueIL&Td?yM-)r1odc7S!cW_JwJ}>0+mE-h%bl+aKO%U)#^qzE*X#G{ri)dnd@M+J> zhU*oicPyAJW;voz(Pv&O(tGYy!K&1TpBRW?vW4W5Hc)lo^ z0vDF6t-UPX&B61kq4AVr*kY!hpdG&hfgad=5szVf@eX5aXdQyr~{-P9&`QZa{@!dFXF@$)j)*iMb%!>!$AciAlRa6 zUytctgcMu5VJMPjpaEoO-CLi$97*H~VaTMH^qwmj?#NEy6C~?tW$s-GMZ%~$!Wu~i zVeOfErdY_v|?=IrT@M2tn7R<~xQmbS@dm0$j^g(0XB&Kfq<<4v2;)jGa!v?rjg?0gMkX|2A5|CSBR9n(JP zbGK{k=18uPkc*8?akWmXFU(LLYsMW323@VwF5Uxzb$_5{DKITw>TsZo5SX4@cN zw?~fE-Bz~pl+CD+Qy*b#^u(Oc-?YHQ&ol@0hZHVGcZvf=TEf0edW-l7xA?`fn07wc4`82 zWqF*`YF5_ET`ze)_n8EFL!?#tf8~&xa6kHV3UWC9b`5 zjfO(d+@C@Zqjf+a*%jvPtXBL=~={7%po;kh8C5rM4M%2K?HnTv?Orz&pV8 zfzj+H!7gSg9TyAE3ld6TxS5WzM&rJ*^E1yeJ(V=U*MkkRCv$`zGE2}glt0?2;1!pj zj_oUt(ety8bY)MeqJjPk$cr4C=(v{wf+>@(=A4e6V2%O-{PW+%RDVh*Il}vlr>0|H zT*fA7Y>4_*jug_e|5%+xnxSq5vVaok&ly6aSO=#CulYdp@7WN1E7>D{$EzmH!RTE< zcZSP6Hh!~Qm=*G8Ti2jD6N}BuOSV@k>w_;oy>suH=I0ff+?_`^({Yzt~S-n6HoIhIXsHbujrrwB7tD6Bwt-NCI#It@|W!BSA5LIWZF1GMI3Az5jatBcBze%zPXMTJh=}v;dFi)Kw z!$kYaAB(E{XwHz5P&g(SfAIKF(b@c0V1Rm_L$$<{C4$PAdTJ2vdi+ue6YcWr zyGNOS5e`#UPOp&QH3*Jw<7M(%q@o|y9A+splwaGr-~C2k1+zl@T=(r9GI&Ovt6oj)q3nqZ9};u1W; z_9`lo4##EwZ`&#+1LnE~YmCKkvw}$FO6k$~=Pt=`l9fm4n-k+Fw%-iNXZ|vrA8hqv zYw+Qgl}q+BJ*%&wA72av}m}z@G%@38Yu8d{kycz2U zY&nTNSEgYHhzXdZyGq5BF3#6{KrB@-$6|I~9yP@qDw%dNnVQE_*w-M|D-yt&5C@|g zz8rCl@MeyG9#Cx0^dg!CBEb*kXZdiAHJzIs>lpDJ9V#8_!9g>kp&Wl${n)j}GB>82 ztgOn-SfT78*7k*QRNg&;_38mdn=gbpaI%4L9HI|eodg3(+&nLmpLv$*SyF1Me+$Ul zP8ExB*|{AQ)j;JKPVpv$G*oQsIh8yeYzT0ee)}wKI4^VxT!$U`>dgnT_j3@9borw?U^Wz4?#(ksBl_?n7R^W&$Hx79H(n8`l+8zdGf$h`U% z@hn8s>R2JBojJ%3svJ&p9i%eR5v%L;3gV?Z2qK}VZ&^9g{$& zpv$MX)|FRP&f%NGpg$9=b=9LT$(}_UV>7)MJDGlbJbI_c{TFz*y%RD?jJlc5giEj7 ze`p;wHa;ATnDSRTb+~loq#skGSQ}85H@0U;EOgq}R(f>g{py7t*SXvbVXgjIM!+7& zV_oO4!OUcu@{3mDeE#mA2FXt~Dso@L#+ZiYpP{dwzRpx{YqV^bJ@Z(woV~be0eiPj zmcSJDC1Q%z7Q`e}*|9(EUnu}wgERHwQntAb{waTjP4n zz%pErYnJQ1v!;9l)qIua3jxDXH`{0=0qa+^jIY+Gk{-)Ve3Gbe2_!KoIj$JW{4;Xt zslEJCli?W?LV@Bs$#~x_!vopLA3PjHYGi5iktcW-IRgSP{SG!p7~L>k=93zBqA`Sq zBF6@@PP%;3lKa3uU`pN~t%&}ld@DG7q5Cr1?wg&aSbCS>-cQZ9*%@a}Qs3u}@Z%e|AZCC#blK5oDh_uc!LHAD*d!R>G`_8 znC>D--`Q;a{nMt1@y|uo*1i%1len!3ydxUQzL-dPvm9x1lj?xwF!jn0>phZE zHdIDfM+9A+Xx4m?fTTvTfXBG+X?v~s%yS$oa1u0I!tJBdN3BlT5 zu8!vYVKn^%$|!n$GoYJBY1S9id@0#*IQG`5)2^HJXqH2u@}q4q@qPHe287km{L~jC zg)x9>?U(*~g6IQI3!KAP^5DyuJ?gRab=PC(hj`*|KyX?puLeN{WsxNB*7c!u4?t6O zyj5@3RfGH}I#kb|*_Pr)a31C0{P;SSn&%Wj)oI{wn@D80y@~@u2ZYB+a^{uf1-0r- z=5)zf!jMUt@6F8qd}9c>U!!5%_kIo3%;Pw|c zGP2U@IDMGN=K8w^1t`m{Hjm$aP}Woan%115^r!PLQr2lcV<;h_(|SH8X~cbRjm8!Awfg^{&RwlP)G0Db)xp#GMe`gq5b4!qpaQ_O^Q`Jh$= zL>fYSAd~qStdPDCS;U5uuC`f2ACHH}QDUmohA$6CF6#IYo;+5`DQ|3Ie0;_)145}F zHb{q%)5H;Q7;J#8U1T+x_pz#LERtJaO1C@_Jk34+zE^@Cl5-4`=zY19t7nzBkJqsG zNvfu!{{qDN-`hkbMI=QWSEfp_Z5RS@Fw`Y5y=&A6dA>0MCFni>G|uGDw8`JJ(;BdYFcUBXk=dsznJtoB_-#Rri+UFl~YbRma*-!m{ba%<~xqiBwJJWJ61Ag)<%yDrJ zB54M?0?IFkD!BJkx&-UDplzYeNd6$kRR^`HD)X%XYt7?D(@38i=_|?)4t# z2eM8-Aw`{Li1Vd_(}Af{QRH^OVnB?1oNp>UvFv9dQJ-I^K3|#<<#GoUL7x1&=9`kH zhCsx@;QWENj=gw&&i`lo3J}b+%+6ObXX%ZR=EyZU@1j;0klGAsm6CE zOuwKytko-&M;js&`-6ZBV4iu;UI<)1bkU|bu$gmG?}~l~3UCH??oNVL&UJ4TinL3+ zH4ZYbLC}cVCWau0QPpvh1>P+4D-DOHs*TrR=`aXl@=nii-gIfV$Ol5nS9fMeD61dX zIea0w25HE=MdZ*%ed244LtMcDY@&c7peNRwq#MJ~TOQBNX`>(IS>#8NXQ&57lAM8W zxVtvD)x%h6UPk_(UisEe%)_?i>)_P}m!Di5xjpg2JIR768}Hhoc*;Oful9{8yX)a=o8infT?lzgY1n@#Pm={&KaSqy@j+_7^MuUW{J^>SsCHuQvVFdcPOr zSCRVd8NZ6uZ<_j5q<+VYUqtFRP5mNJzhlO)0tNa_Q@;w;Z<_i=q<+)XF9P+OrhXNu z-!%2hNd2a%Uxey6P5mNJziH}Mf%<=rrow-?_2-wh`^Adjln{8@oEZ&xZXN~>8vI=O z?L+6#kRae`b1YaiGG4TqY7H%s8|k zXsD|HKKKp7kCrg^r0>HZ;_ui0HUbw+E?P}^)CC4uJoW0Np;{Bv2S?81S z5DxMO(yA(0KRaOSib+2ykW>FhjUlJeYf$UcaMd4l0Y~oq8mQg(J=`svvLQLHVT8$_oSk zE*)$CH~ikvkScBYIyR|FrTGpyBveMJU6vX2dWkD|=4T}A+*To|*adSI-IDtmPi#17 zr$4(Hc^^;wIZVW!(;NrPVnW)z&nZ+7FSDB|J_S)>@t@|PtN3I(OJehMr167Kk@=k+HA&h-(m(oXttY* zK26%`IdP$ra7N!sW#%V7gnJ^4=!+7Nj1s9A%q}@~!*iClRa`oRFOVlgx5ap5d_@Aq zIHBFqVWXc&?J@%QHV`b!4@BZ1sda_;(PHdVa~3{m4;JXq7ql)P{RFanVdz*-5NT*mb9vc zbzvo5wtl}=IWIJb0fHq}R%Ic|2?2d^22UA($T7qJwGlq_YhyT4;?xVKR2x>KBsD6M z;WUK6v~XKGaa>(`6(K8^9Ktsy+O1we^ICf}W;~m|kJAX3a0g`yAqs-j(_8=yWkU;K zH*@REc4;)_d(Y427Awp5TF=+Zu4GTI%2;x@rKww=t9i9h4mr(vFWwn>vwCA}PqZLo z$!TRV1Fd+3ALFoVZTBS)nE2;J1nSabT6x6~?|EfC>Hmh?UyUE{(VJL~ZdAz5T`_To z3ZJy9&Qr)6HZeig72#kmsFG;CWEo{ivS|eKBW?NcH3+_Lbg$CPL_N*>+y`S4-RI3K z9o;H)n3b-9%6i20%va}hA1=x}BV$O4<;pMH>QSN3P}*%uZopb{$}H-Gw7Z@(D{T%V13|(j z6w`3q^ADX*QkZkw)hweK1LU!R%hdpahj3TOo9UD;4Vzdn{XOiX-Nc!-!jA=`-o z>y-I)_Z;kERmnAIB2;RZDXV2yo?swhgyfW`*TJMg#c>tNRTO|{7C#_J$?S8oOG;v+ zH33v8$yX7=I-gPaxoMwchfU9t*U`4om+g9frCl@4=WuqXp2y`(KBqKrPA*d}r8 zXdUy253zh3aA{UyF7NHhB69THCiX|=AAJLv>X>ARjODf#xaPqU5rUws&b3PW%66AnOrZN&4h; zDE#o^2w(zr5wd_?z5|^FMplQACHkt&NTz+)wvk|R0(D+ zR*mW6?|Q7ooF^~F$@3{Q>wtL2Vx)GNBVY({R2+D%`;9|6XjU-xbtJaajoaPIS?sMUirtm?T2eF_9~iSC!6shGL& z-M_!>EJdh_CH5Ove72^Wl5x-BJvP4wnNWy66mbJK@qtS#+M$eWdj5iC=SFM-v9 zE;8i#roi#5u-vb5b-mA!)m#y#IpCJ#(C1;#D#i$~w5)?L@Bht`g-o6dk%kUK43`5Q z5@`0m32rWML zJbS{(I1YK9^BCSfPhem5a7J%ZJ&mvs`BNA8yVs%i5g*lJm6&T}@82wWXlhw>0@?8x z!~R1@X!!5|x)FNdjTwDu{(7Jz@|G)%<&Wk%G~XeIQmXawwilh!6z4q<$azuOG3N{&Gr zGA%ri72X)P6DPbdHmpK8Pxcia8`npazXn}S(GQJeST#jWe_y{wCZsSdj?YoH@9?1g zk0PAXlMR@u${Ql(>U!dk7r3CupXa@y-xL^O@@mpG+{Y?UMV5;APo^sN91E?H_G?%3NfpFFh!b|i-5cAd&O_P)+yI0!!GTx z1|K+x3B*@1L1wq8ia+aHuJYpKP3bW*GLyb#KbYs#S4^=8EQ{@;IpR$N(MR>`;$sjA zfW@++*Mk;VsS@c^@ri>Dbd;O06D(YDhXf3cG+&)+N8@I_?he2==|D@wg*=iHQG)k> zou@~qDc=SpU4g2Y^^8sTiE%JLp1ePtey1m~Sf$Jx({dYZ!lm$GLaR)3g85Zdy*_^8 zwWD;VHvO&+2znIv>OcqLE42X~NebaEg23p}W5#VVEmVr&g6;?F{tJc%VLs=9vD1FnD7u&~ydy6}oDndK3f;-% zy>si{y%B6cf#D4?tiho44^avcDyI zMkLFi4y<4tfn#Os)~?&ckJCG|CpinT0ejLBS2=lx)f284u+s>`@f=?{X)ax)$bZ_1 zk{LZKS%+BHVe5u;TB8bZN z&ZNOIB8uWJu4Wq_1hw}ra7IlsUvMf*!_VhFkRU64#^vMd?Y6A!jx zeZD{Pvkc++{8}p=17vs88(NJS#GIwtjCv}Cxq@hvJr*nrE`Jr$vk)=T9n(;m{*Sj6Y?2u1#u_~@E6EM0s2NLSelLdev6gCuDvZ*lIIG9d=-}oLsl2K->H3wgts$_7M>9nA6N`}+7ct? zgo=oPNCGVARLkL{7;$6Gm?kb9yC8GMvtp%mjLoXy19c(95ddhdCWEcS0dz*i1YtWW|M>?H;Z@8g zsArU_ntii9*<61}8=ga9$9Byx~!;u3^h;A7bK4Kyf zRX(jYNz_F8N3$nYXwrn-4@FQwK+ixQ9_+B{`NUSO5R6FgZ$`V7-DeA@rc&p)29fOF zNF%FgV>mVc=me4`az@I#Y0so~_2uLUpGz=OhI*T#}HW@h^yNHUR!)s>N0Ia(? z_k=}_aF$>x#FR{)j@(>;1};D>hj8x7biIb!{`jk5{Y2zm;n^{@7Fl|#b*#BE3wdy8 zlaj?uNVZp-%%2*G(qZ;|gZ4GwMpa*#B1pxoFBr8`)XKqOu__%t?3iS}vM}#&hH*goR${I5aM- zDR?=$p$b(aHfl9(*~PL3HmFIFxwBjK(FkT|u}Y{?*ej*u&pDQ-(CFa~1bjt}$f;zq zYF`k{5UM^*XT?=LO{(<=alj@@;;6SV2)QM(i02vh-uY_yjpvH}Zd%VLi0QPZgs~D5 zgg94ia_QyNce0Q#!dRVd)+Z6>k+f-8kW|LEGB_*IOj<^qkGxeYWiy82+_JFyiP@$6 z1f12P_z;~+15?i(o^3J36H&rY$u+*K^3H7Qg>90}jXNBR-UFU;b(&3h=kcvVZ>!^r zs<%fXy6&?h2O~t$7R#Wbv9g4=;2hK{wZcbX5`Qe5F-mN27T=gDaSzfqWGWG-)^Bzp7%y@MXU}%unxv8oD+!3jqKb~fbV{^` zhe;cwB-aRpD3OVSt;QPEsr12<2CG4bx1bDyIg!nkDxozy-Z=Zf1W%qvjM}t>O6|b1 zPTO|n+oO2dI~Gu3u=0zJ0c|mfc5dehnIALShIRw@HJIwsR{GPC;}1lxKA}0o1;24W zFoJ-nFuUXPGE?RiGTfglA@o89io`ycHXEwl<>EdXiZc1THziLjFi;VMHL6185IVRL zdZ8-0e7I*)(=pgxmgxC)9EaDAbvY@}=#UHU+S*jag3;KYP(OpJoN zmtz`ZP%5di%9IiFx$T8wY_J=n@+&heY$R$f99r=*iHKsSA~#131ql)oCp6g1GjcTyK{#WFteoHU^$VU*umLHj=`2Zr}t;+Ly-=F?@b&upv5;Bc#s8sTIj6il0s7I^|OaV+f z-mXZ9u<&MBc22WhrgP9XnOlOt&Vj;Jy0_pFQcjRb4>i`jA~jxIU7{=unA?N^LhLyQ zI9jpK;@FY(_1l5sx|B}V&?=Wmazs6Y6$@9#P^$ee`n;&%6~PoU*Y7tD2%^w-4xxl$ zS)$?V5NDM*rQiQX+^AX}OQ7|LP z)j#^ZaD=GTVtX?Ye?MiT^NU|9&u-60{;Mg*Q{%5CP5eEi9?o}TT*j)J7UPhgx8w|E zDLu>c!xywco$`Kwoa!ZaCE_7yhDu0+urL-I`%y+r>?%J2Sdg*MM5F^@99mG*@aT>I zJ||@Toai#&2HDc7X;`q+N5Dl#ge}h4M=^N7UbaGYR z>Q{KHyWT;GXPypiGffH*G%O4r5UmamR*%BOL{@W+IHFS!2B-bgcT*4tyZliP`1so< z#kAX0u}zX^==brog?uY4EaDmEt4>Hc;dTV6Li-!@FZZ=EF@!mhvj?{(0ZWfE<_;w_ z%*IRA|A4usco~{18)HN~ccCvvVABk#f?p_F6}?F^MXPc=7)tf~F>6N(Jw$c4 z>5?7=iT=U;rSd@$%!$bI`KEXpeG>Lh{WAooE2T0~CqgJTw5R=HFV(>g3zWiY+;30;G_7K) z-F?*UUn^V6HLADH2I;4>xl*i@O(}_U_e>DJmjx8Zs#V-c04>4{T|Yuen}pV=FuTlQp|t`I5Zo~cKyKr zB(nN>^0o<=;x&yJX{~rv5q-pRC#~Mmo*0k$)J+wo>cOAQ$L2N`6W`%K6`XV5lt1Yv zgnW35^SzKEg{*C}BM~_=PO!Y6U<}A@0#>-^_m4Mg zcMzudJ#*a3Fr<64jnO!&A9<{r=ERcOqf=*-LE<3ti{ji5M8FxgnLO^EezE@aDI&ZQ zF?F#q-8Nc(QNcH%j4X+tIYu_#_*<3v?N8*ryRVwvIgf)ZmMG^zIz-yxdUWJ(U$@kfPgiTZCe ziYCE4kgiLqC<;J>phNQ)4G@z8`r!n0w7}|r4nw}5Ft2w{1^Mywc@IM11Y1xemaNEo zfHLt7X%mnQ!3sy9c+v#;M=7I&&=b`$OJih>EWva9V?LD+hwgnJGx~ck;O@bv2RktG zMbkjQYF(1$i!=}fdS^G|=#3ivAF&Vmb1xBzTV;pI>rc_W!gu#jC*5$NfgGZ8N)JZ)Z`hc6v=7 zil^vRe6BazB^JhfV+(8zij}N4xkfi@M%i^@2uEGGxO{AKQe~2m#Ek#o8&T!dRw!o8p#`LV+{l79T>7qiY6;CjSUZIoDmkl zcEL+@qHb>VB0XfT>A5p?k4X081GOAMo$%<5?kz|V7?`+?BhT@n`E^XVy&ZR} zqN`#!aF9F2-V~j z7J8g(&RQuL&%Y=}s;{~X+tf{Ew6-0-HE(;nbgq4=xUu2%*0rrbspORNt~l1(Czb+W z4vm{^ER8xNOLdzXeT(yrLKP!Y{?*hz@*Y-k0Z%#GV=-MFaoV~1%lVqB%cpG{_C(`O^`-5g=tTQlmTCFGX<~!!$s7cA3a` zJX#5euq#x=QHF69y@B>7h?h!X(nC z(F=o&s@wSnA96hclvc6T=y;8CjN4YMSbGTGd-(|ca*Zz`dB|}N)HTq z#lmi>gAfU!iFLz+jRTw#Io{p(Wz|C|L(|R{dFIQf# zQ+}hYdo%yzV0~0-Bd*xX&n?m1-*MU5ty1wCpD(mXT5Y9Q7&e z1b&J{YPa6(ERy$A3k3ATrLGn0^+RCwCahQWdQR#SHr=R4@v@9K^Yq^MXNVM;uHmHc z;sXt4(%#hBF2OQ9sF-?dAy);AQzaa!QMgWunEh$kaf8R1sJN<1L5xL+T$xE&xBc2>s%}Tm zm9ZXIFXAQ25kt6L#K<4EJ~*p~yM|NV-=YL-sy#a&v z;Bh9AA^?3g!3%0{(hDnIE`=RBKjdn{TYAK0nSfiq>Ds{7RBiv1fca0Gd1P{wDm;{d zvLJE4wt=w8pI^1)ot^!tt9;uv=)@nYx$+|cMG+rMLT)UCjl#u7s%15WJ1lq}Cq{G2 zn9qq93&)VBHJrKh^d-++&j&2(pf8bJRk>bHxg1=UFOh}ZE=3)R9vov(vPfU{s<`_# zs5Fd^&n^g6b<3I02UO~^-c}{r%PyF0?bR2R!496thcH0~Ejhq(0nVZ}b2&swmaJ=t z-mIZBo=W!dB~VD3sW+?i7GjFNjQyq-#VfnbHpB6d@RFf?>Zq>&Gw_PJNL3$r(9XUW z6fkoXZ63TM!uP01Ij2HXJ9EMfj+9`7pUY*^qRP4=Jgw6Hk0#pMuRjqCh!155n0x7& zd#NMUNu*+aa!K6o+Z!Sof4vMvR@7 z#8eLrbHCr+3@ZdFr0#SjQKISo_WnLjf!^|XS%c0qw@8(jht}%z46^kdzfb)}T-9$jiu{qvulns|^WSU>5!MoKaSv zG-tJHHiv@;djtLw@e?ckJnAF7&c~A<^4Fja*+!Omp6KSf;NvqsWfc$P^31$!=4a#W z-5((srqWQ_Un4Y!s~61qoM*@9V;LjbaWAgi>YGKzV^4Xe(?L6!?v4UU!ztN|Sl*$E zp+$Z?;SG9yd&02kCnQK1>_oG3M*Y1XzfpdEP}_ug((QfBSlvj?T*4#WOZ>4zm!f~i zxN41f%j+05+`=oiUfgm?EZdZm#HiZPt8(jh(orogqj;lUS~*(bS-jhiMveSlI*D9^ z5PICQt>}sC@MsC(Sf8#@T52Sn*@c9O3!RLr z-`4eRXKHHy5|71Mbv@p83T!lBr9L-%GVvNm=92o zIM9h8UL7Rs1GhAcLiD<|LDY zcX979zvuonNItpD-BCW<@?(#8L?UGX5d$x)Vztj~21c(9TEh|%@se~hR)$E0yAE@` zDj&>ggnP!8*ZPOnSTVG!!zQ5?eO-mG_6^x*ffluT7fxS)SiBVjXvI-k`LOZ|9S8I% zX0Opyv1-U&W2JJ5#80ZuiduubGbbqq+v!~c2LW+B_g>O-Z6y?2F$A?V#d|+QFjw(B z#(1Z#XdXRqaAw#n6qj0&5QQffR!IuWNV0K=A6C~2cM-;MGG8LFdur;*=RgYE3!E%^*J1FGRQR$ctlD0GZX4uBk~rgM3T%B#)?@Jki`qm5t1(v;y!@#H zLDBO?O+G07>oha&3#2PlSJc!sgQ(%u&SraKS+mRn)2FC!2|Z@Fr3koA5Fs#6V11}thkaNc9n0W@vWI%@?#Y0UypLmrbXm5tL zI(jeR!V1aGB^dP-#o1l~$1FMimC2n9Ml%F_g=f6-PXRzOIcOC2>AtjwWXir#^rl=~ zZS372%V@z&5(^k1VMalra^+XV9K>>7jr9dw=X{lq|7p||nbu`EkwT^mJt^KDY!(dG zk94`FLyuEPb}qtZq8oNk^P*Q`UO$;5@}oNWbT7f;9Cd&XAC-DX1MHGu%{$1_E8Ir8 zCv1cm7r&_j_r@0R?1%5!#%&v(_ax%^KA!6F=$*U@4?|9Za35t*iDAweL46a; zWUS&>3=f&98`;MM=*++Dsu_E?{pFpKfq@>b8g(s$r44N-lWqZxZh4jAq_e?r;$JRPt%RP0kcJGh`j=KS>t z{AY&eg@O;hab?22Bu#Z?ojZ#fyCu*FlnW_ZjT9M0a=e7EYX%VBHTp_1XsMa8=-+j8 z^fGcO1FIJ>c9pC8J_2=wSH7I&t{H+j{F2pJyicX2edg1rftUbo!W28I#`C?49BL7C z&jzb_7HXlbcR@y{)-2oST{14SVgM(=!sH&Z0{AgK&s-(cT$a*T<(iD9D&c2WbU}*^ zLdpx_VaQOM4V`>^YyeGC;a;ra+V+q3dgW-K(ymFbS^DIfX&D*lu!cD+-dL!q`tESXztXH>#&#t+UVj_O4r$V~aQk%T<{e3HEshTFhli(Zc( zgO)qS=)0Y^ehDU4-iNmbI{~|E92IT%0v552kl~_ED!TiMY(D_tCI@et6Gw?c7(v}0j5nE#F8K2I7uPI; z+C@vKJQDfV2Y+z&T)1n{1KWH$stvox%v;DKY%KQJU@I&9{K4DN)92|c(**0yw5(gU>DJNH5WZf z6&3AsEEzTJX9^+7BsUCNikM&C8-vO}CG!vlq8)dbxyL{uXi?$d3_k9hEgQH;E+xVc zwS8|W;3t{}E%l^|y$&2UgTwRBD`Y901ahjo-{F)V6>ge_i{)^9wMOpvGS>*;A8)wD zhjA|kx;55T>6{#~YisX({1{?uD_X-v{xFSlCf315L5-nfZS){H;9d#$>;^Tdb|z}6 zV-||c~)W#pp;u>@@@rks%QK0yn*zsT}rQ_~) z#CO!2qmAG{5KT;9iDHqi?*Q}QiF&1hY4!At`XTC}4KAs)do@N>{@QKq?jF~z-RDC&9VXtv7@C9Qi%nh zh{xRvj7d`7>!)0%mPuqa0LaTw8MD5ZuX47%w=o{yk!%U3MhaWW=XY+-#7do8=EPH4bdEHP2u3B{pvF#3 z214SiaC4W~_u@>r*`|@OrtiQ6g@DM=wd|ms$MHj=7fyN&(rKs^qB^(@iTyxGr!?WZwVg$OvvE!cTr|Dj72l~jE@m_Q!j zO}_yIlKToOM^e64fS+5^4}PJm7e^(DSdG(hl7Y2I6)M&{cwI#C)x5eN)zwFAS90F< zVg%|Mw5^$B#*}ds-{ZSyCR~I{rAph@GuF9!4PxRp*iO+cD`Bj7bFb5S);pNlS6#D+SA z_kb-&h^-%tN9%zlcv}#1cnyj>gV%4k($@lP0-T5#tyBi)uo z^nXV?fr)lr=CeQWD*-R`;iAVf-_mt&~$|6_ckR4U;H2<(enGQXNbf*Q(cwD?(p3 zfMLsDLPSD6?Wgrj9W^s;6z|3OZfVI0`91xyh-!m}h(=N{n8izk(6{m2WgVKgZ65b! z71Wcq7;rcO+#Jn4V$=*NY%^6<3v2(7!a=}mvIGbah+3;f6mB;vq6IPca-!JO+}T9H z%TbNej{X;H>F3l%l-_AZ=j&px{hBBQM_9|P#Ji%eYQqoI754Ee+Kyj_vM;M=cy}=B zIVSel@0qsHnl)|or~RSV=vUK)Cs+cPW1nt<&sA--H@0dXUPbenAFJCT)HzKiMGwZ=pMxqYdN^j|I?uvuL?6fMwI=f2-`=W3#T9VngQ3K z)3QDu8pFIk1xjJ1a>K!n58^8_JIm)%=|xV~*PwK}(|&1Rc107IJUs4p44gJM@sfHz zwjoVsd(TuQR&A@6ZyEq!y}&!Zpr|MGX065pdu4 z#2YB$-dCMx4jy!Xz2Q!87QQiR*Yx9>8Hg@ZAvA?;QrGm(9}`T!Z`MbHVU3s(K*Su2 z!q09Ys#;OpY(mVBFGS5ur*47*P>x;I&rlqv92)^{s1TzaNi}HLyW9;>>K@Bj3 z9!E3eBrtHsr3?OKYc|-m8z2?d;(AGg_SWG`(idxB*AoLW5@yK=Es}h&VT`oO|7Z~q z%dlt4r~6`V$s}{>bxVr2J%z@xSsv#&s^b5Hv@{5(V;wBw8H(K;T4=C$v`D-ph}^ss z|Ebv@{8}+lY+6(t8uaGwlyj5P_(85ZG&$AW&Z9KOaqk5E_NL*?xDXv=ly)Wrx!`ww zbRy@cH5kbE$Jt+z?`Jyj{%N1`T5Wm!a;(HnBqHk>lJ%Mk-uk~SZ`SsbKN)U{4pU?Y z8&A}BG4sV|Ov*?~eKIl?N~X}l5jCBRqfh@2_VqtCygzT;Xc=@SOAqE>68Nk7xF(hq zc>P-0JUM*!%;;Zib-aT}m4z;ewXm&VzMQ`})u=9fLAh%78}T zvYQdc0w$@*$-^8X;@YJ=-k~1uA@%SQDd!_?)#e+r{|X?iosEy>|?Up2YPlD z2h#q+U-R2S3ezUX+2QtFoqdm=@qT7xpZ_UBri2Z3Y8I^P1Kr1$gboH+P4#iF+;ViC z&un-Hwn1_w`#&qqs!@Usd2THd4v~`HpKahd7vs!-bSKd3e~MBgN@D4wKcf5g=RUw5 z9B#8qCyUN?Ncl<&N0rgGWW)2)$s@tLy} z9C2(7auGj~)=Ay5HGV16EZDb4ZO}Z@x&3cXfH~R6NiO?5a>^uQjXOJew2v1ynZ+<{ z@~>CfHynIBp$u|a)MtnB-2Fd^8a`c5+WN%QV{&5j*zY0kUx)Woz@ObjjwTTzB?W(SJ9;q% zd^Lp@;4W&}K%p_JCSLa5VQKY42<)cu?4J_|scm_2)YkY2V$wh39NmvjrWn-T-T|UZ8-ZWrU1iTwOO5^G zx!KE?;!xL)D}7mMVhchbG_ULjE_{a9tX|2bXgn9qpKh`Ig#I)G@;&%cMCQCxAZJT_ zjFcbE=SDb;?!Ee5*Ie5KRYl;T?Bow1?goXQ*=4eshI)--6019%hJkI9Xrq#7Ug{b? z#6_%sQ@?m&wwZ3k)b0D((aZacT{uH!NR+6@Cx7@lojlqZ27glQw$onnvH3f4NtHdqI5dv>+|>rIlZcs$ z$i6>%U*}xw4WXs48E~@lKGT^lFkb7;a#D%8e5t1_EO@G zW^A{+%7@Rs95FsK?!c}{&1`0%T;%YIILDnreV6!c$ua`VO+m{=+aI_OFH(3$-6AF| zdv~*#3)Q_H4SZzEw5d*~yCqw@KH z|IQ;U|0Yt}WV@*KowfCLr-PM7hOuHwgeFr6@(S^rg4kVpmT2|F27yi^{g|GK7)r7* z2qZu=uCgTuI$~^ei6ExZ`9tuItG26!X3-7qhZ0E-m zq_K1kg`jqzF0FWD?TD$`LnUgiejWlpxKh#D0O#!BhGRnw!bzR%Begc4Hxq4htSnOy zlc*N)j&{we7xx{7H}jHs&0#CyxK2usgoL=yJ>>x^lI%J_}XGU4Gr0OtPi?y%s9BGw6cL+=ZBO%V{dH|aFJ z9%H^ZI?#DEPgz)vOSAHto{R--H1k<3^p-LioE7!ie|7v_*Xc%L@Cnc3Oj&yDy@TvWIfwTP)1xm=+ z4|-iPZPBIy+QEYj>RiTtiYGI_w#Z7GviTW^oc4PrNgnEwe_A6D9~`#H%t!Nrj2r(@ zrEl4E)75auEbLF*OhT$dOx3#Fd6j@+Otlii0F%KELr_V!aV+$3ZsJVo;s+D^^h|tzT5<`Lmq7gxtiY_jpZNI~Z|=6vhjlJ3pJmLms0j1t zow^vi7VL7j${aRq8x8d!ImS9n ztrYJ?07j6&x(Kt$|Qo_n>|RqbF_ zTUOjL`>&w;@%CC{ZP2<+H23?n?8^IkQb$BYjZqomCXC)v4Eix^_;_t=g*^4!>74Lc zSx;-yj1?+H*F9lZI?WMNko#!>q=9g+XH2K05-~Xg9D=tDxv)q^a%1<|V`v?3;}@;= zb~-V5^I!UIPty^s+#ev5e8w&57Axwt;K>!ne2))u)GITVe8BDG0AsypB`?}u@L#XM ztBxq2a3z?dE6PM_0EVybGr#wh))tl*Gl|o8I%zk;kkN{&MmX)`NLH@}*>Npo+ayLW zbGa;Di-I(YNPB}SZgYS;by+#^?xG+_xlQTDkaGLQ4ou=crqxs~>Wi5T%CvamRJb|& zr@v~baX>S?fefX=9ZC0Ier42d2abry77=rQ#{Oa!lyrM-TWeg;TeUZm%R-ati!ILp zW9Zz3iB!GS@Wx;=mWDqQhoyU*Z7wgvRhjo2wtMT*~AN8Voi zON|+n0&dA#w@5G|QN3)y$LiV6`eg=g7>`(I&8l5EyN)Ih0j!eM-$L|!*gE_1RQDwF z8=BJ~j>I2yQ9hR@W!BlgBz@ETUJ^R=-1Xgk$GEPi`VJ-U9UOCsA79SG7F#|OdsZWS z9aD9MT~DMYDyDw^ifXuge$Nt5U|L0QfP+(^aUdI6TAxeFi~7TIKsKwTFyy7=$hd74 z)b|HqxMGK}LN+-9$i^&{&X=*k~4N5r%>Nz7H>rF4a$@F*2eeo zrlaCoav;2(b|k%YDl`(X@qjE=~+HRgPDPNkCLpQWKIXMmW^e)?&dxpC`rwm<4Nbny8YCKUC+5G zKQm`lsf{ua;E)C_^x)np9J`)9R@pJ^9133!;_kDAmVWH7qS|zx{hT zUxt#&Qs+~`xz$_hK6y8ad>4zYS#^wota)q}cVDvzyU=L0NUu~=k!w37weJKzTf&Sd zqWwhq<}6NO+$cpzO4;N6Km^|93MmUY1ej6Q0ggGiMr6+VTD|a#mu3!nJ1tUp+W?v@ zb6ke|E$vxA5^rtU^CcyG^{+-@Jm-_VqQHBv^hK6#hM2r&qwuZx%9z{#@R~RFAw7FZ zdx1qbx_!cD>lDN#?smi$EL;!g?%=6!P#O0CbD~UOqNJLru>e4|Hn3oqy#1?COn{#kN;Q9#Ny`8Hah*kHfjf zT8EA3sK=+p`B?V~E(q~Y?}kj@ssB5T9*eu0b2dGMsdvPnJ?s}9i#m7g9Aea8s=r>k zJ~ZocuQoUJ2XH-+HhG7aJqjLEK4MW9Zs2*1;<7Q?VGNGw$hYGv5_>sV_ZVy@HPKIptc2bsUs z3*YO9a+CvDd>j$LPLde@(8jB;T8Z`E(0@1}{p1)p)Ng0y;Ug z1?{#i72ouUnpNizanr(Yq+PEN&)nj_>o1Ba5D7cW94CWxwUguuWC_ck%V0TEo!c=6M#!^4k^^ zXjIGvxSN!tPWJyozQ9x@DKzGLeL@05J9q9*;2yZfDUDsbB`D5{(hjGfQ;Cr{%lO{D zJ(gqirC)h`pkz|@9hl#)x1ZgoFH9P1C7c~3D8#TV%M`~_z8CfD^< zqOW`#4;e>^7DLXBd0Usi$FN6pnFISK<9m<)sxKU3?tGF|$j85UK~5E8;zvx>GpPaN zQ6|+}hdD03IDb}FynfkgmKetCNEc!=4&zxGR@=xP^vEvn6y8j^qbDS! zW@H!E4Ay`pvf=cx!S=;_(j3a#Q0`0k)bf|mJHzARF9fy5pMAU+KdW$TMOtisT#+k7 zeJG}zA$3mdZ}mgbYI85H%;(kX0R^FyF#M}yG%fz`Oj8~r?#RBgvEg^JTq#mgZPV(998Y_Fj#K%9{A6G@ABP^I zorO@hK-G<{Rh>k1-i}sT%+R&-=Wi!+`;PT&os^Tjeepa#42Zrp?Brs-H~n##l#|7WLl zQA@I|-Pt44OTm7PzZCoD)fBm4QdtyQ+l49uz0`d5W~9QaTZyaOSuVMs_rSh^76Z9< zhrJV5yBdXZWnMD7%_S|YHkOpHF8xOFyp*0$EV(4EEmxE1XQ!Z%#bCIt_7rV(6j+U4 zWIPpfcMWk6M{#}w7v&ei;D^oyw#G{fGE|4R?!`~lZiBs)hRu+!!+i14hJ?F^h;fP! z64WI1yDBGQYJaIJK4o$drLN?)cGqO$wnoNlRy_l#w4Kz2!B@`MsnQBr;Nnn>r?z&p zFBeHt{7VSD>FT0$TW=lO`czMbuv$k?O(jJ~nqm6XnFq46WYc&#gah z!@TFZX-YX1&;EkuUa&UUU6fBKL?*=dKZ38dvyjF_kmpmg>@%fLAnm9%lyK(ZkCZSD zHSWi@oaj_p*hm;d9A{&RYsgjgPzd&vNc}qPWIPeXjcs=pJAdcK&!(bwUP^Jqd#mA{ zX-T#Quy1WA7g55+kCdN0SGCj|Y%}J4rU#s}5eIhDDO2Gvh`rh3lV_&OPPG~BE(++d z5uyltn2`Ko%SjMY5l#td**uLTtL4#K|H2_Lu-`FmR%RmQYSYE&7c}SgG{{-XwW6Vj z;_35eGjnKTJEcULhE>{qM!Xw2BLW$#iD3VSQvfv&;1UKFY4TB$88*$%My5%qE1&*A6 zs{bWCN{%j?>6C}*GAI5CXqCEG3oY9fS$BGTW`1MKClxsK$5Bs-A;L{WLslwT*(N75S5z?`%VSn3uQ*6^1jzR_h8BK#P zmMoRaK&J_y4S#a)XUI#fn6amcaUCZND6;A_UH_Jyf28$i^j|#^uQa}5rn{Q`^*}@9 z6;yRpGIXI@Zn~iPz2Wfx?ZdkNVMzN20Dh!INm#7`AO=4HMyyhz+x|U!M-v;DYJboLHU-9^DK>i7j-v;DYKzLNv#D(N| z(4mHLgMu>zf;eG`z~kSyze9}xx`}28H%m$I1WX7U3h)9b$&Z`}0+v{E{0Nwi9rGVh z+d(1ncp>n{e+{)4_@izQ7>X#B7~+Ko9pEMe#Q|tSR7jl`;RMVAU>=BY%S3nr!sNgj zAOc`P*MAK)9zu>Mgd)c}5wdu+71DuFgF~TkxPdmogB)5&4nTO3soVspNw9Df00-B$ z1;7%(5$^xB{T*s>P!)WK9S49=<4FGqLWI{i8f*oisGmNi#5i^UMhJBTH3SVn&{(Pe z4r)p;G8!S|1(ZT??1ev5A_AqMq~7Z0MX2+D$$?lg1439hK}?X%V~- zAW%XNh>RdgWdz6x>3{@*!obH7Fg7&C5Io4S0Q#6Qv;=g5P@56F!0q^d3pE%h5?Fzg zW64n<0SFr*BR^RUas~&wj{#IbwjBa=flw2n;Ii|{vU7Ow&VL6r06B*1LV?kbN)rI! zXiiY_qcn+rW~3CPqjMArOqv`I0r0V)1E2%2xc{2fM-nnp!huqNxCVMz5e4N$6M>$8 zu)2^NOa){+k(3uZAwdvo{22mQ@05269#ODL(sxbx+#MFflN(sUZ5Ftt=p#8`10Ifg0z-Sf!aQ(-#o)G>&dj9J^ ze;JT}J(aA^$6=|FsnU(@?*m{uP?vQ2&a@|4w7?pPu>u z`SLfbe}(WjtAEAgH>>{%kKfheuYmkEAiv`A+kpIv$8Q7jPk8(`Aio0g+kpIv$8Q7j zD;~cM$Uoun+kpHE$ZrGkD;`8gLvz3S{SRGH{IU8C0D}`|82Mw45eR^w<;K{jshZe% zgLC;0p;|W3v)~*fN0ayyR)|HMSHPz4kct03{3{snb30~RE;7kQCENe+IrgtNBVM{- zb=+^IpD8cRs$7A+$)@$*MkB_e!zx8hhxN>Ml0pZmv@%H5Tt@^PX5W#~B}P0f4ZSC; zP2zCl9$Nn5GTY68qIC|Mi(*nM&+Jc~EbICsUizpK-vc9^pNT}R93rOJF?LLh%6f4rOPsc6 zw!VB+q|`{cFOr(Sb9NW**^)Hm<>isicQKNmw!(LXfRbUK?1KZNq5zK37L!zZaO9R#f1RF_bXD23<9a&KaLn41KV$ z{zi22w3*;dYn~4WvB^j>Z7z)p6@!wcCYUV`(|%z#B~Y!s0hiy z1!NjkF04RzJXqONU2fWQ^`zt_vd=4A;f~=-l{M@NDf1z_Hlv^KT+3x%{j6Qdu05hM zq?%1dLT;C|CpKi1GUg$VU%8wz*8KEIR5r%Djr)yR=hKv;yHr?W!~v0I0gd|da#4C+ z_+ZvanMeK~V<5JE&Fv>z3)9*dG%$@D&ufD$T%p15QOWHw=V_Y|*$%k+S#i6VMfMQg zWISh9AKUE+Y*{R4Q11?sHW4eM(jjcWwr5#$N&QqLiJQ0(gg=ZAMddlow#g)v++Kxx zPeliy;IDh4)@{!$?G=SSH;eB=RX?q$unRI=OBqxzLPseFOJeMIu07)-FovP4xP!9i zX^r5?>ajP6+%5RFDoys-;#`ulB*%``pSZ?y+ert_L@{;0QR%q5YGYPTZPvvk9=ugX zTD$}sRXp>vnBBsL?mf=Dd>iDjz)tW>Zt`0Uy{SvN>H$I>WR&uy=e47xW4Fhf zgE_6m-S=Pr)S%O*a%U^N11?b4N%o!g)UXkSUzsG0`cBX#Q^p?v?yzFcL7Nd9kGTAP ziVfJ`sY&O3cl#%f@tspduMV1vs@()K0X7{?zq9?9T|q>#^|LHrTV>DR^uz4+pWm0d(A8k7Z z!5qJv`b#!)2N&T@H^Rs74eK6s@rOF4KbKH+AI!D$fSF8 zS`EaEH8;5N%~Gljs#8~T_?*`=E;Fg|yI0F>xA~Mx7r{~bl(a`jgtZi-S}<*9AbPrO zV$*?tp-pnc&&)x`Zj@Ud5N)CHE)8&xRYR$U)jxf*`*&+`wrC*Y*#r7!e`!P*CxR#{ z;KFB%Bf1jrT{%{gu}y!BOV@*JUwE1tmYv}0=G|E+05~Z=BdFl98+o(6Y9&z;NshJo z?hg-s7U^uB=tyI*eBhc=0n?7}OG$ESGdz7%6aI2J4#-55dV0EayTcWo9G?i!w|==> z>w7Tx+_viE#TaF=TZdZTSS!dUTEyCoUDrtjVjwott-0rP7`a~PW2Ho~XEygRt$6n{ zf!wEr412#k9h?y=$QFrA_ldZlSGX=%p@3~u^QD}*MOUUezgLZzGL+!s-k^||Uaw$3 ze@2vae)jWS@r$$i4@F#i6;HEP%t^LVdPc8a{9uQ^K&m?R(i{!4eBkv<`?X!f^_B(E z5t%9y3d)I(Xv8P8yds@$hNFXusEEBUH%)2TjP)3M!o%cSihm>PvhO_Qz56@Zx*tH& zs8QVPo+zt^&LdQ>u~1+qolxzQD2$pS?L;-b_Y8WGquKue3oXn*t<_8z8KBMcz-*?eES*VXpeCxEjONc|M5lTxO>1ikSvpN`m+Do>u>Wi~3$WK0p zUQ<~oG@&$|+gvAlu7(d^X)fXp+6&VJYPV0&oc}i4#7=T`c#FGIF4DNNFd$QW0j!m7 zJo0MvfWXY+F|-;^a(h~MOJgEEBBD2ty&L(UpxtY%GDVeYCHHSsZqfwRoH&0IiwI6z zKOM(5twzF8_%!5~vRz`jN!2m1mg-#>-daqr17c?dL^HTNdUWpkh%p~iBr8l|{);4* zddl0o2z#bzoyqY7I2*gT7(?6yB`cYlWA8Z00*QL`;`UEbw;jbrD@gRk?O2(D!K&!# zlN8c3Ue7TH&a`9t62MkiU!gMKMO#d9I`!Rv{aWpF&dpA>@+fwy+k0ml0Hoq4T#O5+ zj2d#T%#HJ7md84C>z4{Ogb(y5P5&b7kt-4)k`VuHPcZn?)Yo7d8*5n{D5sw06CV|6 z@PiJB$Lu$?9798Ru$?8bF{U%~Ij%+DB{ZdbCw(`6TKRh_yY%CxEkr{mQ_KW4nr}&q z;gsZvj(UjO9+wSP4yJMTz&@^FfnDM-!y|kpw(kk=HsF_7!MQ&fzOsvqCMI&A-Ray*?(;+wi83$ka!?iC9)sRjd&oDc z5+V`UtcukbY$LsMF-_;EA9{2?=L2h~sDkX^P7vrf_%xS7{Y7qJtUV92j)^sKIv6jv zVqKt0;g1Oad_npO4(WyLgNtFbhbAr~Aagh@F)>-|OLTp&h%W{E|E2@{Sg;)sB&-`s z3NkvAj(SamHA4}~&N(htS^s}KWM*E<2)X(G zoxq+<*E55y|Cx)e)>}A8*#+E|7ZDk2GG15MH}BJzyO#-bBfS7YsZ&mG@y zR`627c<{cF7!GP;IxEZFdI$ zSY*V*Os+4av5KQUZmz3Wy@?EvG#3VC12%%)N@iQ3S7t-i_fkYjZxE5nP+VJY&XoEd z_TgKg>eQvV+w_WDyS-Q*@-!u$#0Y2)!NSoEkQ}kYg$bZ-jM9XntV{4z!b-(YwQ!x!pnt7W6xOJ*w1{L8f8V$^lKpO zio>0hY_CAL7hXb}vtm0^Pk}F70lXffL(*!Syk#(g*opRZsLCGzX}r_MW*d$VuZr-) z8;^@zVC|?c)^w3BNIi7yQLS=AF+eah6U3xufV%mY!Ml92*z2&G;^b6EuaW@LoGq!V zgo2)*Euj&dJE@bu8?dpOtnL1j4VBd`CvkL|a-y5YqgU%NjmA7v0VOe)2Nh@B82nGV zV+dsXYU{xk>*A>|`*0@Mb)}|Yvg`X_he8f2G|ibmB)Krrr+%@x$irp&f$gO{_VU-? zFC?LWj>*aqq19L?x-GEmt~`6w4xxlh-d-o&j?S5Non40z5gW{V21h=J4(0HgG|rph$R$`PX7W$4@sI8Fsdgy-6MCfOJ(b1VL#);I9Zuu0VAv8I?FT-C~>E zlqvNd(a4)ZH|lE$_z(`U8jp=cNh@0*hoX#Emr)XkrWjRXW1Nr_&D&-o5)NNvkN$Il ze$z&M(Xu|noeHpHoFB$m4~z#H3B6Pedk+KXC?mb-!)MsjSRbl3+5lBAQO7O(m9s`4 z(CK7U*xjsy3)Y0)B&L3eq6}$-@oA=$1{Z3C$7(#l@n9a@>W9vFrSeaN5s^cYR6MeH zaO4c7ueepPi!&4ExvBp@YxaJocI{~5UI_TQBPj`3JNz-M2BGB!P#6>Y4YaD4cNhYj zR%Be?vN`m(iF*;mXh4!PB2&n?NG*z-;eYj%a(MgS_)N{U!zus1)#TNiuQ^`J+)=o5 z$@;SO+s2QNpL$RGUYT!N{QUCw?f-39zBR-b9*-c4puc)l^6i4lbOxGqc|ltq5vn54 z8t61g!fMoIz-UyD+oQ;XVb~2a^Fm1c zH-AFd;<{kw4!+2n@eD$7$MJ4<*MaLPFD^cQ9)5vQ0x+xlv~;Lcl2k3j&>LbwR?vZA z9Y+-~b}Sd@_9C+-Hi#o@=}w}gaJwE8-kTf{!HlL?$eLqYr`9EWzvd3V(xBkf9FDK) zkZYw$s}C%M_nQ>f&t<}-g=drs7*1vSaPRSr7C3HtHWZ(uJbMxwphiH`zt%Hy;1C6WEBIYVMuvXho>;ZuO0JotP!@Zq_KMLAtF4 z4$XGgIp&`=^ay5sseL~^zxuLLTVt%UcNFyy&;B#hi2h)7XyDhR*D@QPR8r?|CIElo0&@?gTbJK0%Bj1AYK^Wf-g1z#h0=F7G!^?%D!}=tAqU z^O(xbPY>7_qYO>cjbfm>R>wwASQYh_ij=xp1UxmF%<&4#-GLx{Tg5kWD%R{)?h*Bh zZujSPjJIh9l|`oVMKmHe3i5+HR&Rcq41ZC4&%`COhgF@D zs*^QV04Wof_|Caw^k#(o0?AiMmW%BDk|>HHhEm*3q6nApY)ErQPcO5uoP2~Ri|~%< zp~B%rl|aQF_h;u4ExC86I-04TuGW!g8Vd!*X>KTy(B)-paqV{Tr{}9diFXuPV>kUZ zW{%eqy<51p{=EAKFm>(v58&YsK==pXd1!Gsb#V9lqdnVim$sgN=@;t8tK5NXMPRg_ z-H^-?RM0Qq%0Rfl4LF&p=wer-m>y)?QixyemX0Rc60u6i=Y+OZM$~ri@|88nBLclw zN?By}-YDJ#5XMSoWUfppC~!f(?$j*J+CpGxZ((FD0pUyxkiz(KZ@ritH7G!hC49&? zyMhUOdMt65=HT_Q#yWd)j`z$s!K4UZnJU8mW?y9XZPTFqxUybP8#_XE^ul zdT-+6YFJjVn8u)xo%ANLGwM}69qrm?rQ9*U)S-x`$7+tX{5Qg5WOvBf#YHf?LBWE- zO!9LvCY+oPJ_>TMogXMIYp?M>yn8d#&mK9$QTz`)PL(39!^?e4ioxA$i@!w~FV)Wab(MyxHf zJ>~dw#r(99LSJ(m%SKc&r+|->{8jYOyV+;2`{c88Gqx< z9-pgxi-zO{pSr3(oS>g!(0!Wda<9B@-n}nK909GWgXB)6QVI8>^P)J)^M|}7k`a~< zwtS9n-N1e(Gq0+S-^{(IasMKK#2&D8OZr!GC%%AwX)=mW&$&yeu^cu`xJwGbgF5rW%JW@1U2<_6i&j#x^xX`h16?!<>4xUH?b6uXEFAF` zYe`|`51={pM9u4pXCCn?ZTVDVLdkmzd|R$%$DCc|hp*e(d3uq!g)7zd%dk(7Mia<(iA^@(&|k<6Mc${ukX`J7b^K2tosd_W_~y# z#pji%abx+UdV5@r)4a8c!(5&TvD8NHxdLn{m3wH$+BsX&tm9aYu_3PtL)CAvKD@cq zN4m;)#8V^uP`R#M9@vFj=MYK8WAx9LI5(RXzkMlFXAFq^dgJ9CXxMAPGq?l9){{ii z(&PRgPfKMm%!7K}e07Wnqt&1&W`BBgwBdck7o9a~n{Hr1&*J4qR_>ilRotw`TIPfE zQJ|(KC9lpr-kJ8EWR!CI?$t<_Cf852`SptZ=BrcHs=OthdS(%@*~c+0nIncPG%)J; z?Zku~{!M#IH9MptN%uMjiwWy-DI+yu^9NyHz6iP_Kg;UI1f_YGgvUCEkUXO_KEn|g zF&3f0EJ@tN`5IH=-o|9eJYzp{?Zgo+A4DPVo)7(qUW>DiZVHX+Sd{YkB!rce_fC$M zQ@jY4j8Q|B7G?-`eN>zenHCDJl4j(Rds0}QZU7h&LD6XzTi0f)NPgYOUAJm{RdhP> zd6>U`N8)oVyBM!p2zw~>^W7b%x$b93SCTe6G5u#JPH`}GCecQEb27S>59D3YoXeuV zi&Si;aI_e-KwC7Yl-CEOrI;oP1;jBkOez}apLf-rGe%h@$SR+*;w9w{m!?}3(Q!0s zMsJ0Beqy_G>A5?r)28_Fn_xi>eC9b=o3)-QpKXq8vi6W1f2TVYw2^mb@tE_$xR3Uh z)3$80r`4TXe5OzKLO%ARTHUC2cCQxqWADh4jplsv!la9|($9_O_?q)C%F2WJ8Q(ir zsqL5crm;{DTPId^)7_AnghJ>W)i+p8aCQh8{f6$Az}mOe5Hifh86V!L@%q;c^06C_ z&EPo`Vhu`9&8irb9aqQC-O5pOG3r$oQKk|Ba0(=?@EA>oj5!0n`uG6_=%N348SYl& zJn|TvK}r-nna4pT_h*&+IxuPe!9-)al~#E)4dqmQ1|aD8IBZys-3BZbmpR496z?zc zV2RA}B84LQTWX4kU@f*{`g=0d<0RqKU0W0_pmw~FT$DG)5i@!st6FP$R6Ajj+m9jJ zz^LIm1GQV*+?~#I>1>XynJ$=RvLP0F+J>AAQro9GQhL`H@{ohOPJ^5@@h`jy7A|6T z7*A$VcP0eFJH82-AB)o(z8bl%S01OYc|rZb%dB-o4QnIQ4eqs3ThB>-^>a?tAI~K` zXY0PM^}>vy3eqN%pLT+Xj&!e}G)Y3r76_Y3WkDZOvhHI~4t31UQ!*L)oA9qTjO#ebB1#Jmx>~=}=n9!e!lXM7&otP`tKl#71yxVQbx8P%xH5h&$8!4tqx`dvIn^fOpWSo} zc*s*qtZJ$irdQc;nKbikB6k6DUa6R|C4*MINY%*hlfuhRZ}o~4ip&$`+r`g9BH!YL zTp0P!@N=-a&lIz8@%l86`m(A(bLscWo56-`)P-RkA!a380f918JEfRdIzgYAXY`L! zF>+ENiZ!do5)5jBe1Rb#`|MdG7wbJxg8|39ZPmZNTAi%gAVNqyD zS5rX(Hg&e9uI+g~KX~}=@a!eK#wQ5xNs?5m(gehF{cwONZ7%t^JymV zMa08iz4>!kDU}#Tu^lF6G{~Z-r{%!1X0*20tZFEZOjf2#DIasmR%a~F;SYm!w2;w1 z_9;kL7fYC>Se&tPsDWL-fB7{G^*v&7Nx*Kyz&0p^S;&(V9m_EPBvrk^A?75fg`0kF zW$rV_I@_#nMf>S_X4-?!2OE$91l z<5`Z)G!V&q+HPlJav#_bVrPq`&L4j^#4}HIh0+^4Vsw4CGGpR2&3I$-9^FiVJ;_Z| z$`?8oPu8Yyk4z{;=!&+x7>iMqERf{ScUDy&|N2}Q;=ORL0CB-zvrFg|p-<5J6s)Zd zByEy&Z}HO!-c*wv@)-&6a$S;vZM!b2lnZ9K$&#zG-*^Y(Gqe^1RZiyMk%l)JxTfQi z$xnM1!%c)?vi#q_8CVIs!TFeACS0cy6rC}rEeOrJ$C}*<)aTz3tqKU)y@=3J6hD<= zr5!PeXe?Blmxc^EvvT&0Wd}KwLZ&@QKdW}C*ggH|DAoCr%y0O37F`7H?j>?YX3GjrEXyBD`de@CJa%RLM z74GyqV|^~nF}>U^0Y7sc|Ez(7R^u!!t0TmdQg4`lxj0X~*9QM2A=a#}(8qdgYi5i| zXvtzGMokQAH|V7qJKkp>IX9wMvQ0xE0OECNX5}jFs~%Xi!5d`^ME@!=MHkK*^Gbm% zf4W+F{ABLk3;T^>w`tO^2A{%e_ZWS=VQ{7J+`GX*`Mmq4fI~I*d5LBctCU{ddr3Rf zfn#=S`^6AC+7=NJX889_$8^2ClpE)HSySpeKZ%wJYqN2Y**O=!N&$2CQJh>x3Kng1 zHv7;sQ4LZtGB)^LDZP5_apWlr11fD!3n|xt`;u~l58l7Le>uMxxy4Z@CWMy3yi5@% zjC^1 z5mN5L$f3{Di)F) z4$!FcS-zD94lj*?*v@45o9rkxgx&XL;S|}Ipx-TK;hO-`WEVA5;IdZQb8LE(Vy+!I zhKJLTyu2;61s7o_Nj?xf=l>eq4fYdzb?EgR)E+eYqVH`)w6%CfarGSOgq}?{IkeHv zt)Q^+Tx{kpd6ccRQn`_pb4uB@1jkd0qq)mHw2P(`h0O0aaqG+}u4UYn{%N^1OXqfv zs!iWp;n?8A?S`t5naOBJLorq-qx4PcFZc1qQ4t^VUuyEH!qG_}c|Bz@2_ z7TWy?4&`%AD!jmpl>62v&Av3UI^V?A{P=-O6B$xu_6LB31>b|G<)lvwef{FP&D5v* zWeUbvPY*v`ZEMqvl5jlQEcg0*UB$5}*NS87+5K})j!nH}Ib@E=vOO03~eFidbJZTug z%vG`bjGeL{iuL%a{he0u%-HN#xjG%yijk4~Pg8?1;jY)Eu4c?}2oP5~calAQ$kiMP%~5b5Ob8<-`RSD|RR+39*a zRCup(#*kTE$mxR1U+_LMnkxNT=SKjrmlOX`V=;28NJ~V|eD(s^SNn42a^kJg zz$V&_+Wz`oYeUfN?)l{Omkw8ZR|jj^8f_tr&N4>nd$%pju5&C!!TJ^I-nfDlvMt1o z+^w`S;o9)o!}NDMSwDc%N8kCMuZaEtbS~}d{muLSht*az(E~EBygNhOy$n&*+Z02SoRk^fk2zBYqttk0^J*z^+%8Ab) zBMcejUR^FOD;zJGorA``X>_Fy|?~;lMUO6EnoPzeQvZ1%9^bMjqTQ4=j$>@>f-n{ z7nIn`WMQsRdya&bSBLa6nJaznC}np6QZ#MS9L1-_*GOD_>NKOFX8!Dg9XUB)yya;; zj4}4U{SJlpV0gSHGamDK@}8|ftEPkFJK-Who{tWiC$#5yO^!>8e9F|VZ55HW@1mkc zkpa5#0ORTIoAIeVZ}Re<)HSNy)IxoK%s!=CCE#iKxN4iw8J)MNOjx>T;*=n7Wkd@O z8sU_dNzu%ga4zBZxb%CMNtlTrpV2u~g1EGW5k5KP9#0 z(u((6i;Xts)8~WJ8|oIp4)!be{z+^ogzVkcT|%wH`np__GJ9_GwVIDuqcjtJyu%}q zJ#Xzr)#B*y*(b}gTBKcz5Dbn3)MFiZH6Da^9cFiwzHhX;{~n!~7CEaYRR060$)#Iy zW%EhSIPQ}>x5UuA==abxoipT_o{f4tp|5$J!Cod$SUEyI`a z>3A`gcduRP4aNAicVgBr?PR5w)^k(p>(Q@J^gL&ETP(XZxK77%LNUcvZ60_bS8plp zC0g5%W_Hkgxir_NQz64&V})hjW{sx%NZ+LIY9%Gd(Vd9CU3hJdRUi%zjsgn0%?cO_ zI6U8}upFg4mThj8BP*Etgl8jV(0Cn_j}N;kW>W8Y;oyF7_;2tCz$LxQ2XW$^+_^^{9{RKY9h((>nHZQzg9M9#))2=ZbRCWp*Z)dE#Bb~If-+vKnTD|j+z0p+Swi23D zPN{$O=I-KC)CGtvXvh5(=kTc-X=uG~r!P{N_$e;IvJbLTCs9C-?afMjP;?%Zv~fZG z{q6@<9S7-kGsb<_vQD2FKZ(NuI5fov=zR*Kpc^YW)InPxDymMMuG;hmI}GIlBq8cw zFKcKBN)5cG1`DmF`u*Je@d8eWSo^_!dE#zCJz4&Ws#>tIGj_&rxv~a!p~{~}gkN$m zxn=Ew{zQHJ>)y+3*+UP^BLvAL!?H^Dv&|; zV?MrT)#u7FiuBqA+2~by>Bh@>nwW?W2Y|U3G2=Z?v#%kdTbikB+e|&d#?@ePc-y;mVIOQx?QgxYJCbm;J0So z`px|dmWfT|bF*dz8WgtZ)1xb4L7V)(he`LgFbaJ82Fn7_ys%}vs*AT*(3-u#oB&)y v;}D!x&gXgVQljCinpL;6>T`{BJRJBN#Pa-&P2;sM#g0zY4YmnN`TsWo?Y*>R diff --git a/docs/blog/.authors.yml b/docs/blog/.authors.yml deleted file mode 100644 index c3fe2ac1..00000000 --- a/docs/blog/.authors.yml +++ /dev/null @@ -1,5 +0,0 @@ -authors: - remilouf: - name: Remi Louf - description: author - avatar: https://avatars.githubusercontent.com/u/3885044?v=4 diff --git a/docs/blog/assets/4000_stars.png b/docs/blog/assets/4000_stars.png deleted file mode 100644 index f3a596d7e13bd919064b87b463d2a4fc1fb5dc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57307 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%0AKxTIss6DQ2fQ77sr$ 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 z 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 - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -# Let us know! - -We highly value the insights of our users, and we would love to hear from you. If you are using Outlines for your projects and would like to share your experience with us, let's connect: - -- What are you building with it? -- What do you like about it? -- What challenges are you facing? -- What do you think could be improved? - -To schedule an appointment follow [this link](https://cal.com/dottxt/outlines). This is exclusively intended to share your experience, please go on [Discord][discord] or [GitHub](https://github.com/outlines-dev/outlines/discussions) for support. - -[discord]: https://discord.gg/UppQmhEpe8 -[twitter]: https://twitter.com/dottxtai diff --git a/docs/community/index.md b/docs/community/index.md deleted file mode 100644 index 9519f5b5..00000000 --- a/docs/community/index.md +++ /dev/null @@ -1,12 +0,0 @@ -# Community - -![Belonging](belonging.png) - -Outlines exists for a community of users who believe software doesn't need to be complicated. Who share the same passion for Large Language Models but don't want to compromise on robustness. Together, we are bringing these powerful models back to the world of software. - -## Connect on Discord - -The Outlines community lives on our Discord server. There you can ask questions, share ideas or just chat with people like you. Don't be a stranger and [join us][discord]. - - -[discord]: https://discord.gg/UppQmhEpe8 diff --git a/docs/community/versioning.md b/docs/community/versioning.md deleted file mode 100644 index d64a56e7..00000000 --- a/docs/community/versioning.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Versioning Guide ---- - -# Versioning Guide - - -The Outlines project follows a structured versioning scheme designed to provide clarity and minimize risk for downstream dependents. - -Each part of the version number (`major.minor.patch`) conveys information about the nature and impact of the changes included in the release. - -- **Major Releases** includes compatibility-breaking changes to core interfaces, such as `LogitsProcessor`s and `Guides`. -- **Minor Releases** introduce changes of substance to internal or unexposed functionality. These changes are well tested and intended to maintain compatability with existing use of core interfaces. -- **Patch Releases** address bug fixes and incorporate low-risk changes to improve stability and performance. - -## Releases - -Releases along with release notes can be found on the [Outlines Releases GitHub Page](https://github.com/outlines-dev/outlines/releases). - -## Version Pinning Recommendations - -Here are our recommendations for managing dependencies on the Outlines package: - -**Small, Risk-Tolerant Projects:** Pin to a specific major version. - -**Large, Conservative Projects:** Pin to a specific minor version. diff --git a/docs/cookbook/chain_of_density.md b/docs/cookbook/chain_of_density.md deleted file mode 100644 index 16c2838f..00000000 --- a/docs/cookbook/chain_of_density.md +++ /dev/null @@ -1,125 +0,0 @@ -# Summarize documents using Chain of Density prompting - -A good summary should be informative, concise and clear. While large language models are generally good at summarizing documents, their summaries tend to be long and contain redundant information; their information density tends to be on the lower end. This is where [chain of Density](https://arxiv.org/abs/2309.04269), a new prompting technique, comes in. In this example we will show how one can implement chain of density with a few lines of code using Outlines, leveraging both Outline's prompt templating and its structured generation capabilities. - -The article we will try to summarize is the first three paragraphs of the [Alan Turing page on Wikipedia](https://en.wikipedia.org/wiki/Alan_Turing): - -```python -article = """ -Alan Mathison Turing OBE FRS (/ˈtjΚŠΙ™rΙͺΕ‹/; 23 June 1912 – 7 June 1954) was an English mathematician, computer scientist, logician, cryptanalyst, philosopher and theoretical biologist.[5] Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer.[6][7][8] He is widely considered to be the father of theoretical computer science and artificial intelligence.[9] - -Born in Maida Vale, London, Turing was raised in southern England. He graduated at King's College, Cambridge, with a degree in mathematics. Whilst he was a fellow at Cambridge, he published a proof demonstrating that some purely mathematical yes–no questions can never be answered by computation. He defined a Turing machine and proved that the halting problem for Turing machines is undecidable. In 1938, he obtained his PhD from the Department of Mathematics at Princeton University. During the Second World War, Turing worked for the Government Code and Cypher School at Bletchley Park, Britain's codebreaking centre that produced Ultra intelligence. For a time he led Hut 8, the section that was responsible for German naval cryptanalysis. Here, he devised a number of techniques for speeding the breaking of German ciphers, including improvements to the pre-war Polish bomba method, an electromechanical machine that could find settings for the Enigma machine. Turing played a crucial role in cracking intercepted coded messages that enabled the Allies to defeat the Axis powers in many crucial engagements, including the Battle of the Atlantic.[10][11] - -After the war, Turing worked at the National Physical Laboratory, where he designed the Automatic Computing Engine, one of the first designs for a stored-program computer. In 1948, Turing joined Max Newman's Computing Machine Laboratory at the Victoria University of Manchester, where he helped develop the Manchester computers[12] and became interested in mathematical biology. He wrote a paper on the chemical basis of morphogenesis[1] and predicted oscillating chemical reactions such as the Belousov–Zhabotinsky reaction, first observed in the 1960s. Despite these accomplishments, Turing was never fully recognised in Britain during his lifetime because much of his work was covered by the Official Secrets Act.[13] -""" -``` - -## How Chain Of Density works - -Chain Of Density starts with asking the model to generate a first long and non-specific summary. Then it asks the model to generate 4 extra summaries by proceeding in the following way: - -1. Identify 1-3 entities missing in the previous summary; -2. Add all entities marked as missing in the previous step, while not dropping entities; -3. Make the summary more concise; - -The prompt also asks the model to return a list of JSON objects that contain the missing entities and the new summary. This is where structured generation will come in handy :) The paper provides the prompt and an example: - -![Figure 2 in the paper](./images/chain_of_density.png) - -We can now implement the prompt provided in the paper: - -```python -import outlines - -@outlines.prompt -def chain_of_density(article): - """Article: {{ article }} - - You will generate increasingly concise, entity-dense summaries of the above Article. - - Repeat the following 2 steps 5 times. - - Step 1. Identify 1-3 informative Entities ("; " delimited) from the Article which are missing from the previously generated summary. - Step 2. Write a new, denser summary of identical length which covers every entity and detail from the previous summary plus the Missing Entities. - - A Missing Entity is: - - Relevant: to the main story. - - Specific: descriptive yet concise (5 words or fewer). - - Novel: not in the previous summary. - - Faithful: present in the Article. - - Anywhere: located anywhere in the Article. - - Guidelines: - - The first summary should be long (4-5 sentences, ~80 words) yet highly non-specific, containing little information beyond the entities marked as missing. Use overly verbose language and fillers (e.g., "this article discusses") to reach ~80 words. - - Make every word count: rewrite the previous summary to improve flow and make space for additional entities. - - Make space with fusion, compression, and removal of uninformative phrases like "the article discusses". - - The summaries should become highly dense and concise yet self-contained, e.g., easily understood without the Article. - - Missing entities can appear anywhere in the new summary. - - Never drop entities from the previous summary. If space cannot be made, add fewer new entities. - - Remember, use the exact same number of words for each summary. - - Answer in JSON. The JSON should be a a dictionary with key "summaries" that contains a list (length 5) of dictionaries whose keys are "Missing_Entities" and "Denser_Summary". - """ -``` - -??? Note - - Note that we modified the prompt slightly so it returns a JSON object that contains the summaries, instead of a list of summaries. - - -## Outlines implementation - -We will use Outline's JSON-structured generation to ensure that the model's output is consistent with the format specified in the prompt. We start with defining the JSON objects that the model is asked to return using Pydantic. One JSON object that contains a list of `Summary` objects that contain the missing entities and new summary: - -```python -from pydantic import BaseModel, conlist - -class Summary(BaseModel): - missing_entities: str - denser_summary: str - -class Summaries(BaseModel): - summaries: conlist(Summary, max_length=5, min_length=5) -``` - -We now generate the prompt by passing the article we want to summarize to the template. We load a quantized version of Mistral-7B using the AutoAWQ library, and then use JSON-structured generation to generate the summaries: - -```python -model = outlines.models.transformers("TheBloke/Mistral-7B-OpenOrca-AWQ") - -prompt = chain_of_density(article) -result = outlines.generate.json(model, Summaries)(prompt) -``` - -We can now check the results: - -```python -print(result.model_dump()) -# {'summaries': [ -# { -# 'missing_entities': 'English mathematician, cryptanalyst, philosopher', -# 'denser_summary': 'Alan Mathison Turing was an English mathematician, cryptanalyst, philosopher.' -# }, -# { -# 'missing_entities': '', -# 'denser_summary': "Alan Mathison Turing was an English mathematician who was a crucial figure in WW2's Bletchley Park codebreaking centre and designed one of the first computers." -# }, -# { -# 'missing_entities': 'cryptanalyst, studied, biology, father', -# 'denser_summary': 'Alan Mathison Turing was an English cryptanalyst, studied theoretical computer science, and contributed to mathematical biology.' -# }, -# { -# 'missing_entities': 'biology, morphogenesis, chemical', -# 'denser_summary': 'Alan Mathison Turing was an English cryptanalyst, studied theoretical computer science, and predicted chemical reactions in morphogenesis. -# '}, -# { -# 'missing_entities': '', -# 'denser_summary': 'Alan Mathison Turing was an English cryptanalyst, developed computer science, and made strides in mathematical biology research.' -# } -# ]} -``` - -Not bad, considering we used a smallish model to generate the summary! Chain of Density seems to be a very effective prompting technique to generate dense summaries, even with small quantized models. Its implementation in Outlines is also very short. - -Note that this is the first article I tried and it worked out of the box. Try it out on other articles, and please share the results on Twitter, or by opening [a new discussion](https://github.com/outlines-dev/outlines/discussions/categories/show-and-tell) on the Outlines repository! diff --git a/docs/cookbook/chain_of_thought.md b/docs/cookbook/chain_of_thought.md deleted file mode 100644 index bd76f40b..00000000 --- a/docs/cookbook/chain_of_thought.md +++ /dev/null @@ -1,138 +0,0 @@ -# Chain of thought - - -Chain of thought is a prompting technique introduced in the paper ["Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"](https://arxiv.org/abs/2201.11903) where throught prompting the authors generate a series of intermediate reasoning steps which improves the ability of LLMs to perform complex reasoning. - -In this guide, we use [outlines](https://outlines-dev.github.io/outlines/) to apply chain of thought through structured output. - -We use [llama.cpp](https://github.com/ggerganov/llama.cpp) using the [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) library. Outlines supports llama-cpp-python, but we need to install it ourselves: - -```bash -pip install llama-cpp-python -``` - -We download the model weights by passing the name of the repository on the HuggingFace Hub, and the filenames (or glob pattern): -```python -import llama_cpp -from outlines import generate, models - -model = models.llamacpp("NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF", - "Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False) -``` - -??? note "(Optional) Store the model weights in a custom folder" - - By default the model weights are downloaded to the hub cache but if we want so store the weights in a custom folder, we pull a quantized GGUF model [Hermes-2-Pro-Llama-3-8B](https://huggingface.co/NousResearch/Hermes-2-Theta-Llama-3-8B-GGUF) by [NousResearch](https://nousresearch.com/) from [HuggingFace](https://huggingface.co/): - - ```bash - wget https://hf.co/NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF/resolve/main/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf - ``` - - We initialize the model: - - ```python - import llama_cpp - from llama_cpp import Llama - from outlines import generate, models - - llm = Llama( - "/path/to/model/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False - ) - ``` - -## Chain of thought - -We first define our Pydantic class for a reasoning step: - -```python -from pydantic import BaseModel, Field - -class Reasoning_Step(BaseModel): - reasoning_step: str = Field(..., description="Reasoning step") -``` - -We then define the Pydantic class for reasoning which will consist on a list of reasoning steps and a conclusion, and we get its JSON schema: - -```python -from typing import List - -class Reasoning(BaseModel): - reasoning: List[Reasoning_Step] = Field(..., description="List of reasoning steps") - conclusion: str = Field(..., description="Conclusion") - -json_schema = Reasoning.model_json_schema() -``` - -We could generate a response using the json schema but for a change we will use the regex: - -```python -from outlines.integrations.utils import convert_json_schema_to_str -from outlines.fsm.json_schema import build_regex_from_schema - -schema_str = convert_json_schema_to_str(json_schema=json_schema) -regex_str = build_regex_from_schema(schema_str) -``` - -We then need to adapt our prompt to the [Hermes prompt format for JSON schema](https://github.com/NousResearch/Hermes-Function-Calling?tab=readme-ov-file#prompt-format-for-json-mode--structured-outputs): - -```python -def generate_hermes_prompt(user_prompt): - return ( - "<|im_start|>system\n" - "You are a world class AI model who answers questions in JSON " - f"Here's the json schema you must adhere to:\n\n{json_schema}\n<|im_end|>\n" - "<|im_start|>user\n" - + user_prompt - + "<|im_end|>" - + "\n<|im_start|>assistant\n" - "" - ) -``` - -For a given user prompt: - -```python -user_prompt = "9.11 and 9.9 -- which is bigger?" -``` - -we can use `generate.regex` by passing the Pydantic class we previously defined, and call the generator with the Hermes prompt: - -```python -generator = generate.regex(model, regex_str) -prompt = generate_hermes_prompt(user_prompt) -response = generator(prompt, max_tokens=1024, temperature=0, seed=42) -``` - -We obtain a series of intermediate reasoning steps as well as the conclusion: - -```python -import json - -json_response = json.loads(response) - -print(json_response["reasoning"]) -print(json_response["conclusion"]) -# [{'reasoning_step': 'Both 9.11 and 9.9 are decimal numbers.'}, -# {'reasoning_step': 'When comparing decimal numbers, we look at the numbers after the decimal point.'}, -# {'reasoning_step': 'In this case, 9.11 has the number 1 after the decimal point, while 9.9 has the number 9.'}, -# {'reasoning_step': 'Since 1 is greater than 9, 9.11 is greater than 9.9.'}] -# '9.11 is bigger.' -``` - -We notice that the 4th reasoning step is wrong ``Since 1 is greater than 9, 9.11 is greater than 9.9.'', so we should probably give the model some examples for this particular task. - -This example was originally contributed by [Alonso Silva](https://github.com/alonsosilvaallende). diff --git a/docs/cookbook/classification.md b/docs/cookbook/classification.md deleted file mode 100644 index c5609631..00000000 --- a/docs/cookbook/classification.md +++ /dev/null @@ -1,103 +0,0 @@ -# Classification - -Classification is a classic problem in NLP and finds many applications: spam detection, sentiment analysis, triaging of incoming requests, etc. We will use the example of a company that wants to sort support requests between those that require immediate attention (`URGENT`), those that can wait a little (`STANDARD`). You could easily extend the example by adding new labels. - - -This tutorial shows how one can implement multi-label classification using Outlines. We will use two functionalities of the library: `generate.choice` and `generate.json`. - -As always, we start with initializing the model. Since we are GPU poor we will be using a quantized version of Mistal-7B-v0.1: - -```python -import outlines - -model = outlines.models.transformers("TheBloke/Mistral-7B-OpenOrca-AWQ", device="cuda") -``` - -We will use the following prompt template: - -```python -@outlines.prompt -def customer_support(request): - """You are an experienced customer success manager. - - Given a request from a client, you need to determine when the - request is urgent using the label "URGENT" or when it can wait - a little with the label "STANDARD". - - # Examples - - Request: "How are you?" - Label: STANDARD - - Request: "I need this fixed immediately!" - Label: URGENT - - # TASK - - Request: {{ request }} - Label: """ -``` - -## Choosing between multiple choices - -Outlines provides a shortcut to do multi-label classification, using the `outlines.generate.choice` function to initialize a generator. Outlines uses multinomial sampling by default, here we will use the greedy sampler to get the label with the highest probability: - -```python -from outlines.samplers import greedy - -generator = outlines.generate.choice(model, ["URGENT", "STANDARD"], sampler=greedy()) -``` -Outlines supports batched requests, so we will pass two requests to the model: - -```python -requests = [ - "My hair is one fire! Please help me!!!", - "Just wanted to say hi" -] - -prompts = [customer_support(request) for request in requests] -``` - -We can now asks the model to classify the requests: - -```python -labels = generator(prompts) -print(labels) -# ['URGENT', 'STANDARD'] -``` - -Now, you might be in a hurry and don't want to wait until the model finishes completion. After all, you only need to see the first letter of the response to know whether the request is urgent or standard. You can instead stream the response: - -```python -tokens = generator.stream(prompts) -labels = ["URGENT" if "U" in token else "STANDARD" for token in next(tokens)] -print(labels) -# ['URGENT', 'STANDARD'] -``` - -## Using JSON-structured generation - -Another (convoluted) way to do multi-label classification is to JSON-structured generation in Outlines. We first need to define our Pydantic schema that contains the labels: - -```python -from enum import Enum -from pydantic import BaseModel - - -class Label(str, Enum): - urgent = "URGENT" - standard = "STANDARD" - - -class Classification(BaseModel): - label: Label -``` - -and we can use `generate.json` by passing this Pydantic model we just defined, and call the generator: - -```python -generator = outlines.generate.json(model, Classification, sampler=greedy()) -labels = generator(prompts) -print(labels) -# [Classification(label=), Classification(label=)] -``` diff --git a/docs/cookbook/dating_profiles.md b/docs/cookbook/dating_profiles.md deleted file mode 100644 index d0fb9b57..00000000 --- a/docs/cookbook/dating_profiles.md +++ /dev/null @@ -1,229 +0,0 @@ -# Generate a synthetic dating profile from a description - -In this example we will see how we can use Outlines to generate synthetic data for a dating application. This example was originally contributed by [Vibhor Kumar](https://github.com/veezbo). - -```python -from dataclasses import dataclass -from enum import Enum - -import torch -import transformers -from pydantic import BaseModel, conlist, constr - -import outlines -``` - -## Defining the profile with Pydantic - -Here a dating profile will consist in a biography, a job, a list of interests and two question-answer pairs. The questions are written in advance by the team, and the users are asked to provide an answer: - -```python -class QuestionChoice(str, Enum): - A = "The key to my heart is" - B = "The first item on my bucket list is" - C = "Perks of dating me" - D = "Message me if you also love" - E = "People would describe me as" - F = "I can beat you in a game of" - -@dataclass -class QuestionAnswer: - question: QuestionChoice - answer: str -``` - -Users need to provide a short biography, with a minimum of 10 and a maximum of 300 characters. The application also limits job descriptions to 50 characters. In addition to the question-answer pairs, the user is required to provide a list of between 1 and 5 interests: - -```python -class DatingProfile(BaseModel): - bio: constr(str, min_length=10, max_length=300) - job: constr(str, max_lengt=50) - interests: conlist(str, min_length=1, max_length=5) # type: ignore - qna1: QuestionAnswer - qna2: QuestionAnswer -``` - -## Prompt template and examples - -We will ask the model to generate profiles from a high-level description: - -```python -@dataclass -class Example: - description: str - profile: DatingProfile -``` - -We will use Outlines' prompt templating abilities to generate the prompt for us. This help clearly separate the general prompting logic from what is specific to an example. - -```python - -@outlines.prompt -def dating_profile_prompt(description: str, examples: list[Example]): - """ - You are a world-renowned matchmaker who understands the modern dating - market. Your job is to generate dating app profiles for male clients - interested in women based on a provided description. The profiles should be - authentic, show off their strengths, and maximize their likelihood of - getting matches on dating apps. Here are some examples of past clients that - you have successfully created profiles for: - - {% for example in examples %} - Description: - {{ example.description }} - Profile: - {{ example.profile }} - {% endfor %} - - Here is the new client who you need to create a profile for: - Description: {{ description }} - Profile: - """ -``` - -We will provide the model with several few-shot examples: - -```python -samples: list[Example] = [ - Example( - description="I'm an author and former professional soccer player living in Seattle who publishes popular fiction books. A typical day for me starts by hanging out with my cat, drinking a coffee, and reading as much as I can in a few hours. Then, I'll prepare a quick smoothie before starting to write for a few hours, take a break with soccer or running a few miles, and finally meet friends for dinner at a new, hip restaurant in the evening. Sometimes we go axe-throwing afterwards, or play poker, or watch a comedy show, or visit a dive bar. On my vacations, I travel extensively to countries South America, Europe, and Asia, with the goal of visiting them all!", - profile=DatingProfile( - bio="Adventurer, dreamer, author, and soccer enthusiast. Life’s too short to waste time so I make the most of each day by exploring new places and playing with my friends on the pitch. What’s your favorite way to get out and have fun?", - job="Famous Soccer Player -> Famous Author", - interests=["Soccer", "Travel", "Friends", "Books", "Fluffy Animals"], - qna1=QuestionAnswer( - question=QuestionChoice.B, answer="swim in all seven oceans!" - ), - qna2=QuestionAnswer( - question=QuestionChoice.E, - answer="fun-loving, adventurous, and a little bit crazy", - ), - ), - ), - Example( - description="I run my company and build houses for a living. I'm a big fan of the outdoors and love to go hiking, camping, and fishing. I don't like video games, but do like to watch movies. My love language is home-cooked food, and I'm looking for someone who isn't afraid to get their hands dirty.", - profile=DatingProfile( - bio="If you're looking for a Montana man who loves to get outdoors and hunt, and who's in-tune with his masculinity then I'm your guy!", - job="House Construction Manager / Entrepreneur", - interests=["Hunting", "Hiking", "The outdoors", "Home-cooked food"], - qna1=QuestionAnswer(question=QuestionChoice.A, answer="food made at home"), - qna2=QuestionAnswer( - question=QuestionChoice.C, - answer="having a man in your life who can fix anything", - ), - ), - ), - Example( - description="I run my own Youtube channel with 10M subscribers. I love working with kids, and my audience skews pretty young too. In my free time, I play Fortnite and Roblox. I'm looking for someone who is also a gamer and likes to have fun. I'm learning Japanese in my free time as well as how to cook.", - profile=DatingProfile( - bio="Easy on the eyes (find me on Youtube!) and great with kids. What more do you need?", - job="Youtuber 10M+ subscribers", - interests=["Kids", "Gaming", "Japanese"], - qna1=QuestionAnswer(question=QuestionChoice.D, answer="anime and gaming!"), - qna2=QuestionAnswer(question=QuestionChoice.F, answer="Fortnite, gg ez"), - ), - ), -] -``` - -## Load the model - -We will use Mosaic's MPT-7B model (requires 13GB of GPU memory) which can fit on a single GPU with a reasonable context window. We initialize it with Outlines: - -```python -config = transformers.AutoConfig.from_pretrained( - "mosaicml/mpt-7b-8k-instruct", trust_remote_code=True -) -config.init_device = "meta" -model = outlines.models.transformers( - model_name="mosaicml/mpt-7b-8k-instruct", - device="cuda", - model_kwargs={ - "config": config, - "trust_remote_code": True, - "torch_dtype": torch.bfloat16, - "device_map": {"": 0}, - }, -) -``` - -## JSON-structured generation of profiles - -We will now generate a dating profile from a textual description of oneself: - -``` python -new_description = """I'm a laid-back lawyer who spends a lot of his free-time -gaming. I work in a corporate office, but ended up here after the start-up I -cofounded got acquired, so still play ping pong with my cool coworkers every -day. I have a bar at home where I make cocktails, which is great for -entertaining friends. I secretly like to wear suits and get a new one tailored -every few months. I also like weddings because I get to wear those suits, and -it's a good excuse for a date. I watch the latest series because I'm paying, -with my hard-earned money, for every streaming service.""" - -prompt = dating_profile_prompt(new_description, samples) -profile = outlines.generate.json(model, DatingProfile)(prompt) -parsed_profile = DatingProfile.model_validate_json(profile) -``` - -## Results - -Here are a couple of results: - -```json -{ - "bio": """I'm an ambitious lawyer with a casual and fashionable style. I love - games and sports, but my true passion is preparing refreshing cocktails at - home and dressing to the nines at weddings. I'm currently looking for a woman - to show a good time to and get a kiss on the opulent suit I just had made. - Send resume to this inbox.""", - "job": "Lawyer", - "interests": - [ - "Stylish guys", - "Gaming", - "Ping pong", - "Cocktails", - "Weddings" - ], - "qna1": - { - "question": "The first item on my bucket list is", - "answer": "be married and have a family." - }, - "qna2": - { - "question": "People would describe me as", - "answer": "charming, stylish, and funny." - } -} -``` - -```json -{ - "bio": """I’m a sexy lawyer with time on my hands. I love to game and - play ping pong, but the real reason you should swipe to the right - is because I look great in a suit. Who doesn’t love a man in a - suit? Just saying. Send me a message if you think it’s time to take - your dating life to the next level.""", - "job": "Lawyer", - "interests": - [ - "Gaming", - "Ping Pong", - "Tailored Suits", - "Weddings", - "Streaming Services" - ], - "qna1": - { - "question": "The first item on my bucket list is", - "answer": "simulate space but stay alive for as long as possible" - }, - "qna2": - { - "question": "People would describe me as", - "answer": "easy-going, a little nerdy but with a mature essence" - } -} -``` diff --git a/docs/cookbook/deploy-using-bentoml.md b/docs/cookbook/deploy-using-bentoml.md deleted file mode 100644 index 6bee7744..00000000 --- a/docs/cookbook/deploy-using-bentoml.md +++ /dev/null @@ -1,224 +0,0 @@ -# Run Outlines using BentoML - -[BentoML](https://github.com/bentoml/BentoML) is an open-source model serving library for building performant and scalable AI applications with Python. It comes with tools that you need for serving optimization, model packaging, and production deployment. - -In this guide, we will show you how to use BentoML to run programs written with Outlines on GPU locally and in [BentoCloud](https://www.bentoml.com/), an AI Inference Platform for enterprise AI teams. The example source code in this guide is also available in the [examples/bentoml/](https://github.com/outlines-dev/outlines/blob/main/examples/bentoml/) directory. - -## Import a model - -First we need to download an LLM (Mistral-7B-v0.1 in this example and you can use any other LLM) and import the model into BentoML's [Model Store](https://docs.bentoml.com/en/latest/guides/model-store.html). Let's install BentoML and other dependencies from PyPi (preferably in a virtual environment): - -```bash -pip install -r requirements.txt -``` - -Then save the code snippet below as `import_model.py` and run `python import_model.py`. - -**Note**: You need to accept related conditions on [Hugging Face](https://huggingface.co/mistralai/Mistral-7B-v0.1) first to gain access to Mistral-7B-v0.1. - -```python -import bentoml - -MODEL_ID = "mistralai/Mistral-7B-v0.1" -BENTO_MODEL_TAG = MODEL_ID.lower().replace("/", "--") - -def import_model(model_id, bento_model_tag): - - import torch - from transformers import AutoModelForCausalLM, AutoTokenizer - - tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) - model = AutoModelForCausalLM.from_pretrained( - MODEL_ID, - torch_dtype=torch.float16, - low_cpu_mem_usage=True, - ) - - with bentoml.models.create(bento_model_tag) as bento_model_ref: - tokenizer.save_pretrained(bento_model_ref.path) - model.save_pretrained(bento_model_ref.path) - - -if __name__ == "__main__": - import_model(MODEL_ID, BENTO_MODEL_TAG) -``` - -You can verify the download is successful by running: - -```bash -$ bentoml models list - -Tag Module Size Creation Time -mistralai--mistral-7b-v0.1:m7lmf5ac2cmubnnz 13.49 GiB 2024-04-25 06:52:39 -``` - -## Define a BentoML Service - -As the model is ready, we can define a [BentoML Service](https://docs.bentoml.com/en/latest/guides/services.html) to wrap the capabilities of the model. - -We will run the JSON-structured generation example [in the README](https://github.com/outlines-dev/outlines?tab=readme-ov-file#efficient-json-generation-following-a-json-schema), with the following schema: - -```python -DEFAULT_SCHEMA = """{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}""" -``` - -First, we need to define a BentoML service by decorating an ordinary class (`Outlines` here) with `@bentoml.service` decorator. We pass to this decorator some configuration and GPU on which we want this service to run in BentoCloud (here an L4 with 24GB memory): - -```python -import typing as t -import bentoml - -from import_model import BENTO_MODEL_TAG - -@bentoml.service( - traffic={ - "timeout": 300, - }, - resources={ - "gpu": 1, - "gpu_type": "nvidia-l4", - }, -) -class Outlines: - - bento_model_ref = bentoml.models.get(BENTO_MODEL_TAG) - - def __init__(self) -> None: - - import outlines - import torch - self.model = outlines.models.transformers( - self.bento_model_ref.path, - device="cuda", - model_kwargs={"torch_dtype": torch.float16}, - ) - - ... -``` - -We then need to define an HTTP endpoint using `@bentoml.api` to decorate the method `generate` of `Outlines` class: - -```python - ... - - @bentoml.api - async def generate( - self, - prompt: str = "Give me a character description.", - json_schema: t.Optional[str] = DEFAULT_SCHEMA, - ) -> t.Dict[str, t.Any]: - - import outlines - - generator = outlines.generate.json(self.model, json_schema) - character = generator(prompt) - - return character -``` - -Here `@bentoml.api` decorator defines `generate` as an HTTP endpoint that accepts a JSON request body with two fields: `prompt` and `json_schema` (optional, which allows HTTP clients to provide their own JSON schema). The type hints in the function signature will be used to validate incoming JSON requests. You can define as many HTTP endpoints as you want by using `@bentoml.api` to decorate other methods of `Outlines` class. - -Now you can save the above code to `service.py` (or use [this implementation](https://github.com/outlines-dev/outlines/blob/main/examples/bentoml/)), and run the code using the BentoML CLI. - -## Run locally for testing and debugging - -Then you can run a server locally by: - -```bash -bentoml serve . -``` - -The server is now active at . You can interact with it using the Swagger UI or in other different ways: - -
- -CURL - -```bash -curl -X 'POST' \ - 'http://localhost:3000/generate' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -d '{ - "prompt": "Give me a character description." -}' -``` - -
- -
- -Python client - -```python -import bentoml - -with bentoml.SyncHTTPClient("http://localhost:3000") as client: - response = client.generate( - prompt="Give me a character description" - ) - print(response) -``` - -
- -Expected output: - -```bash -{ - "name": "Aura", - "age": 15, - "armor": "plate", - "weapon": "sword", - "strength": 20 -} -``` - -## Deploy to BentoCloud - -After the Service is ready, you can deploy it to [BentoCloud](https://docs.bentoml.com/en/latest/bentocloud/get-started.html) for better management and scalability. [Sign up](https://cloud.bentoml.com/signup) if you haven't got a BentoCloud account. - -Make sure you have [logged in to BentoCloud](https://docs.bentoml.com/en/latest/bentocloud/how-tos/manage-access-token.html), then run the following command to deploy it. - -```bash -bentoml deploy . -``` - -Once the application is up and running on BentoCloud, you can access it via the exposed URL. - -**Note**: For custom deployment in your own infrastructure, use [BentoML to generate an OCI-compliant image](https://docs.bentoml.com/en/latest/guides/containerization.html). diff --git a/docs/cookbook/deploy-using-cerebrium.md b/docs/cookbook/deploy-using-cerebrium.md deleted file mode 100644 index 6fbaab39..00000000 --- a/docs/cookbook/deploy-using-cerebrium.md +++ /dev/null @@ -1,121 +0,0 @@ -# Run Outlines using Cerebrium - -[Cerebrium](https://www.cerebrium.ai/) is a serverless AI infrastructure platform that makes it easier for companies to build and deploy AI based applications. They offer Serverless GPU'sΒ with low cold start times with over 12 varieties of GPU chips that auto scale and you only pay for the compute you use. - -In this guide we will show you how you can use Cerebrium to run programs written with Outlines on GPUs in the cloud. - -# Setup Cerebrium - -First, we install Cerebrium and login to get authenticated. - -```bash -pip install cerebrium -cerebrium login -``` - -Then let us create our first project - -```bash -cerebrium init outlines-project -``` - -## Setup Environment and Hardware - -You set up your environment and hardware in the cerebrium.toml file that was created using the init function above. - -```toml -[cerebrium.deployment] -docker_base_image_url = "nvidia/cuda:12.1.1-runtime-ubuntu22.04" - -[cerebrium.hardware] -cpu = 2 -memory = 14.0 -gpu = "AMPERE A10" -gpu_count = 1 -provider = "aws" -region = "us-east-1" - -[cerebrium.dependencies.pip] -outline = "==0.0.37" -transformers = "==4.38.2" -datasets = "==2.18.0" -accelerate = "==0.27.2" -``` - -## Setup inference - -Running code in Cerebrium is like writing normal python with no special syntax. In a `main.py` file specify the following: - -```python -import outlines - - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct") - -schema = """{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}""" - -generator = outlines.generate.json(model, schema) -``` - -On first deploy, it will download the model and store it on disk therefore for subsequent calls it will load the model from disk. - -Every function in Cerebrium is callable through an API endpoint. Code at the top most layer (ie: not in a function) is instantiated only when the container is spun up the first time so for subsequent calls, it will simply run the code defined in the function you call. - -To deploy an API that creates a new character when called with a prompt you can add the following code to `main.py`: - -```python -def generate( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - - character = generator( - f"[INST]Give me a character description. Describe {prompt}.[/INST]" - ) - - return character -``` - - -## Run on the cloud - -```bash -cerebrium deploy -``` - -You will see your application deploy, install pip packages and download the model. Once completed it will output a CURL request you can use to call your endpoint. Just remember to end -the url with the function you would like to call - in this case /generate. You should see your response returned! diff --git a/docs/cookbook/deploy-using-modal.md b/docs/cookbook/deploy-using-modal.md deleted file mode 100644 index 835924d2..00000000 --- a/docs/cookbook/deploy-using-modal.md +++ /dev/null @@ -1,128 +0,0 @@ -# Run Outlines using Modal - -[Modal](https://modal.com/) is a serverless platform that allows you to easily run code on the cloud, including GPUs. It can come very handy for those of us who don't have a monster GPU at home and want to be able to quickly and easily provision, configure and orchestrate cloud infrastructure. - -In this guide we will show you how you can use Modal to run programs written with Outlines on GPU in the cloud. - -## Build the image - -First we need to define our container image. We download the Mistral-7B-v0.1 model from HuggingFace as part of the definition of the image so it only needs to be done once (you need to provide an [access token](https://huggingface.co/settings/tokens)) - -```python -from modal import Image, App, gpu - -app = App(name="outlines-app") - -outlines_image = Image.debian_slim(python_version="3.11").pip_install( - "outlines==0.0.37", - "transformers==4.38.2", - "datasets==2.18.0", - "accelerate==0.27.2", -) - -def import_model(): - import os - os.environ["HF_TOKEN"] = "YOUR_HUGGINGFACE_TOKEN" - import outlines - outlines.models.transformers("mistralai/Mistral-7B-Instruct-v0.2") - -outlines_image = outlines_image.run_function(import_model) -``` - -We will run the JSON-structured generation example [in the README](https://github.com/outlines-dev/outlines?tab=readme-ov-file#efficient-json-generation-following-a-json-schema), with the following schema: - -## Run inference - -```python -schema = """{ - "title": "Character", - "type": "object", - "properties": { - "name": { - "title": "Name", - "maxLength": 10, - "type": "string" - }, - "age": { - "title": "Age", - "type": "integer" - }, - "armor": {"$ref": "#/definitions/Armor"}, - "weapon": {"$ref": "#/definitions/Weapon"}, - "strength": { - "title": "Strength", - "type": "integer" - } - }, - "required": ["name", "age", "armor", "weapon", "strength"], - "definitions": { - "Armor": { - "title": "Armor", - "description": "An enumeration.", - "enum": ["leather", "chainmail", "plate"], - "type": "string" - }, - "Weapon": { - "title": "Weapon", - "description": "An enumeration.", - "enum": ["sword", "axe", "mace", "spear", "bow", "crossbow"], - "type": "string" - } - } -}""" -``` - -To make the inference work on Modal we need to wrap the corresponding function in a `@app.function` decorator. We pass to this decorator the image and GPU on which we want this function to run (here an A100 with 80GB memory): - -```python -@app.function(image=outlines_image, gpu=gpu.A100(size='80GB')) -def generate( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - import outlines - - model = outlines.models.transformers( - "mistralai/Mistral-7B-v0.1", device="cuda" - ) - - generator = outlines.generate.json(model, schema) - character = generator( - f"[INST]Give me a character description. Describe {prompt}.[/INST]" - ) - - print(character) -``` - -We then need to define a `local_entrypoint` to call our function `generate` remotely: - -```python -@app.local_entrypoint() -def main( - prompt: str = "Amiri, a 53 year old warrior woman with a sword and leather armor.", -): - generate.remote(prompt) -``` - -Here `@app.local_entrypoint()` decorator defines `main` as the function to start from locally when running the Modal CLI. You can save above code to `example.py` (or use [this implementation](https://github.com/outlines-dev/outlines/blob/main/examples/modal_example.py)). Let's now see how to run the code on the cloud using the Modal CLI. - -## Run on the cloud - -First install the Modal client from PyPi: - -```bash -pip install modal -``` - -You then need to obtain a token from Modal. To do so easily, run the following command: - -```bash -modal setup -``` - -Once that is set you can run inference on the cloud using: - -```bash -modal run example.py -``` - -You should see the Modal app initialize, and soon after see the result of the `print` function in your terminal. That's it! diff --git a/docs/cookbook/extraction.md b/docs/cookbook/extraction.md deleted file mode 100644 index 28317b6b..00000000 --- a/docs/cookbook/extraction.md +++ /dev/null @@ -1,87 +0,0 @@ -# Named entity extraction - -Named Entity Extraction is a fundamental problem in NLP. It involves identifying and categorizing named entities within a document: people, organization, dates, places, etc. It is usually the first step in a more complex NLP worklow. Here we will use the example of a pizza restaurant that receives orders via their website and need to identify the number and types of pizzas that are being ordered. - -Getting LLMs to output the extracted entities in a structured format can be challenging. In this tutorial we will see how we can use Outlines' JSON-structured generation to extract entities from a document and return them in a valid JSON data structure 100% of the time. - -As always, we start with initializing the model. We will be using a quantized version of Mistal-7B-v0.1 (we're GPU poor): - -```python -import outlines - -model = outlines.models.transformers("TheBloke/Mistral-7B-OpenOrca-AWQ", device="cuda") -``` - -And we will be using the following prompt template: - -```python -@outlines.prompt -def take_order(order): - """You are the owner of a pizza parlor. Customers \ - send you orders from which you need to extract: - - 1. The pizza that is ordered - 2. The number of pizzas - - # EXAMPLE - - ORDER: I would like one Margherita pizza - RESULT: {"pizza": "Margherita", "number": 1} - - # OUTPUT INSTRUCTIONS - - Answer in valid JSON. Here are the different objects relevant for the output: - - Order: - pizza (str): name of the pizza - number (int): number of pizzas - - Return a valid JSON of type "Order" - - # OUTPUT - - ORDER: {{ order }} - RESULT: """ -``` - -We now define our data model using Pydantic: - -```python -from enum import Enum -from pydantic import BaseModel - -class Pizza(str, Enum): - margherita = "Margherita" - pepperonni = "Pepperoni" - calzone = "Calzone" - -class Order(BaseModel): - pizza: Pizza - number: int -``` - -We can now define our generator and call it on several incoming orders: - -```python -orders = [ - "Hi! I would like to order two pepperonni pizzas and would like them in 30mins.", - "Is it possible to get 12 margheritas?" -] -prompts = [take_order(order) for order in orders] - -generator = outlines.generate.json(model, Order) - -results = generator(prompts) -print(results) -# [Order(pizza=, number=2), -# Order(pizza=, number=12)] -``` - -There are several ways you could improve this example: - -- Clients may order several types of pizzas. -- Clients may order drinks as well. -- If the pizza place has a delivery service we need to extract the client's address and phone number -- Clients may specify the time for which they want the pizza. We could then check against a queuing system and reply to them with the estimated delivery time. - -How would you change the Pydantic model to account for these use cases? diff --git a/docs/cookbook/images/chain_of_density.png b/docs/cookbook/images/chain_of_density.png deleted file mode 100644 index 61e01f40459e26f082fc90ea2964dcc4bd2d70c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515603 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%0D7R^3RH! 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%0ARcAEB?XJ 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

6W)yzg^ljS2>v=%r1t-(yVv8!5VYa=-R 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 z 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


I&R~go+_PhN3X5IeejFkny{nuHsS%A?S|_4yD0 zZA`r4v_}Cki8a_APY!@hhjbqE#R>UBtXxzu?`26tTUZ0E=N$~2`rY(%jk$hu6}3JB zd2cA(Ro!q)gYxcln641#u>rff$OM>W}w|@-X?QxDoFPBi7T~lmj@s!w0KTa z1BXR-$9HpRwL8pHIsgu_Ycc>8uQLwQ>sS`^KY$s4&~r`o+PBXSLphW9?Af7I=0&YV z2|(zTeF-+Q2`fOLTT&L}lf7*N@Jb1wJd-KMX6t${gn!Qj5+)j

ajw)@VBfas>Kh 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 G1OE$hgk92 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\n" - "You are a world class AI model who answers questions in JSON " - f"Here's the json schema you must adhere to:\n\n{schema}\n<|im_end|>\n" - "<|im_start|>user\n" - + user_prompt - + "<|im_end|>" - + "\n<|im_start|>assistant\n" - "" - ) -``` - -For a given user prompt, for example: - -```python -user_prompt = "Alice loves Bob and she hates Charlie." -``` - -We can use `generate.json` by passing the Pydantic class we previously defined, and call the generator with the Hermes prompt: - -```python -from outlines import generate, models - -model = models.LlamaCpp(llm) -generator = generate.json(model, KnowledgeGraph) -prompt = generate_hermes_prompt(user_prompt) -response = generator(prompt, max_tokens=1024, temperature=0, seed=42) -``` - -We obtain the nodes and edges of the knowledge graph: - -```python -print(response.nodes) -print(response.edges) -# [Node(id=1, label='Alice', property='Person'), -# Node(id=2, label='Bob', property='Person'), -# Node(id=3, label='Charlie', property='Person')] -# [Edge(source=1, target=2, label='love', property='Relationship'), -# Edge(source=1, target=3, label='hate', property='Relationship')] -``` - -## (Optional) Visualizing the Knowledge Graph - -We can use the [Graphviz library](https://graphviz.readthedocs.io/en/stable/) to visualize the generated knowledge graph. For detailed installation instructions, see [here](https://graphviz.readthedocs.io/en/stable/#installation). - -```python -from graphviz import Digraph - -dot = Digraph() -for node in response.nodes: - dot.node(str(node.id), node.label, shape='circle', width='1', height='1') -for edge in response.edges: - dot.edge(str(edge.source), str(edge.target), label=edge.label) - -dot.render('knowledge-graph.gv', view=True) -``` - -![Image of the Extracted Knowledge Graph](./images/knowledge-graph-extraction.png) - -This example was originally contributed by [Alonso Silva](https://github.com/alonsosilvaallende). diff --git a/docs/cookbook/models_playing_chess.md b/docs/cookbook/models_playing_chess.md deleted file mode 100644 index a0df2eb2..00000000 --- a/docs/cookbook/models_playing_chess.md +++ /dev/null @@ -1,88 +0,0 @@ -# Large language models playing chess - -In this example we will make a Phi-2 model play chess against itself. On its own the model easily generates invalid moves, so we will give it a little help. At each step we will generate a regex that only matches valid move, and use it to help the model only generating valid moves. - -## The chessboard - -The game will be played on a standard checkboard. We will use the `chess` [library](https://github.com/niklasf/python-chess) to track the opponents' moves, and check that the moves are valid. - -```python -%pip install outlines -q -%pip install chess -q -%pip install transformers accelerate einops -q - -import chess - -board = chess.Board("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1") -``` - -## The opponents - -Phi-2 will be playing against itself: - -```python -from outlines import models - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") - -``` - -## A little help for the language model - -To make sure Phi-2 generates valid chess moves we will use Outline's regex-structured generation. We define a function that takes the current state of the board and returns a regex that matches all possible legal moves: - -```python -import re - -def legal_moves_regex(board): - """Build a regex that only matches valid moves.""" - legal_moves = list(board.legal_moves) - legal_modes_str = [board.san(move) for move in legal_moves] - legal_modes_str = [re.sub(r"[+#]", "", move) for move in legal_modes_str] - regex_pattern = "|".join(re.escape(move) for move in legal_modes_str) - regex_pattern = f"{regex_pattern}" - return regex_pattern -``` - -## Prompting the language model - -The prompt corresponds to the current state of the board, so we start with: - -```python -prompt = "Let's play Chess. Moves: " - -``` - -We update the prompt at each step so it reflects the state of the board after the previous move. - -## Let's play - -```python -from outlines import generate - -board_state = " " -turn_number = 0 -while not board.is_game_over(): - regex_pattern = legal_moves_regex(board) - structured = generate.regex(model, regex_pattern)(prompt + board_state) - move = board.parse_san(structured) - - if turn_number % 2 == 0 : # It's White's turn - board_state += board.san(move) + " " - else: - board_state += board.san(move) + " " + str(turn_number) + "." - - turn_number += 1 - - board.push(move) - - print(board_state) -``` - -Interestingly enough, Phi-2 hates capturing. - -```pgn - e4 e5 1.Nf3 Ne7 3.b4 Nf5 5.Nc3 Ne7 7.Bb5 a6 9.Na4 b6 11.c3 Nec6 13.c4 a5 15.d4 Qg5 17.Nd2 Bb7 19.dxe5 -``` - -*This example was originally authored by [@903124S](https://x.com/903124S) in [this gist](https://gist.github.com/903124/cfbefa24da95e2316e0d5e8ef8ed360d).* diff --git a/docs/cookbook/qa-with-citations.md b/docs/cookbook/qa-with-citations.md deleted file mode 100644 index 79a2214c..00000000 --- a/docs/cookbook/qa-with-citations.md +++ /dev/null @@ -1,255 +0,0 @@ -# Generate Synthetic Data and Q&A with Citations - -This tutorial is adapted from the [instructor-ollama notebook](https://github.com/alonsosilvaallende/Hermes-Function-Calling/blob/main/examples/instructor_ollama.ipynb). We start with a simple example to generate synthetic data and then we approach the problem of question answering by providing citations. - -We will use [llama.cpp](https://github.com/ggerganov/llama.cpp) using the [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) library. Outlines supports llama-cpp-python, but we need to install it ourselves: - -```bash -pip install llama-cpp-python -``` - -We download the model weights by passing the name of the repository on the HuggingFace Hub, and the filenames (or glob pattern): -```python -import llama_cpp -from outlines import generate, models - -model = models.llamacpp("NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF", - "Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False) -``` - -??? note "(Optional) Store the model weights in a custom folder" - - By default the model weights are downloaded to the hub cache but if we want so store the weights in a custom folder, we pull a quantized GGUF model [Hermes-2-Pro-Llama-3-8B](https://huggingface.co/NousResearch/Hermes-2-Theta-Llama-3-8B-GGUF) by [NousResearch](https://nousresearch.com/) from [HuggingFace](https://huggingface.co/): - - ```bash - wget https://hf.co/NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF/resolve/main/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf - ``` - - We initialize the model: - - ```python - import llama_cpp - from llama_cpp import Llama - from outlines import generate, models - - llm = Llama( - "/path/to/model/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False - ) - ``` - -## Generate Synthetic Data - -We first need to define our Pydantic class for a user: - -```python -from pydantic import BaseModel, Field - -class UserDetail(BaseModel): - id: int = Field(..., description="Unique identifier") # so the model keeps track of the number of users - first_name: str - last_name: str - age: int -``` - -We then define a Pydantic class for a list of users: - -```python -from typing import List - -class Users(BaseModel): - users: List[UserDetail] -``` - -We can use a `generate.json` by passing this Pydantic class we just defined, and call the generator: - -```python -model = models.LlamaCpp(llm) -generator = generate.json(model, Users) -response = generator("Create 5 fake users", max_tokens=1024, temperature=0, seed=42) -print(response.users) -# [UserDetail(id=1, first_name='John', last_name='Doe', age=25), -# UserDetail(id=2, first_name='Jane', last_name='Doe', age=30), -# UserDetail(id=3, first_name='Bob', last_name='Smith', age=40), -# UserDetail(id=4, first_name='Alice', last_name='Smith', age=35), -# UserDetail(id=5, first_name='John', last_name='Smith', age=20)] -``` - -```python -for user in response.users: - print(user.first_name) - print(user.last_name) - print(user.age) - print(#####) -# John -# Doe -# 25 -# ##### -# Jane -# Doe -# 30 -# ##### -# Bob -# Smith -# 40 -# ##### -# Alice -# Smith -# 35 -# ##### -# John -# Smith -# 20 -# ##### -``` - -## QA with Citations - -We first need to define our Pydantic class for QA with citations: - -```python -from typing import List -from pydantic import BaseModel - -class QuestionAnswer(BaseModel): - question: str - answer: str - citations: List[str] - -schema = QuestionAnswer.model_json_schema() -``` - -We then need to adapt our prompt to the [Hermes prompt format for JSON schema](https://github.com/NousResearch/Hermes-Function-Calling?tab=readme-ov-file#prompt-format-for-json-mode--structured-outputs): - -```python -def generate_hermes_prompt(question, context, schema=schema): - return ( - "<|im_start|>system\n" - "You are a world class AI model who answers questions in JSON with correct and exact citations " - "extracted from the `Context`. " - f"Here's the json schema you must adhere to:\n\n{schema}\n<|im_end|>\n" - "<|im_start|>user\n" - + "`Context`: " - + context - + "\n`Question`: " - + question + "<|im_end|>" - + "\n<|im_start|>assistant\n" - "" - ) -``` - -We can use `generate.json` by passing the Pydantic class we previously defined, and call the generator with Hermes prompt: - -```python -question = "What did the author do during college?" -context = """ -My name is Jason Liu, and I grew up in Toronto Canada but I was born in China. -I went to an arts high school but in university I studied Computational Mathematics and physics. -As part of coop I worked at many companies including Stitchfix, Facebook. -I also started the Data Science club at the University of Waterloo and I was the president of the club for 2 years. -""" -generator = generate.json(model, QuestionAnswer) -prompt = generate_hermes_prompt(question, context) -response = generator(prompt, max_tokens=1024, temperature=0, seed=42) -print(response) -# QuestionAnswer(question='What did the author do during college?', answer='The author studied Computational Mathematics and physics in university and was also involved in starting the Data Science club, serving as its president for 2 years.', citations=['I went to an arts high school but in university I studied Computational Mathematics and physics.', 'I also started the Data Science club at the University of Waterloo and I was the president of the club for 2 years.']) -``` - -We can do the same for a list of question-context pairs: - -```python -question1 = "Where was John born?" -context1 = """ -John Doe is a software engineer who was born in New York, USA. -He studied Computer Science at the Massachusetts Institute of Technology. -During his studies, he interned at Google and Microsoft. -He also founded the Artificial Intelligence club at his university and served as its president for three years. -""" - -question2 = "What did Emily study in university?" -context2 = """ -Emily Smith is a data scientist from London, England. -She attended the University of Cambridge where she studied Statistics and Machine Learning. -She interned at IBM and Amazon during her summer breaks. -Emily was also the head of the Women in Tech society at her university. -""" - -question3 = "Which companies did Robert intern at?" -context3 = """ -Robert Johnson, originally from Sydney, Australia, is a renowned cybersecurity expert. -He studied Information Systems at the University of Melbourne. -Robert interned at several cybersecurity firms including NortonLifeLock and McAfee. -He was also the leader of the Cybersecurity club at his university. -""" - -question4 = "What club did Alice start at her university?" -context4 = """ -Alice Williams, a native of Dublin, Ireland, is a successful web developer. -She studied Software Engineering at Trinity College Dublin. -Alice interned at several tech companies including Shopify and Squarespace. -She started the Web Development club at her university and was its president for two years. -""" - -question5 = "What did Michael study in high school?" -context5 = """ -Michael Brown is a game developer from Tokyo, Japan. -He attended a specialized high school where he studied Game Design. -He later attended the University of Tokyo where he studied Computer Science. -Michael interned at Sony and Nintendo during his university years. -He also started the Game Developers club at his university. -""" - -for question, context in [ - (question1, context1), - (question2, context2), - (question3, context3), - (question4, context4), - (question5, context5), -]: - final_prompt = my_final_prompt(question, context) - generator = generate.json(model, QuestionAnswer) - response = generator(final_prompt, max_tokens=1024, temperature=0, seed=42) - display(question) - display(response.answer) - display(response.citations) - print("\n\n") - -# 'Where was John born?' -# 'John Doe was born in New York, USA.' -# ['John Doe is a software engineer who was born in New York, USA.'] -# -# -# 'What did Emily study in university?' -# 'Emily studied Statistics and Machine Learning in university.' -# ['She attended the University of Cambridge where she studied Statistics and Machine Learning.'] -# -# -# 'Which companies did Robert intern at?' -# 'Robert interned at NortonLifeLock and McAfee.' -# ['Robert Johnson, originally from Sydney, Australia, is a renowned cybersecurity expert. He interned at several cybersecurity firms including NortonLifeLock and McAfee.'] -# -# -# 'What club did Alice start at her university?' -# 'Alice started the Web Development club at her university.' -# ['Alice Williams, a native of Dublin, Ireland, is a successful web developer. She started the Web Development club at her university and was its president for two years.'] -# -# -# 'What did Michael study in high school?' -# 'Michael studied Game Design in high school.' -# ['Michael Brown is a game developer from Tokyo, Japan. He attended a specialized high school where he studied Game Design.'] -``` - -This example was originally contributed by [Alonso Silva](https://github.com/alonsosilvaallende). diff --git a/docs/cookbook/react_agent.md b/docs/cookbook/react_agent.md deleted file mode 100644 index ca4829d5..00000000 --- a/docs/cookbook/react_agent.md +++ /dev/null @@ -1,273 +0,0 @@ -# ReAct Agent - -This example shows how to use [outlines](https://outlines-dev.github.io/outlines/) to build your own agent with open weights local models and structured outputs. It is inspired by the blog post [A simple Python implementation of the ReAct pattern for LLMs](https://til.simonwillison.net/llms/python-react-pattern) by [Simon Willison](https://simonwillison.net/). - -The ReAct pattern (for Reason+Act) is described in the paper [ReAct: Synergizing Reasoning and Acting in Language Models](https://arxiv.org/abs/2210.03629). It's a pattern where you implement additional actions that an LLM can take - searching Wikipedia or running calculations for example - and then teach it how to request the execution of those actions, and then feed their results back into the LLM. - -Additionally, we give the LLM the possibility of using a scratchpad described in the paper [Show Your Work: Scratchpads for Intermediate Computation with Language Models](https://arxiv.org/abs/2112.00114) which improves the ability of LLMs to perform multi-step computations. - -We use [llama.cpp](https://github.com/ggerganov/llama.cpp) using the [llama-cpp-python](https://github.com/abetlen/llama-cpp-python) library. Outlines supports llama-cpp-python, but we need to install it ourselves: - -```bash -pip install llama-cpp-python -``` - -We download the model weights by passing the name of the repository on the HuggingFace Hub, and the filenames (or glob pattern): -```python -import llama_cpp -from outlines import generate, models - -model = models.llamacpp("NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF", - "Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False) -``` - -??? note "(Optional) Store the model weights in a custom folder" - - By default the model weights are downloaded to the hub cache but if we want so store the weights in a custom folder, we pull a quantized GGUF model [Hermes-2-Pro-Llama-3-8B](https://huggingface.co/NousResearch/Hermes-2-Theta-Llama-3-8B-GGUF) by [NousResearch](https://nousresearch.com/) from [HuggingFace](https://huggingface.co/): - - ```bash - wget https://hf.co/NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF/resolve/main/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf - ``` - - We initialize the model: - - ```python - import llama_cpp - from llama_cpp import Llama - from outlines import generate, models - - llm = Llama( - "/path/to/model/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf", - tokenizer=llama_cpp.llama_tokenizer.LlamaHFTokenizer.from_pretrained( - "NousResearch/Hermes-2-Pro-Llama-3-8B" - ), - n_gpu_layers=-1, - flash_attn=True, - n_ctx=8192, - verbose=False - ) - ``` - -## Build a ReAct agent - -In this example, we use two tools: - -- wikipedia: \ - search Wikipedia and returns the snippet of the first result -- calculate: \ - evaluate an expression using Python's eval() function - -```python -import httpx - -def wikipedia(q): - return httpx.get("https://en.wikipedia.org/w/api.php", params={ - "action": "query", - "list": "search", - "srsearch": q, - "format": "json" - }).json()["query"]["search"][0]["snippet"] - - -def calculate(numexp): - return eval(numexp) -``` - -We define the logic of the agent through a Pydantic class. First, we want the LLM to decide only between the two previously defined tools: - -```python -from enum import Enum - -class Action(str, Enum): - wikipedia = "wikipedia" - calculate = "calculate" -``` - -Our agent will loop through Thought and Action. We explicitly give the Action Input field so it doesn't forget to add the arguments of the Action. We also add a scratchpad (optional). - -```python -from pydantic import BaseModel, Field - -class Reason_and_Act(BaseModel): - Scratchpad: str = Field(..., description="Information from the Observation useful to answer the question") - Thought: str = Field(..., description="It describes your thoughts about the question you have been asked") - Action: Action - Action_Input: str = Field(..., description="The arguments of the Action.") -``` - -Our agent will reach a Final Answer. We also add a scratchpad (optional). - -```python -class Final_Answer(BaseModel): - Scratchpad: str = Field(..., description="Information from the Observation useful to answer the question") - Final_Answer: str = Field(..., description="Answer to the question grounded on the Observation") -``` - -Our agent will decide when it has reached a Final Answer and therefore to stop the loop of Thought and Action. - -```python -from typing import Union - -class Decision(BaseModel): - Decision: Union[Reason_and_Act, Final_Answer] -``` - -We could generate a response using the json schema but we will use the regex and check that everything is working as expected: - -```python -from outlines.integrations.utils import convert_json_schema_to_str -from outlines.fsm.json_schema import build_regex_from_schema - -json_schema = Decision.model_json_schema() -schema_str = convert_json_schema_to_str(json_schema=json_schema) -regex_str = build_regex_from_schema(schema_str) -print(regex_str) -# '\\{[ ]?"Decision"[ ]?:[ ]?(\\{[ ]?"Scratchpad"[ ]?:[ ]?"([^"\\\\\\x00-\\x1F\\x7F-\\x9F]|\\\\["\\\\])*"[ ]?,[ ]?"Thought"[ ]?:[ ]?"([^"\\\\\\x00-\\x1F\\x7F-\\x9F]|\\\\["\\\\])*"[ ]?,[ ]?"Action"[ ]?:[ ]?("wikipedia"|"calculate")[ ]?,[ ]?"Action_Input"[ ]?:[ ]?"([^"\\\\\\x00-\\x1F\\x7F-\\x9F]|\\\\["\\\\])*"[ ]?\\}|\\{[ ]?"Scratchpad"[ ]?:[ ]?"([^"\\\\\\x00-\\x1F\\x7F-\\x9F]|\\\\["\\\\])*"[ ]?,[ ]?"Final_Answer"[ ]?:[ ]?"([^"\\\\\\x00-\\x1F\\x7F-\\x9F]|\\\\["\\\\])*"[ ]?\\})[ ]?\\}' -``` - -We then need to adapt our prompt to the [Hermes prompt format for JSON schema](https://github.com/NousResearch/Hermes-Function-Calling?tab=readme-ov-file#prompt-format-for-json-mode--structured-outputs) and explain the agent logic: - -```python -import datetime - -def generate_hermes_prompt(question, schema=""): - return ( - "<|im_start|>system\n" - "You are a world class AI model who answers questions in JSON with correct Pydantic schema. " - f"Here's the json schema you must adhere to:\n\n{schema}\n\n" - "Today is " + datetime.datetime.today().strftime('%Y-%m-%d') + ".\n" + - "You run in a loop of Scratchpad, Thought, Action, Action Input, PAUSE, Observation. " - "At the end of the loop you output a Final Answer. " - "Use Scratchpad to store the information from the Observation useful to answer the question " - "Use Thought to describe your thoughts about the question you have been asked " - "and reflect carefully about the Observation if it exists. " - "Use Action to run one of the actions available to you. " - "Use Action Input to input the arguments of the selected action - then return PAUSE. " - "Observation will be the result of running those actions. " - "Your available actions are:\n" - "calculate:\n" - "e.g. calulate: 4**2 / 3\n" - "Runs a calculation and returns the number - uses Python so be sure to use floating point syntax if necessary\n" - "wikipedia:\n" - "e.g. wikipedia: Django\n" - "Returns a summary from searching Wikipedia\n" - "DO NOT TRY TO GUESS THE ANSWER. Begin! <|im_end|>" - "\n<|im_start|>user\n" + question + "<|im_end|>" - "\n<|im_start|>assistant\n" - ) -``` - -We define a ChatBot class - -```python -class ChatBot: - def __init__(self, prompt=""): - self.prompt = prompt - - def __call__(self, user_prompt): - self.prompt += user_prompt - result = self.execute() - return result - - def execute(self): - generator = generate.regex(model, regex_str) - result = generator(self.prompt, max_tokens=1024, temperature=0, seed=42) - return result -``` - -We define a query function: - -```python -import json - -def query(question, max_turns=5): - i = 0 - next_prompt = ( - "\n<|im_start|>user\n" + question + "<|im_end|>" - "\n<|im_start|>assistant\n" - ) - previous_actions = [] - while i < max_turns: - i += 1 - prompt = generate_hermes_prompt(question=question, schema=Decision.model_json_schema()) - bot = ChatBot(prompt=prompt) - result = bot(next_prompt) - json_result = json.loads(result)['Decision'] - if "Final_Answer" not in list(json_result.keys()): - scratchpad = json_result['Scratchpad'] if i == 0 else "" - thought = json_result['Thought'] - action = json_result['Action'] - action_input = json_result['Action_Input'] - print(f"\x1b[34m Scratchpad: {scratchpad} \x1b[0m") - print(f"\x1b[34m Thought: {thought} \x1b[0m") - print(f"\x1b[36m -- running {action}: {str(action_input)}\x1b[0m") - if action + ": " + str(action_input) in previous_actions: - observation = "You already run that action. **TRY A DIFFERENT ACTION INPUT.**" - else: - if action=="calculate": - try: - observation = eval(str(action_input)) - except Exception as e: - observation = f"{e}" - elif action=="wikipedia": - try: - observation = wikipedia(str(action_input)) - except Exception as e: - observation = f"{e}" - print() - print(f"\x1b[33m Observation: {observation} \x1b[0m") - print() - previous_actions.append(action + ": " + str(action_input)) - next_prompt += ( - "\nScratchpad: " + scratchpad + - "\nThought: " + thought + - "\nAction: " + action + - "\nAction Input: " + action_input + - "\nObservation: " + str(observation) - ) - else: - scratchpad = json_result["Scratchpad"] - final_answer = json_result["Final_Answer"] - print(f"\x1b[34m Scratchpad: {scratchpad} \x1b[0m") - print(f"\x1b[34m Final Answer: {final_answer} \x1b[0m") - return final_answer - print(f"\nFinal Answer: I am sorry, but I am unable to answer your question. Please provide more information or a different question.") - return "No answer found" -``` - -We can now test our ReAct agent: - -```python -print(query("What's 2 to the power of 10?")) -# Scratchpad: -# Thought: I need to perform a mathematical calculation to find the result of 2 to the power of 10. -# -- running calculate: 2**10 -# -# Observation: 1024 -# -# Scratchpad: 2 to the power of 10 is 1024. -# Final Answer: 2 to the power of 10 is 1024. -# 2 to the power of 10 is 1024. -``` - -```python -print(query("What does England share borders with?")) -# Scratchpad: -# Thought: To answer this question, I will use the 'wikipedia' action to gather information about England's geographical location and its borders. -# -- running wikipedia: England borders -# -# Observation: Anglo-Scottish border (Scottish Gaelic: Crìochan Anglo-Albannach) is an internal border of the United Kingdom separating Scotland and England which runs for -# -# Scratchpad: Anglo-Scottish border (Scottish Gaelic: Crìochan Anglo-Albannach) is an internal border of the United Kingdom separating Scotland and England which runs for -# Final Answer: England shares a border with Scotland. -# England shares a border with Scotland. -``` - -As mentioned in Simon's blog post, this is not a very robust implementation at all and there's a ton of room for improvement. But it is lovely how simple it is with a few lines of Python to make these extra capabilities available to the LLM. And now you can run it locally with an open weights LLM. - -This example was originally contributed by [Alonso Silva](https://github.com/alonsosilvaallende). diff --git a/docs/cookbook/simtom.md b/docs/cookbook/simtom.md deleted file mode 100644 index aa96005b..00000000 --- a/docs/cookbook/simtom.md +++ /dev/null @@ -1,129 +0,0 @@ -# Build perspective-taking agents with SimToM - -Prompting strategies like Chain-of-Thought (CoT) can improve LLMs' reasoning capabilities. However, they underwhelm in tasks that require keeping track of inconsistent world states. [SimToM](https://arxiv.org/abs/2311.10227) proposes a simple, two-stage prompting framework for LLMs inspired by Simulation Theory. The authors showed that this approach outperforms zero-shot prompting and CoT on ToMI and BigToM, two benchmarks with Theory of Mind questions. - -In this example, we will implement SimToM with a few lines of code using Outlines' prompt templating and structured generation capabilities. - -## How SimToM works - -SimToM calls an LLM with two consecutive prompts: - -1. **Perspective-taking**: The first prompt receives a `story` and a `character`. The goal is to understand the situation based on the character's point of view and filter out the rest of the story. -2. **Question-Answering**: The second prompt receives the character's point of view from the previous step and tasks the LLM to answer a question using that context. - -![Figure 2 in the paper](./images/simtom.png) - -## Outlines implementation - -To implement SimToM with Outlines, we will need to: - -1. Write the prompts with [prompt functions](https://outlines-dev.github.io/outlines/reference/prompting/). -2. Define the JSON object each prompt will return using Pydantic. -3. Generate responses with a Mistral model using the [transformers integration](https://outlines-dev.github.io/outlines/reference/models/transformers/). - -Let's dive into it! - -### Using Prompt Functions - -With Outlines, you can write your prompts as Python functions by adding the `@outlines.prompt` decorator. The prompt template is contained in their docstring, and their arguments correspond to variables used in the prompt. - -The authors have shared their code, prompts and data in [this GitHub repository](https://github.com/shawnsihyunlee/simulatedtom). Below, we define in Outlines the prompts they used for the ToMI dataset: - -```python -import outlines - - -@outlines.prompt -def perspective_taking(story: str, character: str) -> None: - """[INST] The following is a sequence of events about some characters, that takes place in multiple locations. - Your job is to output only the events that the specified character, {{character}}, knows about. - - Here are a few rules: - 1. A character knows about all events that they do. - 2. If a character is in a certain room/location, that character knows about all other events that happens in the room. This includes other characters leaving or exiting the location, the locations of objects in that location, and whether somebody moves an object to another place. - 3. If a character leaves a location, and is NOT in that location, they no longer know about any events that happen within that location. However, they can re-enter the location. - - Story: {{story}} - What events does {{character}} know about? Only output the events according to the above rules, do not provide an explanation. [/INST]""" # noqa - -@outlines.prompt -def simulation(events: list, name: str, question: str) -> None: - """[INST] {% for event in events %} - {{event}} - {% endfor %} - You are {{name}}. - Based on the above information, answer the following question: - {{question}} - You must choose one of the above choices, do not say there is not enough information. Answer with a single word, do not output anything else. [/INST]""" # noqa -``` - -### JSON Structured Generation - -Outlines guarantees that the LLM will return a valid JSON object, which we can specify as a Pydantic model. - -We will need two Pydantic models for SimToM, one for each prompt: - -```python -from pydantic import BaseModel, Field -from typing import List - - -class PerspectiveTaking(BaseModel): - """This is for the first prompt.""" - character: str = Field(description="The character we extract the events for.") - events: List[str] = Field(description="All events that the character knows about.") - - -class Simulation(BaseModel): - """This is for the second prompt.""" - answer: str -``` - -### Calling an LLM - -Let's try SimToM with an example from the ToMI dataset: - -```python -story = """ -1 Aria entered the front_yard. -2 Aiden entered the front_yard. -3 The grapefruit is in the green_bucket. -4 Aria moved the grapefruit to the blue_container. -5 Aiden exited the front_yard. -6 Noah entered the playroom. -""" -question = "7 Where was the grapefruit at the beginning?" -character = "Aria" -``` - -We load `Mistral-7B-Instruct-v0.3`, create the prompt using the template we defined earlier, and generate a structured response. As a reminder, the goal of the first call is to get all the events a character, `Aria`, knows about. - -```python -# Load an LLM from Hugging Face -MODEL_NAME = "mistral-community/Mistral-7B-Instruct-v0.3" -model = outlines.models.transformers(MODEL_NAME, device="cuda") - -perspective_prompt = perspective_taking(story=story, character=character) - -# Call Mistral 7B with the first prompt -generator = outlines.generate.json(model, PerspectiveTaking) -perspective = generator(perspective_prompt) - -print(perspective.model_dump()) -# {'character': 'Aria', 'events': ['1 Aria entered the front_yard.', '3 The grapefruit is in the green_bucket.', '4 Aria moved the grapefruit to the blue_container.']} -``` - -Not bad! We will now generate the second prompt with those events. - -```python -sim_prompt = simulation(events=perspective.events, name=character, question=question) - -# Call Mistral 7B with the second prompt -generator = outlines.generate.json(model, Simulation) -result = generator(sim_prompt) - -print(result.model_dump()) -# {'answer': 'green_bucket'} -``` - -And this is it! SimToM could be useful in agentic workflows, where agents must act based on what they know, not all available information. One caveat of SimToM is that the perspective-taking step may remove important information, leading to wrong results. As the authors note in their paper, it can feature as a simple and effective baseline for evaluating LLMs on Theory of Mind reasoning tasks. diff --git a/docs/cookbook/structured_generation_workflow.md b/docs/cookbook/structured_generation_workflow.md deleted file mode 100644 index b9d7c28a..00000000 --- a/docs/cookbook/structured_generation_workflow.md +++ /dev/null @@ -1,215 +0,0 @@ -# Structured Generation Workflow: Generating Synthetic Phone Numbers - -This is a condensed version of [Coding for Structured Generation with LLMs](https://blog.dottxt.co/coding-for-structured-generation.html). - -For this example we're going to be building an LLM program to generate **synthetic data** in the form of realistic looking phone numbers for Washington State. Using an LLM for this task *is a bit overkill* since we could just as easily accomplish this -with a tool like [Faker](https://fakerjs.dev/), but this example still serves as a useful way to demonstrate a workflow for using structured generation. - -## Unstructured approach - -Before diving into how to use structure generation for this task let's start with an unstructured example. We begin by loading our model: - -```python -import outlines - -model_name = 'microsoft/Phi-3-mini-4k-instruct' -model = outlines.models.transformers(model_name) -``` - -Next we need a prompt for this model. Since we're focusing on structured generation, we won't be engaging in any form of "prompt hacking" and will be leaving this prompt untouched for the rest of this example. - -```python -tokenizer = AutoTokenizer.from_pretrained(model_name) - -messages_phone = [ - {"role": "user", "content": """ - Please generate a realistic phone number for Washington State in the following format - - (555) 555-5555 - - """} -] - -# This allows us to properly format our prompt for -# Phi-3 Mini's 'Instruct' interface. -prompt_phone = tokenizer.apply_chat_template(messages_phone, tokenize=False) -``` - -With our prompt ready we can now generate 10 example phone numbers - -```python -phone_generator_unstruct = outlines.generate.text(model) -for _ in range(10): - print(phone_generator_unstruct(prompt_phone,max_tokens=12)) -``` - -> I'd be happy to help you generate a realistic phone\ -I cannot generate a real phone number as I'm just\ -I'm an AI and don't have the ability\ -Sure! Here is a randomly generated phone number in the format\ -Here's a phone number that fits the format for a\ -In Washington State, phone numbers typically have a three-dig\ -Here are a few examples of phone numbers that could be considered\ -I'd be happy to help generate a realistic phone number\ -I'd be happy to help you generate a random phone\ -Based on the format you provided, a realistic phone number for\ - -As we can see, none of these outputs are even phone numbers! - -Let's see if we can improve this using structured generation. - -## The Structured Generation Workflow - -In order to solve this problem we're going to introduce a *Structured Generation Workflow* outlined in this image: - -!["Visual of Structured Generation Workflow"](./images/coding_structure_diagram.png) - -Let's step through this: - -### Real example - -We start with a real example phone number, in this case for the Seattle Public Library, that we can use to verify the structure we are creating. - -```python -phone_number = "(206) 386-4636" -``` - -For a simple example like this, we'll just be using a single phone number, for more complex examples it can be helpful to have more examples. - -### Draft Structure - -The next step in the process is for use to define a simple regex that we feel correctly models our real data. - -```python -phone_regex_1 = r'\([0-9]{3}\) [0-9]{3}-[0-9]{4}' -``` - -Next we need to validate this regex against our real data. - -### Validate by matching examples - -Whenever writing non-trivial code with structured generation it is *essential* that you first validate the code against your real data example(s). - -We'll start with a simple method of validation: just checking that our regex matches the data. - -``` -import re -re.match(phone_regex_1, phone_number) - -# - -``` - -Now that we have a match, we can move on to generating structured output! - -### Generate Structure - -We're ready to see if structured generation can make an improvement over our initial unstructured approach: - -```python -phone_generator_v1 = outlines.generate.regex(model, phone_regex_1) -for _ in range(10): - print(phone_generator_v1(prompt_phone)) -``` -> (206) 555-1234\ -(206) 555-1234\ -(206) 555-1234\ -(206) 555-1234\ -(206) 555-1234\ -(206) 555-1234\ -(206) 123-4567\ -(206) 555-1234\ -(206) 555-1234\ -(206) 555-1234 - -At least we have phone numbers! But I think we can do better! - -### Inspect output - -In this case the model *did* create phone numbers and, impressively, got the area code correct. So using structured generation did improve things. However these numbers are pretty boring. Let's improve that structure! - -## Iteration - -We've walked through the loop once, so we can go quickly now through each iteration. - -We start by improving our structure: - -```python -phone_regex_2 = r'\([0-9]{3}\) [2-46-9]{3}-[02-9]{4}' -``` - -Before rushing to another round of generation, let's validate this new regex. We'll add just a bit more sophistication over our last check: - -```python -re.match(phone_regex_2, phone_number)[0] == phone_number -# True -``` -Now that we've validated, let's generate with this new regex! - -```python -phone_generator_v2 = outlines.generate.regex(model, - phone_regex_2) -for _ in range(10): - print(phone_generator_v2(prompt_phone)) -``` - -> (206) 867-5309\ -(206) 666-7777\ -(206) 444-3333\ -(206) 444-3333\ -(206) 943-2222\ -(206) 323-6789\ -(206) 444-3333\ -(206) 867-5309\ -(206) 466-2255\ -(206) 222-3333 - -Better, but I don't like those repeated sequences. Like good software developers, let's iterate again! - -## Reiteration - with debugging - -Here's a fancier regex that should give us more interesting results: - -```python -phone_regex_3_error = r'\([0-9]{3}\) [2-4][7-9][4-6]-[3-6][2-8][1-4]' -``` - -This looks good to me, but there's a subtle bug, that's why we *always* need to validate our structure against real data. This time we'll make our validator do a bit more work to verify the correct string is matched: - -```python -if not re.match(phone_regex_3_error, phone_number): - print("Regex fails match") -else: - matched_string = re.match(phone_regex_3_error, phone_number)[0] - if matched_string == phone_number: - print("Successful match") - else: - print(f"Error {matched_string} != {phone_number}") -``` -This prints out: -> Error (206) 386-463 != (206) 386-4636 - -Ah! We were missing the last digit, let's fix that and regenerate: - -```python -phone_regex_3_fixed = r'\([0-9]{3}\) [2-4][7-9][4-6]-[3-6][2-8][1-4][6-9]' -phone_generator_v3 = outlines.generate.regex(model, - phone_regex_3_fixed) -for _ in range(10): - print(phone_generator_v3(prompt_phone)) -``` - ->(206) 494-3216\ -(206) 374-6218\ -(206) 494-3337\ -(206) 476-3216\ -(206) 484-3548\ -(206) 495-3218\ -(206) 494-5517\ -(206) 375-4636\ -(206) 384-6216\ -(206) 385-6218 - -Much better! - -Now you've seen a quick example of the structured generation workflow that can be used at the basis for building and iteration on much larger structured generation tasks! diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index b19ebd57..00000000 --- a/docs/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Outlines -hide: - - navigation - - toc - - feedback ---- - -# - -

- ![Image title](assets/images/logo.png){ width="300" } -
- -
-

Generate text with LLMs

-

Robust prompting & (structured) text generation

- [:fontawesome-solid-bolt: Get started](welcome.md){ .md-button .md-button--primary } - [:fontawesome-brands-discord: Join the Community](https://discord.gg/ZxBxyWmW5n){ .md-button } - -
-```bash -pip install outlines -``` -
-
diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100644 index 1017b627..00000000 --- a/docs/installation.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: installation ---- - -# Installation - -You can install Outlines with `pip`: - -```python -pip install outlines -``` - -Outlines supports OpenAI, transformers, Mamba, llama.cpp and exllama2 but **you will need to install them manually**: - -```python -pip install openai -pip install transformers datasets accelerate torch -pip install llama-cpp-python -pip install exllamav2 transformers torch -pip install mamba_ssm transformers torch -pip install vllm -``` - -If you encounter any problem using Outlines with these libraries, take a look at their installation instructions. The installation of `openai` and `transformers` should be straightforward, but other libraries have specific hardware requirements. - -## Bleeding edge - -You can install the latest version of Outlines on the repository's `main` branch: - -```python -pip install git+https://github.com/outlines-dev/outlines.git@main -``` - -This can be useful, for instance, when a fix has been merged but not yet released. - -## Installing for development - -See the [contributing documentation](community/contribute.md) for instructions on how to install Outlines for development. diff --git a/docs/licence.md b/docs/licence.md deleted file mode 100644 index a74661fa..00000000 --- a/docs/licence.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Licence ---- - -# Licence and citations - -Outlines is licenced under the Apache 2.0 licence. To comply with the licence you need to add the following notice at the top every file that uses part of Outlines' code: - -``` -Copyright 2023- The Outlines developers - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` - -If you use Outlines in your work you can use the following citation: - -``` -@article{willard2023efficient, - title={Efficient Guided Generation for LLMs}, - author={Willard, Brandon T and Louf, R{\'e}mi}, - journal={arXiv preprint arXiv:2307.09702}, - year={2023} -} -``` diff --git a/docs/logos/amazon.png b/docs/logos/amazon.png deleted file mode 100644 index 85e1dc81c405d777b6c5ce1a9d571e87b892d91a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19489 zcmYg%by!s2_w_JzclSt13lfq7gCHd_bW14>(%l^*EiE80ba!`)Fw$Kgx}@uO{XXv> z?=w8a%y8%2bM{$#@3q#6R8^6~#iGIjfk3$L<)P{z5I6w%y&D4!_-?F))C>GTv651j z0)eXIu^&uPfxj8d-&4Npqje6_m&e`={~EK+QuYl-ji42s~2x}voFM@Eg<9L5MCj>Wf7FCEq20;8^nAW+EY8prF+g7W(s2-Hg`tXjFp3Jq9Rz- zvVwM%-?>Ib#9#*H8bJrh#lvk${*$TaA<$(${r1)Y$ta2pD=TYx`7=Y6o&b(n-3wEz z-1hc%`^zZO6Y0w=_8QhI@?U5%FHQM)kUr$!y@vS5;NghN;-$PY1ncA|7i73?V7sDJ9A^v~JMrsM# zC|V`^9L1I|Acl|d$!+ImO|3-6`$kIs?{yXS?wZTE2ur9N)OFwFo)L~J=5SPMh6dq@ z*q0nsN;`FtlaupT#^_4f*;z)Oyw8mod*|wJ(zeOT_A3u^{lZyMB+GA33svC*B;gb@ zC?1Oj_YggXcEIKwD<0Y1E3{{_#mh^imveedhw}}?IpLaPpgW#MW*KP$I%be}Noi|& zX=$l<-GaP^#`M;!ssCOT)BSYB_(dWum=ZZej}avLnyOtqS)sgo#U@0odPx>0$#6<% z;@(BS=TZJu`qJsFO|p3CanI$>vvlwL_sWVx?h5!XTiPMGq zB8^J{LUteEvGS&v&IpaV75_$xJ)?b8Q@pXh9&z1%J~F6jj_3F`(wLs@0S`g{AzSdM zp+A}&f2Ku4i6v3=lZ1azmmJ}n5Pyg5VwAf8Z|Ig4QS8dX{Csms6pI16B0*;S{vu&I z@5tba#2V$=V2SP3Pxhh8x|^p%kOY{9>#NIGOICR2jQrM)i^yX;l2N>q&h!d4g4M_qA-|MPuT4UJ~2h)JF| z9HD2%=$K0$<>KBwwA+p%{Q|uNL%)w27IahI%}zHjDbK7$)t%h8dO<5GC%(;kUZYtu*qrrgB(Q?x@A6y ztZKCOBT}QtFMo!^imSsvqNlLSp7HhBba8h2$TnR?=$Q~*{K;;&keaVUGTAz5C@N8; zPm#1FzT)p|{#-&$HWTU%OEV*hF?D=V8F{Fpk4 z+JD1X`IAKTab@nP;oj?w;IoMCazy_EIN=0LUrcCx3OOxQxGzYPXZoo~&}J^;FzNxJ zr#ohUUsC&dF_qdUg0li{~PFA1ijJE~S=XJq}7NI_V3;KAcXE))n zt##FY`hcNsDT(J#Vs!EG@>OGLQ!w&KF$g^8#lwfsgi!9KCi~@l0O?~9Go~A79x~A< z{-Ok)HDP`9T`FC%?^in~uOFd><_gdO6I;8`0>(ozV0S#dU-dVTttfRoL;qC(nPuKQ zTkYRGGi2xWPc(2TSI!W$v!gjBI=hh$e8$#&K(fVu_|bp;?4UnbsgCg$2r+VXwuh{Z zmmPWqMr)-lNPMBv$ksA@8Sq=OF==ry&28Ylg?mp2o2xd%fBFX8%4f{;name}~~bG|ElIQN@{qc*Yd7 z%lylQDB|J?R2TF6Du<-&gu_?%Cr<7B(OH|mBYl&1ahPQ5;&o@Wrl<;wdqkHZ?8%P? zL_!rTzm@Xy=g;coZ$$$G15R`gR5vr9XmLn7(qjgBUJsi+jA{>T){^>_{?aj%%_z*i zc8oqbk+kkN{&I25?(F2Mq_(~2fY6d53mD$nabNfBEUbyE2=6w>3~DX43x0|~YY7ZI z(H`9u55;b1P~ecN!k8)QF``!{vwOdqSS*)z3db>mQ~BDgY_RPLTi;9kJg_3ST4 zbjRZ6z#p&WF5ytfnOkYplp>JG*c_?rJ6Zk2Ae}0GAM>rx$+s?ciBxRo5(ut?*1}&9 z1+2EJME{04&d*VSUV zUdIDb;QXIQ<3VA}po3mp@)yvv*(IN^5liw%*?#`D?a>b{i0f5a>4klf?sR2ke$_{3 zSCtRj1^-qyoEfyZu&{rBuy0>pedEWRd3R9{g}f@&8cmHJoXquL^t{ZwD;M(nc@qDQ z=f~e`ei3>H!3tygkto}q>q%+z?8}Go8mrY7S2sS7B*OT?%?-~^a~Ikm@F$G5KPf3G zmV| z@=WzLQCV3OnROPrS)3id`HN`y=TC7IKNG_zu2dH8Q(u49(#WaqGTqt+YB7xZO}6r& zz3-FHUUz@@HkaM_-Ek_M{c2jmvBh^{u{HH+#fT#Nvatm7mqqARn27FY^zyVSbexFR zw3}7GCjzL9Ob|I%{W!Qvlui=&lTa(2G`fdtVF?-rbj2`GJ0I7*#baj;uB5DNNg@#uEDG1x z({qE}w78zxSuRmbicZ1vKKjhV)jPjfYE0uqxpz@j-svVhE3zb3e?PCzcIQTP-d#Ir z(?!=iXo4CV8)rYeo;+d&iv;CbYNet0!DQ_CrC>H^5~H+wzMY48azQ>%iZBn*DNtW> zahrt3th;6iKGx5aixNZ{pw2CyR$6&uh0==>D5+e5$gn~i)waE#1^IyzCF+vwTDshz z3ONd>ctYrk(^pOkSaJs4I>tD@P_z=Xvw|=7+o_+M{~{{xYHPN zFRzp&L>{_Sr`7UWdDDI9$_iOC+_mW`EaF>eSUl zNqJmxJ)j)(Z9IX{D{Qf_p?cICU6u^PcCN|3&9kQBY<5Stq1qbXe|tq#MC5M#gi6KI zr613*0kI%$xJ-`0^U$prVQ_-leVNs4FxVjWYi>@sBCq23MOP}D3XaSdi_lMh8PP$To@n^_u;UsUqyqo^vIZX`!^n;i*q9 zKZ_f@;e*9P>%w!8bCzE6+mkoh{r(2(Sw_kr?5`^Oe*#5IQ>q)$CWO#9WPwDiK{FNpZ22lkn#D5q3b^m zOE;a0soaK=N$9|K6aoo>h3fk@Sxfiv10&aq@x^nOzyuhuOKHO9?1lMK7`wf4(KLSY zdFbWTf4gd~+zqH+gtt3=FE#wyJkB-(#~*(d6K?>UDoZh)b3s+yY^gP{ zk&%tT9hNLQPBABO{Z~w>`fc+(=vbz z!K1e&P7S(@u6JRp`FYyr-eW0&BqSgZiyHSOE&1*G#h&ezdd>XrH+{BO`zbn{KOopL zX(jE8oMVpihKh=cX4=}??vyJ>E_}s~9||gt%?ck}lJ@s*tsn`)(4aNUrBzU^++y8l zVv!UcV{JD=9fLiuVj>)8L1=BqvubgN>Q<2YNoQF!l)LZI`kc#8@cs;)QF4jg#iI7Q zao{658U%lh+vF032crX=8LXyTeB7psB+NqeM%~mq9Pim?&$fXxoTbINS@!*E4sMe~ z>?|J^E}S|coYV_y&J2G9YryIW6CMK$;dSP|U8{t;EWe82nY67QkEA)MqVT6>BZ*VCs-+%fh^u+ODoNQi?KBO&qoUgAn$91l-TGL~6aMlEdf8|= zZ~LD0`Cl7spIhlrvH3%cC?Zps=Xm*KCb8fkj7E)qq=7@4cv=m-}u?VY3P0jZNY z^w4~I@W7igBHu}Qpz1>xH!p6GSiIe_DrgX{lDh2d6q;PG|%S(KBH#hr* zrTA~dTS~*bl4bqgPBP-Jc%)R%C+p^+A005k+KJuUPze3r%itUDWSF40_V4Qxv^eK| zTk%PHWpEYZ`WkPIgVEAdw);XtCQ>GJ3&;jIkVR3>K|P+FXAkS)Zyn#bqReaYfwEW@ z>v_8v=h8J{$iP}M?7w!f@yUq!(_gYq-CzGYHHjxOIOcFC8{{v5tQiuxX_dx{;f?a8tCXwQ^8?Kyq<)b#=F>HHHw)<9hrE z8g*q2?KuY8RpJtZ;|?yM3xKg-N^5gpcbc&(&B;cys-R1c)(_z^`&$vv9P&OJD;BCZ z*RUe5V&~a?j3J_;rXECfBxXc2xQ41sn)C4_w~*Eg8#Ql9q7PPnBeMI{grT#qYCHDX z#-L(7Ux}UefMpFq)i)PTqoV76o!bkYF61c7noCNgQzI;R9LQQjrOa z9{u&c@ilViit7=XpnaJ|k^dLYjI1n`qVTrQ{K*R2;Dq1+boMeOBr3ZN?ZBT%``8szMdO(j>b?Xt~P<2c=Vg;Dxg~j=eP7t?0Z|oiS(`# zyxuEydM>9}*L^kfiF7pG*+~F4r)rCLR%9GdIqqt|+g9c#*pSdo2%Ar!m@jHGs-gey58IWTtKaF4pbG$V=rudC~l zq_L%meR5vF^0*Xn5vNo%?N8q=ij{GG`vJ@oq81Q4^oVio=nNqrQ;Vj$p1yt~Ibmv}Us==) zVp(+p1e%f>TKzfO^A^_i;B;rq_EM zblW!lSFCa;vm?T%Fe&E<7(^Bpewaa71~B(Filv|09M*4$L!+PyPYND0ffV=pZ?4{G zCh-uIG!L(3r10$@@DzE_8tY8#iDu2)>K@krT78x>Fhc)%chR`uZP4Sl=C+~9=2J&z zYp7XyFk)`cF)y4py3BftzH7*WVZ;MMcbLARVb)pq^PNR_KHf3yK@P z_EM(wn%-ti`E2N7lDk#;q1{>Is4 z@%|Zr1!n~>H99ojA^B%&coW{H6Hgs`c7A!IM%s85I@&+b0z@vRb*SRfWV(5)5H1z4 zOP%qr2%C~N-aYQVw1Zxwi?p`38j%0d@a=ctZduhJ0EZl5ZJa$`4=8a;i%AHB= z>-;IRy4N9G$eb}Qv1rV8$mJ;Eh<@sBqKlb0M-obH(C96Z<8JN1&KF13fBhH&H=_AS z_J=sqr^dir9zFj})5F94NMDHty<5Vswb@L6Va~-BezR(GfyLG?L?IqG-Wme2j9KQ`B|kW7?2L=Y*q>yMylCzOegCnijT zuqgcP%!QaWMl5v1Ip^~~f)W5tWCU96zhP0v*)Z3?dFcH9-NJ8>goiNb$` z)9k9G*<05zC`1{)zy=uy$HGOB0p@dMKtCL;7J6Ycw4F(h@*UuETQoVeRFCX5kUZ3y z2DbZ=GAR2djuZ+<8Y2C2D^DXqr=0c zq`!}=NE6@_bO>?78!8W$L|xo6G?9kC86ILQs`Mza$Z-AwHWF&tg7+q@Fj3~5&L8|4 zN0|BRFxRYzPxnc&F9E1479$Jo7Tr|t#m#T2Bvn7YS2lc+?UHU}#eGfFe?MXP zs=;Bo#a%0ZnS8|O%OFT>vkpH{$QmX0doO*UHdZ$K?g6@)w8%2(0JVFSmTA*AKRqH1 z^m?f&*yjlXyT;%`hGS1R8_df@;?5vwLo%WXp9D;m3e{~4gjj#=)!i;F^THI2hAeCM zoLRn(ZfhZNEGq{x^Lc53mPJdx6J{O=+IdY#@!4O8{h4i*pPV1lQwA+;O(OwRlq0Mc zXKh7O$nDTy_s8OonWzI#sU)uywi;w+$1J!{!ZX*4{os2QYkPb9GM2^o2;uo6?y3<}|MMR+1htF{i!-m=C8_MBxXoG-0X*_| zPelRo;c20)EXo;Il3Pm#8$|Jgtm-jN2j7&~1gKHOh4B)|xS|dcZcK|zUz|fGTRumb zB=^30p{@z$1&A#Y!W^HKYv>012C@X?6)eMg$9dQ_At@dBZaR3=U&%uFcoadhN8+19v-(YIP`X5PG*1cRs#3y{ z#<*O!!^aZIjd%_>Aw7WS>m0zBsz4#RDhI4OtQy8;#Kl3dMqJ=dKW zG*sF5Q;UEKpgEygDZkX5B@40XDc*c~dJ=HO#kF6oZvyLZah4;Vj$j}`LBTki;!;r* zVTCnS&1F=AdzgOrw7)w#rL_u3gsdJB1^|Rn;84PkyAGN*YzlM+!M#!pJ+tZtPzUWt zvJ}F|G2Hhaf-OevlbYVYKk@GdP3ErFC&-N4tgi(aK!Wiwi?N5Qz=0?^~xXNy!4wHH?UXm8U1L_z* zEX^^w;jhcPwA4&3wNO#g5TB$T&*3Mop7WO7^1%x2CD7>6oVFhyM}O(_s*lqpZnx3s?BcCT^Y4xP#Q~3 zL9buGMlmJza76uO_Z=>Z^jy64-e)Rd^lkaoH6eD_ACCu_?yjz9;`=(YG!PB0#R3G7 zLXW$d;a)LWE0yY4p^BJJ!5uw5MUB3;VGWHILv0?P>BQxU+y{ zp@w%8rr2EoQD_*nR`d2!_~QFJOq|u}1!COn-aG8tb0*4oe>#K%^5*#W(!_!jdhAS! zk7Q3tKy^>;CXO?M2z5PW9$WOuEGo|ys-U_HjcOvpy=g2|HGPn>QMcaJwMng>h z#FV4#gI$Tz&UdWu%At%(@A5%3X6=<&C?)`bVrbtVl>;8sOQsz7kA*NgibAR|rv+Uo2ibSE6cfnYoYt_zc(6HY}-0>_E)#wR>a0Ko` z%_GseiNtt{q^kOebpx%>J{~dX5TCV~yxk%QEG-+xHB0-a4KlpM3X?~*tfcqA8_H{e zLQ@#NA*Ya;Xfk1(gQ>;;=`^ATKxD`SR}Fd+UCo9^maahO8?R zEWO*dT{5bGUwb?H6GT3Eo^K6LavHUHm|#4az|h%k&mJF1C-BuC#9N(A)`AquG8ixf zWyP);#d5MFd~p<0!-%j|VOf>`MGv7}l##N7^nIUc1NZTzC-e3tWw*SrLUY_M|GMZU zQika-EG`~sRqC8+;I6xc2vyPDyo3uCIX9zwDi3{i5wXLqk5$T%@NI(|MazF`^!-GT zxwN>bp8$TVDWi*&NfIl_$+h4?VG-BVQT_^p@usdC_g^v*LV*i~i!73R8o-{5I8s}) zPR*Do-xX>!kd`NNX!$6cbP`}+@tyVtO0P#{XJ;q>nR#IbkjL=>Su%f*j1^toC5=ih ziBY8J39lD~F?Ro+nIwkrQSu_`M1oae&)8|C>e)s_3D`iJbbxsRO;VEq4^T+_Q)xIt zE=wvvoHT4C9o9XSuj>Xj>9K&4W&2W|J@Ix`p(1}}Wd)G!PSE$|qCrd{r6+wTCfk6H z!}lgpnvpZyKL?th!#Q2TTfHL~!w7etYz1R%)~z_hBmwdDxI7t&$K}=P?;5kOlRP-D zun!8;O>Y93%!Qv(d-E$fRaQWlUv&hyWRCifdSwtDl@{I)Y5e7|{R z(}V({1R)be6Xp#mFg`uM?G;Jo+$#~;HOJ9}PE@cSr+3@bcE_o03G z8X+?5;X`*CNKor&qs{Wg5JAzo+fE|=T|?&ZXt7nLMwQJaBcq%FDPq5w5u-31ATRhw z%l{LfyeMnNHCvSL`xuVwEuzx!LHwlYA8RZuZ!>cf{AXu}3?{Sa&iYF~XEH}k+4ZN? z=|>ER?cga^S%o&}VtIL4aeP`U0%ZI7^Sl~Na!2?P0fprBbY~OPlfLbpyQ&_#=!tmt zG!n^r3PUD%_rgfMdjOy}s=Y;Cibid=(L1zsZ+S4bk2cF1p^pwfziRk1@q zY}`3pCOp$B@a_`+HW|00&@Tc&j|wjLMy26J@;J96a}))$_Wbt7StaN`OepcIVoS|@ zYpDYo)3ZyKIcQp%qud6G?PHEVhXM%RvU1;Odw6##=`6JV%jwTjvLXRWLrJ6h!bg)e zk6G~hwNl}z>vTny!T2yY+sOU}wMXYqR9M+Zle^Eg?Dqjf{1e2upHcr+a)VAo)TEvZ zVs@bzT>yLcZZ^;e)$ez;&#j0%G2Z;d_r+q}DXj(Zxy_S=T|@&uqKQdLH@5g;>R zWEKH3?|2(9$hUzqv_-A25zCJu2k)x|8cl8c8Bw~CgjaY1P&FIgc4^TYnM;~g@*n4e}(SJvV>wMjB>&Gv#?FEu7Jf|CgcrHy`6hLE+}8SgLili8*5H+;(K}K+ zuU1hNzTLK%wU!tayj*7AXV_XkPwoQV(q>cfiKCce6L~%#N^aCm@n&T;+{S<-m;|YK;Xg4=&7#$3*~?!9L1RbeI|3nsMAgCpjMEDXExx?GYhD{0Fp&LRm8m4s ztP`lw2CyMWQ}!Cko!!c-euGdw8~Py&<*-@piA z@k=(iT==Wbd0tcL`71YOpJ!>B@MEVw;m~Wg2Xe>oq87;BJwB^hHTJjRf<)f~EPP=) zYHEG6SE=_PeAlIQe~0XbAQTgfT2ryKE%tIK#7UT7U>N>C`P}kjSZlRe$YYJF<1zMY z3>Fbrad-|+z7rG12p^;Ett$o(ZrHqiYi0yjkutcC@4u9)XS9eSXq z3hT%0YoqXC+8vJ+Pr3JZiT7-f`j;Tg-8cg)72}{ae$zLlUXzQfN@K;4rF-z?7ePuO z`Cf;2fbM(P~u%)T<>%(ySKsK(bD9Mavv>2X?Ccv}0uL?#!5LXv}YZWhROYMzsvrX`J40 zz=&4|KRc(SA7;#|cxTykoqsVyYP@7bO7MT{e@sktuJ1tqs z3!udx=dA7Vk&q$?o2DlY#80g?pyT`jz8dhzcCScJSHp$&q~ky!^c=hQfSG}YeKYA$ z4y~~;CQaJ^+1rt}t5alNJU|j~;(Um4{N^0G>BFj3u5-3`?&|8)LMv?=nEnwJ>n*7+ zKCftlI4*^O$0+w(P5SUo`1DOZqAo3`Qp53)5pJ=CV}Z&_1wHLj>gZ^^RSK%n=u>? zRZx^QOTpCB8rdpOGqDZO!vsdNmwZEgsszGwWo*3I94+{;0#AnGJ;8%qiLr>ypR%I} zs68tCp58!wec#6yfHfsDy&o^Knkd%K6{<;xk}5LsMbVe({7AinH$na;!e`X!4YzTN z%bpj1Hx@|%T|w`(tbyi8`~N&6FCV^P-M{`(br9xy(D8A{5*Cby^KzL#v07*Ns!jlC zg{l8LXeIqrT6ISXt)MAcB~CN_DFT%&yUY7$Sn2icSo4%bH(1qw2qjyUEFj^r2EZf; zrTeI<{gq`td90E3AMHHwX|i$#ABn>XrYr@fff8oVTP7gl&e~Qtd58WI&|ZadRqM2- zXR49ivoC9Ul~nlw5M&Wc=irde38%|`qf{jypBnm zK9vcd{$^OZl5&F3v!=}Q+!PRR0O~C8kB+T;j*Xu0^D+SABsUTW0$gMB-N25H(ec9= zEH{k!uw}WRPk$p*bPk!qPAyC<%{FHWPK?8L#j%*+d2m2}04yZE?f$xBddmR0_WKfR z6_0W6J=QggSv3bB;R$lN)B)x)M#^Yk<)F2fCY1y%Z&n)+og*wFY+ZC32^!LF59sKp z=Fun5FsS`-uLFPjSO$2SC2=^73`-7Fgm!w&UUoqY5c%H!3hS|l7=?V(-mpPnVzqNU zPONp5v=a`1NY-UPPi&E1|MRabw6zadhB ztWm_R*Zi@+8T@|mJvQWmjYJ|nrr%x*(F&-)4ka)+I)+>ND>DTNqI5csmF!}=_Ufh$ zp*IEA`!qtPJvVw6NZ?9iO2LH)QQ^nfc~@( zNhd;4E4Q~gT`?Dv5K104F#V%V`>)GlAdEJQ7@CwB>A8v+BTZ-~!D8~Ie|v9C+bQrs zmnY?D1W>@8x{4N?NCoO8H1K$BofRrHD;;#O+{;6`qfDO+UJvCgQy8QXrsIb)hdD->SCAIIw`C6YXvbHN$0c z@a1&4D3awRF#JM&zqt&@g-V-#C=Fw$7CYFV==0S{Qz&As6d8o)ji8vUdCnqdlqqDs znu2!~Lt9!~y$PGAt$Q8^jbh)Z z$IJdlLeu|K{aVcS<>h6(o&bz~53mSCrQ%b-$z3gK@pWWjc_5Up3^z#myVH|zBWSnt zKFRcYTKc^!vSwtZ!gSAaYzEn;8>UKBBzrU}Y>((Ft2661$OW3<{+6qoArXZZB zOT&8&c0i`G9{&1!&qa_jnl^mM_w6H_Gco05TRs3iEh}P{xENg(6%`hM0*eZ7$^C=H zajL`MJcHfdUWx?tg}#8(5qx8to=6AUDdbP5&lqk`78GKyn1tpV&-gqM^kB2;bN}&# z3>NUEqa%3%&J!lHYK=fi-UpkPjme95clVNr#l_aVpaUy`DxLMpZ0jOv?KMxsbfurv zY%zbg|M@u%Wc6U?8NeApUSm@6}Fx60XOJ}=pkHK?>Ov*RixKSf~Iifs|F?z z5?~ey1qN#h_wvC_zI+1KIlOh{bkEh-c=dLZnhFoyGUes60Pw0v>V129hML_!?Y(he zvj`2|s4hAiU;cLuIV*iE-+`tJ$i&yG?YTZtdfX}&e7nig(B!n;z2Pddpyalt#h3JobdFv)fL)JEY1dg2DBHZEUV&}iG?*=52VJ{a z)*9|G+bDs+#k*Njc~$6DiuL5`vSiBHeA|aWrQErJ4U4 zzD9q0a+q4O3m}IBX5eR(r~HLc$SG%N54vbHcvo5JJKuI`X$p@dN`kLKri&D;b1r%O zsaP8RF$=!(GW%LT5_){JzrSA*qSXFtu@&6(t!mEnBMy4?79+( zJHr=XGZZtgB-?zR0=S9&-*G7co=WTh;P3%UaVJN_;c7kV8G64>$B$D?6J<;dqe>}9 zTWxOghMPrNAeTejD%)%!_wvG5^9$=e5uvasUMs-SGKO%CG?^q?2u& zFZjU{h=8YmPN1|%N`at(nt4y=gBNiZcn`eEqwSK3!(}TA@y0{j>RlyCJ5_(8f81rO z8^;#P+=sO3tjApX`cA9QAHFhdUb>_mO|2|__u_DDTLkbZJ-`G-ISA%Itg)M9;4>7% zYfp`VHu=#=;u(+2&k*j072yN4_jJ`(J{toIM#URm1Ojp4K(Y5KtgQQh2tKv+OyULHL<>~puh^vNN<24VU*u%qzIMvWq2PPWfbFFClUOoF&TLHN!bF99c3}rgq&IQv8++ zlpt*`c$4w?u~=Flwbg7X1he(W9cu1x$!ol&q|*3S+M$;H_uUu35cxnRaTb z34x4*tqQx&oiwecGR~*`zXqyA#T>)ER#t$t#$UKFwgm80qPbq6DlWo1?TCFsAmGaJ zMvwM8`rpbPyU*kqVn#AJYO*9qHhl+SE}gVoSk%tD0J$h0?ni*|*Xn9I%`DE&oUmM- zPaa;DYdm`ufe_Gh z$oI&1>}=)8$P#z!4LfRYX^GrZ+PT2j>Pk(Ii;H^#6d0#Gii=aUsK9y-dFca5*~=}M zVCx5M!TTZwJLAbL2i#LJtJ0k8)@oX{$D;_K>k|?Z`s2N#i&cayDq{Q03>J#suLrD_ za?M1aZEb00RgIrDVDa;|s6Dlw!Xg>tKMfcESrR~T?4^NS?r7R?Gv_wf%8BV;)&}3_ zz__n1v@NV72OTsJ_$j)d{mdNwRX+Vs>NDziAjYyvW(*n8uf}ZZCBA)c#qtH+VktlA z^l`et!@|G?`}Tk5FwD3Lv%Lzw=ZOQeBzw(~dEj~IX!>UZhhH2m3jU`! zpmu$(%-HMwZ~?dacUp{b-k)jx9ys3<9HI2`tTojWf-MTny&?7@P)WOx-a1mUkc>jj z)qu##_)<+5KdFYm$5i3~-uc5zmOZsK{~OI0Mb1AJ+3sz{z)^!)KBj7E=o6G+=?$pU zaULDeuU;Tsu6$6{6`7>ZB?Ats_ zV3?DO=0Iu%KM79QqXjTWxa5D=9E#Y_IlvB;`yV&T%f$tp{UKKqFJ^oG`{bN?$RDHE z3!FbeS&7|mg_-jNqVNVcVn{#hP2ss9FSCCmzR8Gsc$uXlN$;HQ78T*6qsfXbChFD` z0=RTV?#k<9)&Dth?Ui18rLj84z$e}ng#I@8(1hkelkm^>v01)hN|lf7^mzuz@YCXx zrPo-Yn8A_Po>fly);STjW82O)Y|4jRy}ay6^8`nB*5BiHV=L|g8U<8 z(z>xVR63zmI78Kubhk7aWtO0;Cd7_!l=MW*n*Tw_kM z3M?YX9@ymJT>qTz;NAWI{y|Nm+nv%OKW-l7FuaQX6fakzkFy;7gt0UXY8;wxvn@BL zU;*Lw^2Q`!bliHp{vGH1+VS--qi(Zq&M_f`nR35%%yhw_Hp=#2%sVbgGtc;oHz)>RHZT0j)UoHMH z)1^ftd7$cu-keZ3GzBmyLDNx` zkSqg&A3Z;Ufh$cX<6INZam>dDEC$ks-~88(VVv?t%)b5;MgELGTMtAea7)W?0o~;V zr_|oNJtQL(ErvFfGLOsnF^gO#PyHd`q^!Vp!WG#wc(YDq>6&f&sD&kFm?^kQB=Wog2lk$>^_sM$1( zt>bIuhrQxEB#=+rzjx89iM(c95>qOOs8JV^N zuEP9Zq82JCFF*J3-mS>#C1D%O+h*)|hXpz*V9WoW9cLX;F=wNrpv22a>+^UM7=-v~ z8iS*cRE9#zT|8zX(eu()Tx%_5QT+xqV(dbQe*nR2{4Ri#|HEh5=ls8jACv`350qh; zT?=30zBG|-w|D(cP_BIg+P-f2D!C6{skG*32Tn`le863Oe;%ZnW10pkQzjIS509u3 zI{k!c%y2bT`JcddInr|zj#^*jMOy8{tJk!KMfdSfqvo~q;eTAO{QzQjpE&%ZW+k-+UF2Ook3h@ZtC&@T(hKm8d;sL)>9Ai5frhM z{3VVr!?FLhW9x)C4)DG!&9K1BsY`hUtaAP&<8vlP>5ZVH6y@TvMM$Y?MN+eiZaMV; z+XcU*B^7cecr35UZmS-pOS5bjyElt%U-}pwk8W)*t!@W;NrHL67OEL?5rGI-XKDPb{`HvUH1iu#>W!XAW9hl8e z6L$(fi5+nrlY+Oj7!2YalQX+(weG{zUifWMvD8FQUxcY{#9|oAdKzAlZX1BJDRH=czdZ$1|G^4V3;pqd z(6Fn!CBWuCE6g5d88Uy_IJ$FU!iDhN)230qiGN61dDpi=>YTb(>!WZ62Ah!c45a zC1BJA>7*frH-??S4?A*Cx?=?L6nTmsG6~vzcRG?MS$fDnR%c&J_Bw{h2BS2H%IR3r zgmd$j?sT4Dp&ontotS;n8#m2FQ&^HQ#h?=gD{^>>$8Z0Rv2AY|l01J99^FR~o3y?- z=boyQ_d+((ZE^13(tj>Jfk$^5#OTpuaoe7k_O^lje52fUq+BYC`{ zUrjZqyHoQKW5a=_>RUNIuV-)Y65ECFl-{3zx1;Y~CyJ!amnkk%_#*yPG>JNJ(cFI6 zp8pljW~{FfVZ}#dumn;jsI5F^7`4lZ&;3)5g)8BSOtTdLK40-OfW!!Pbiv2M7A9N| z@0$5qTSM1`y{-*y(ooqXwV~~08#Z^qU)$_r4G0NlnnlW?gWph(9msaw%J>{w2)^p= zQ3ZD2TeD)7MhdreqBS$pZ-o*`-hsvmyR*)MJo+4z0|a+}lk1323DhPep~CM~ zioT?Myu_q9f4Qb;&YjcvKfoV2)y9fLs{noHVADqp84NI1T}yRlQ7kLO*~ImAm!K1^ zmh3@C3x0iaD2(kHa+2?(xx>e+^vqA{ff<2wHszK+YCMhw%xvzfZ-GEO{hquIm}aj! zLJpBr^TS=@`rMkd&#jO zVNsbOqvbGJH|elKNHw;RL`Y2OZjLcT8E%r(QgUdd$a9M|IoxynXEBg*42VK6JhLz7jmlIa^j|V&a$EcDGC?Mw zwjyr_LEdIYVLd8GZ*eZta4xMw>Ur9lBZ7NO2Pks=ns$D5ovW`v<_>%HXOXfBUHMfj z8G5%RfB#%YpI;ku<4@0`mF)f5p>-i~EvIqJA1w)$KvR%!UmLBpWst1f``lkf8H!wl zF2D?eA%#CrKq%^ysjOisw)Sz?02n!-zmMY42U;%@bg&XVaS&Jxm}Dhj4Hl zVzqxC*=#|rt|}YzB`=6wu#+1%g(KmYg1u;%2qVdYEWqlyTM0+eWJG>;rDrf&b$4(e zm}yiP=a1{IYL8OHlO-q2#|@RNLmO6$ptvS)3ZwSBbWQ9Qk)yC3zXDl-U~3!jL-5ys z27KIh@#glqSV^)gd+s7JuD2x>d=kU>R=8!US4pzMTYRzO)PxetMzdkkPotmX>{G{r zq5RR0mJAqe5%vNxziY|tgsjUSngI7DO>+iaYdULx_e|7E{1%?T+yvboTipk~(|jAl z9ZY?(JxU9bM|E#JxyLVSFA_Q=Y5e^}>BFHO+u*4}>kL#l>I44627$#CLVo&II$WqZ zx^TWQPxrWxoMMqC?|shPF+0jnreFL(_vgLh|(%-IO3fr@eyn~So9SWc8ynK%4v zUy(>V)|h^j8~5g;`aHt3erz+`3HV7(hJH4PJ^8c~k32IwwCirjdizwzCNGeky%fFo zb8m74usiVcKE`#)mD(z$d*gA^ctx9GNaJ8lPtoyl%oDS61S^DY$E}SI7hdJ}HaR89 zP3)6S0`%X_Jl=Ig=YdjlJN*l|~)rbnI^~yEBmFs0XkZ|68i$-UgC^^vJ{= z>ER}I-$lzPR9_+sUyB*9tV51V8w+4zm~o>zzR+SDBRjLx;(`uV<6SjlGot&Y6^8YT zXb&%guyioTUFgLN-QYCPo?W4`cIOG%5NamZe)_nTBOPGg7FxQwL1DZr7kf$@JhU=Z z!m`0i$tfd=pM8uqpQzGDBr``Jzv|H9JQOT{{f#{k658cDAzk;03!8#sxL+r)2FBpl z5T#$c+dFd0;5}zM4+?Ty6UK|5fjE1JSJ5JBk}k@JHq>G|wRb`zox~=@oEb0XDvTY5odlus^m-7otzQcApcQLA0aE8f$fUi@xwSoekS$cQaegX zw{SXkrJ=09qO1m zwcpr!GC6rPN92}zY8LHR1G!#`+nBC~pH{SO<4#>Xdo=5g_d-jTin$}(y#DS3!nK0XIRlh8~q4>)igwZO^a zy!A1ru4{xY>EJR&|EQ^-`+nZY4E{VqdiippeZu5Z&@f zgql2v%!M4Wr`7G%{oA*{y`}sHD_QFPk)5!a4Mlrt2VjfM zx>n}tILT3!0E-aCT=korLhDSFQw2M2!9b%uJZcq`yg*)@-0$fLyxCzg>3V~%6~z!S z?IEo1pFP+-GXQ%0G^r1|86$_1uewamoSDWO4;d;|W$Lfw=^2301yDmZNq>_1lw(Z0 z>Oz85xABXej`dd?uHUALqb}`!&;AuqJnzgvusvoxP!pwkBGjSkddktsJRR9cN_(+zl+G!~(YP}5@rUWk1frR9%AUkT7m*2f!38}-t_ za-tb}d!%DFMCV;NBm`MGpMCs@*3Me|Z-bXqSXLq|u~4htAN_Y?;#H)ScXIYF=m+6F zVMOweGtK|pY7cidqaZzyqLUf&l$*o0z*68o`9^3dW4RtRMKcw9Z{ezC&-%Q2z zR*;iHs@JGUKFaP^KMkY_MASQM+FBjtd{VA+C^f^_rn6(UEu81ob(m*^3+35RR8@bd z+fNBX{!S`2$GI)VY7}csv4#$y9K~o}DBF`#UA3c diff --git a/docs/logos/apple.png b/docs/logos/apple.png deleted file mode 100644 index 345f6277e05770142af72b27d334f6d631782c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21938 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 diff --git a/docs/logos/best_buy.png b/docs/logos/best_buy.png deleted file mode 100644 index a273b3647904ee2342e4ce2d65f8be40f098a316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22328 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 tRRl`q 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 diff --git a/docs/logos/cisco.png b/docs/logos/cisco.png deleted file mode 100644 index 31422734e45f9c2977e8730bcd88ffdb17148dc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5784 zcma)AbyQT{yFNq5&^gjd4>1fd(le9@(jbit9nzsv!cfwDN_QhlBhu*5A}taU5=w)B zAPni9@2FBu8` zE%BPm5pRf`m35Q>pdp3w%9a>E=C;3Yr~?2&`~VOh1ppWLsqifT2!H{=4jKUDvH*a^ zJFne90lz?E_dr7p`1@}w>Uy1upCR?v)KMp0Bc)|#mND1Y6a@gLJWVxa<7e~x`N1J+ z{cVF` z=zh<3-Z&pskUSXaj52ii^Y}-!^(pNq85-&ilz$o;Nq12D_#RZ#<+lcu^09ks68UWS zYK*c({X6sd+H;qJ32V0v!y)OF>taeBN;a~3rJu7)U-q-ZgW_HF#$U9~P|@30HDmMx zcJ#n~9&mA$AAO_c4vhwG9)eaU{>U|gaDz3Mp9cHefo{1zrJR>ApZu+D(eBf!awk7c z@@n^ohgvWi4nZmgn{sPKWc`m2gz_s}N6g3383L%j`*7A9S_VtAj$M)cU$Rd7weMo@ z^SZ0HD%B91)GP9u3i2ti*L~$Iv}fGS1GO+`-7B3Wm~v^tO5GBLCEY6}u9$SexJp@| zZzbKM)c(&}5`LqRact+$dFJXyZBEG3>Xu0@^tx~-@ x&2ZhUH0FO6x~XCkT6ro@V8ZCXZU%S+y>l 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 diff --git a/docs/logos/johns_hopkins.png b/docs/logos/johns_hopkins.png deleted file mode 100644 index d1ba7012a7083fdb14a255bce47f5981b5d22c6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76335 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%0D)(f;-{0>apxtBqQ*d9B3->m3{!WP_ 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 diff --git a/docs/logos/meta.png b/docs/logos/meta.png deleted file mode 100644 index 33e9e5888434f24ec087347b62860814245030e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20763 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 diff --git a/docs/logos/mit.png b/docs/logos/mit.png deleted file mode 100644 index 60c5528e8d7fa4a812511189a2ede58ad9d8b2ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sVD#o-28tA3Ir|$(v7|ftIx;Y9?C1WI$O_~u zBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpoB+&Plzj!UMz32 zSl)DroH3BGO2%@joGy?tSKS&&E|ND{qF@SS%$zy1v!|z{w|A+W=^}a4<;te*?d@IN z-9V|X?w&pI+gOgd+nw{%m7|=iQo-U3d6}R5rwG=w!z~g%GU|Rg%qW_D9 zCPz;3x$3Z=`;Wui)n_DgPkov-<*3<)9lnuwbmi|X=aKVTQnqe0lR^Un6UWdecCa0I zthu041Hj?H1kxn}3X=t36Iek(qk*Or z)8uTnirwj7IPPwIZ7jv`hqd9c@nX%A<8%Byd51^v4w)3P&-9CADFf3F$pi1%hkmLa z@L>OEc|e@6D5=&*q-YMX^ieHwjVMV;EJ?LWE=mPb3`Pcq=DG$Jx(1dZ2F6y#=2oVb p+6D$z1_l?tX9nO2Eg!@|`QGJzTxJYD@<);T3K0RTnuA)EjJ diff --git a/docs/logos/mount_sinai.png b/docs/logos/mount_sinai.png deleted file mode 100644 index f18af0686149081a01f463017e2cd78223925260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23749 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�y%7<(HmbK$G(cV^0{cUOEHx&fD*9be zl;KLA-ud_Y_YBY1*$f`6HBYf;I=O?X=d&0)?ki`uNWwx~DwRIG)Tq6+;O1iImMmXD zr5-}@Q~4~rnZ&UtmzLcFm>6l`E+omA;&Hzhmu9qpGLLC>1LX5P)7f1A@Rt*-+l*w$ zWp%HBwv4SGWZ7GAITp-5wXenS@b8a%aPWt|5;OAhb5=!Ka#G{Tri1B(;;cVqbcr?S zcaI%qCLL1$S&Z#zA_G?cf3C0N8$M2WU2i!cA4#cf4Sf<)z27BGz8Ta1H*sTYk;WQ|4- z%hTWA%M{D5HP@%7K2M>rV5JyT_-}q-5I0qcn2b$40hh zhT?Su!=Uy?RD;qSmVfxXtMG|&0ajVk-zvKdM<-7Waqdl_Ik7PRGy&l(1`J+V6ASVZ zj3mqypSQM8p3gHj;B5G=;uI6!hn?W~tgKbP+uAb%SsoPD@Z!vpRT2PADFM%=cHJYaB53E$r$whkG&g@CE zf?d`>Xe1|Xw?|U(byNu<70)&CPdcyAHwdPuK3Fv1g6#kaugv7Zs)ZghK!#aL?d4q% zh9Uv-j)-T>Ww%l)D&*yy7mwoVRyK6|x8(JNR=>?6#P7X&Yg$eVo4~)v8o;T!vj8ir zJKLc)Wwzga%_s$F>e2pm)8hyAB^e(JUSF*2E85q6w14)e*1O5#jeTkvr%L)l+05FS ze8~8d6W#i0)Zi4aurV7LcBN>qOF6FQ^K9y?AlrdiAYCDowY7I7XD{k{@=&v%j3@2r z84(MqgN`12R#WYCv~K@M3dHoNNF&!@CoaKzOpKQe*29BaBTW5>k8ZF8iu&t(*Yu4d zb^8o=w2{Vi7_UXrHmnPL1nAA(`y*#YA>!I0R# z36eVxbLj9oBxS+7QI^IqOhz+b1N-CFn}%vH8tZ^0*|Ojtf#UJnk6);i0QzZykt;|V zprJ@s*SYlh@hOd%5`p6EEl7o03S2K4sG3kyb>4i%p95qdNw}azSNza9vs0#0#qA-+#EgnErX*iWfbVO)T-vVqH@f38d4&sh4v_zF$sN5mD>8 z*}0Oh$olu5#4VjB2EgJ=V&vm{>|WQU122FZD^1Im%&CKb0g07rjF>TQf}{7D9SjS! zL>oU!$JYh66e3cU9iHtzAHD%et_l1|xK@U;6e&H+M-f#+XSkSmh{3>uy!GAOi6i(~zLgi^9l zib)$wVI{-ik8bzy1uYDp_m^1iwjs?doFe?(*C8>zGSwAN)<5P*^W|PikgB4s(#`}ogHQ{EDe@N zTbo3bN1+-jFnT>nD?Kc=#-bvGw@UzuV+bcGtP|Q8J^IFppU(K3=4!+Dj_*Yfq(@zb zw7R0LUW71qJp{jzeT>RLaN~baL7XMXPtJt0Q0WQXuPVvKpXN&@aj?Xj&LN(Jitp4) zAoK$rm>kan1&2fwx8Q0JR;q!@U#J1gZj2qn z6)&5jizCKkybn;V+737>cdgZ`>*RY%Ne$pgo1m7H%{j(H$B6+R0FDjs1gs%ALE-8G zeWT9E7vdNSEL_k?oP3R^)14C$JF7j+12`B^6FuIs=j^(Cac8n{xO@M;IG&=xoL zi>O`U$teq%zVuleg0T7rHqbvd#}~b-0-HuLgYyR}Y9j;@fXkO^pQ8p9Q0n%_+wqrU z`A?)JG5&yN!}0iQh;#bcYjRocx*bu1)>E7>#sJ#dn@FdjPM}#m;%|EhBE)HiZo(dJZ+Q1|=ga|e z6xrdq>xeXMS)GV}6_e(!$UzM?EJwN@Qyv}M_r5Jv!(;FFXNEVjhCl}omkgi`Phx=) zsq2CK0y1}f-r}J6BBnAvBfN$0H%j+>g^OUT5*eftaCll|Zop#FnXur$6xh{7{MB`G z_7M5lW6Gj54}22DBGB2f>jPB%MfMVoUpUJWQqfQ-tGd)I8G+%;IJwu-=NEn*SkJAj zNxIy6L{TF1_YK<*t148UDh7+tczM$7t{_6t%E9#5hasHtVC|WDi!j%|lhOK3A1T<~ zM>60+_j*^ykvyPRcnQ;dO~vv{8AZO|p_nSa5U2bqk6+F;#@fr08*64Kv+=rDC1o-w zBik|aJF<; zL%%A6rvaRn44T7{T@=x6xatN<)kh$(l48ErBAxnKhX@p>*<|#07l^Tqi#M!Ozh$i& zjw{Z`B5*oh=(@za)35I1nLqrT*1{4U%GrB#7~NS!S3iPcI`&8Sgyuj$bR_O1*fP-~ zlM{xv`hJa*iiF5B}dPa&#lB&2TdgL^Ux!^f{bY?N{D$rbDe1h-x>ak;9+#F{Tu zGSV(-vw-HvRNwlHiQo&D@}j4SPFxGc)T4{cfqe^Ep_;04tzPG9ib7sz^O|}3aWk&- z=RPD%b5S4qTdp}|@?vps1lc&B>3K_67&}JMc0D%t?r!uVAE!XdFSVVQc|Atk=1oXN z&7@T43nKapE2;DC=4Xf7uNijLsuxFvEAmTj)lILsT?sH4=B3waG*bPlDnnC-ua>q+ zd_eBbctJ=3&8mYZK4jX}g%wO7s#{Ie!6hTKa$9WLxB|FHJU+5IDZG4RsqwrZU9wz` zDcrAb5d$Qtd=;PdgifSZ1*;ZYRt>#Y-2I_uEDn$;LbGE{leOYIKP>zyl(}G|JI5hH zLML`Er8LW0u6KTQs{8R{>nhaAx!S-eDGWAfZX=gT)M9GY`FUdy|qP-5yN*hG*c-)WZ0E~_d5^sRHXu78TGamMFW z7t0E)d}q4P-I6#H5>j^a6A5g?0;#!ufA`ql9MOU7zZkn(nvYk${5d#$>`IYb8Gj1{ z00QftUitW8%L_fj8jqta=SKawt0qTSdiDAWjaQC?H|G7i4kd^dYO{-p4AduHt3C*U zAhHP(Sbw|{h(st=&hvptIR)ys$G!Sj!$6I2sHNRi0{4)gkb$(Ity15c@hEYaL~2l| z{>^&qkKN-B01aV`za$)=ZzI&D_=WV(Tcak$KNBTJWU2>Hox=xY9M#1AVjjPiW$5L@;I_XO9eCy zKwVb{abgy+4p2MHFXbKB6&D&jakAd^Lql=Am0U`|k}Te+;Pdx^MI8Ee z9AH|wy_~y&j5i8*6Hc+sh@|A$vG9oLBfv1$F1qkO0f=@QQPm{aTRXC>s-9G5Fo2WD z+)e?Wv-kvkKu>vWWqffwtcWItZ@O$Og)Wqw#DE=`N9p^IX~DM}_-jI6+AIN<4KS2* zNcPoaby1A}#rN#R;u>vMq8Ffkamn&bIsQs#aYp_h#SG2!JO5Dc>%unekxWCHUup3lOMtxi0uzH9_G zV~`-&joRc{`2Nzk^AkSsmx$Ji>7eL{lr?UPIrEbJV86gxY$>qp3Cz9=fIj`Gd-j3_ zoUc=G#ARVW+~6;49Kb2Ea8Du3qPI!@DjWSX9uppuFcEsJlyffp0oSf5wP17D8d*vCRdeg-Z3Azlk)a@mq)K6uYe#9ARh%z5w|e z)kf=22K=VbjX8fzPd8DWI`?Pmyg9GJ?}k$ro0P@qit=|ACkf#alnGmv z%?h4grCW?8a!##L42pb=SSf5SjC-o|g7_swGGhDWN4jW7BEtbs)fICdx11^RUsq`u zR#)Ngd}bR+{8}EZ(~6UGd-V5DJW9PsqV-Pka6q}<`^!J)(wGPIs?=i?Eq4Pco2B(C z#tz#;yS9e@lx?UkNL;hvtlF)he93&7|sr2DBD@Qqp!$Mzt zLoiVFTf*;lQ1^LN(|J<bG@zaxt$s2`?cbSy4)M?J{V6%}JO{5uh*&E&Js{(KQ*|Ve}D?dzxQQZ~7Aw6P* z@xa7@TWgtiY-?{a(uZ7z5?3!QoL(zKT2A@}>YlWXj&}!@)|1il4Z?|lT5)1=g%A8)Mus`=n&d7PRIEo>@_EM4Cl6Yl^T(#9sEFVwF&Wp^Wq15mwDY-j z-{}-g+56ekKQCY~?3W1oiEAvmEy3O~ z<(P?6R2-_c0-O^~k?NzX;eUM^92MFhET( z?0k?Pr~J=J`=g<`!sS1~Y%z@(AcK7xQ>@4{w5{2dgcTnj>d2k%A>8;?xq^yI?Fq1$bgn~mIX*L=8eS4=6E{@#GV!dDo=6-BK9!X{Y|(2!ldVvjob$y7*!`KUBFt_~9sIZfDGJ_z zzSmIey*H5CNHU(eXOJyd%EtFq>Zi*E$P0_b#FNBsJrcuUk%2h2T$;R!xO; z!O#g3Jg}tFyx6)nq1OD@VvG&*eL?w6jFt>1$n z-tM*M?K*276S1y>^tDE2dBgizlYv!1=~z@m%lio1DOYfu)_v>5kq0H-8);n8A>DG$ zRZN=#f|ZkYqpPEOpB&9UJ%X=D{PC^-3X&b)5lk1FtvRR8*4KBMQ~Igq4#WNXo9h-a z@|3+MuXjpS<@-w^m)B#2`mzK3Cn97kHsPcEqC8W8i7!LC)U+k|+N8kW5dXrtxK_7? z7|(;Zb5A1XzUIH!*G#jez({p`U}e1E_@ocRm-u2v60YI=czd`c@)bUH%xpxH z0~K8T`ZVhG&C-QFK6L*_DP;+63y0?0&y{u$h)s4sp%uv}>-F#ORULu3(1j2e-B7_h z7W|_vy9-vgbxfU6S~3j72fP98Ruk>zK+qQl+J3t8$lVcrGIwb+nuQrm)*F!X-!p?T zNy_~Hw^W;+F8AEW9FEjapq^@$wz0bSrdGH(e}%3pvC%_$D-~2RT_)K8Af#Nv;cG z=Lil)GDta2|1nw=)BzD?VdYPzTZ=9zjWi(Y{m1^Hl$-{=6unz7jq9J~Yk?$9m1Xp|PhL@`$hG8%PbaBGEKmRc{SPKh0xz`RD_YCq0jA&g zLYwZ*!_ikwq4QS@Ye)Sbw25Cnq&Jzm*Jxus3do>c*X<-w!fI_2GmGW1Hme1EisdP0 zNRx((p3+MY$aq>ltwLyJI#2CmGzPrzPM3sq%yFkG=WQH*$S9T{u>e=XAPgCX*H zTh8}86f!U=$u#P$>ZYW6R}xvK-nCBMLxW9EnPgUoCE z`T8?{!ezg+l5t~&aU3x2m>~Hf`qA>@TOmmnqI|g6GIDs*CONd4??0r2=_sq6nCL9+ zfA?cMK&d6+?w2R;&-e#d(=g==d1DI^K}7igT5mdT`H2j*Csx12<{`7KJ7{p!d)I2k zYQ?GTSu(rN5afNZhR0=)oGK2xR(Chow9r8H@?E2WMNSVorEY zSu}i~H@#21bXeK7E@VCbtdj>xU5U4+7)yTX&GLW^yz!;u##HK?m$5)4Q=yUl-8y}- z!TO-}K?I74lPc3nz$JDG^^oTK8%u}nFoetEiZQGRzV2O=us{`u|9NMt7}HUrl6yYm zU|G3ur*!)WOXjz)8`OwYh)>MF_$B1!#y*Ts$n+1u;0x$fXhJ4i`*ss`EZoz&jad9i z<>+$ushnN;7N`-Z2CXxfee} zB%h81S)DH=5sEL1;Xa%nR`q85`~~1e|LvsmUg?InQA=bYB+BL5=9>XOeFxH@$*lOT z9lhlt8OC|gbsvn&f;E*f0nuK@?(T!B2bE;W8*S{qvac*gde;}eD+(+9w;W}-ekUR; zP2PT1s+%Hgv9u5K)e!CoInxTd^b5qrBxb@wXVRP;|a7&3Ya)r%=T8 z?k&oGoaDr9L=vECbc>W>HKI4!_$#xTa-mo5vCN_dASd@@W{lRb9b3~~Rqs~a6HG1# zGue9&4+tc>WWTS>DbqQ!`H#i6sN=)grhV*-W{M4&BX+paD0L1<^T z=^nYY>ck5-PxIo-Ngirm*S>E}$pL!i^hIXrQ)TZ>ZYLkB_?vQd^s_NQScj3${hC`< zJ0eN&caAoUjg_YRPwe2{zVK?+Nh>ea#r6fZ-?C6rbNeEck_IJRa9}>`HRi*V`blG6 z)E3KER2-sBX*{AGCYfT!%UV`k-@K=Bk~Y8Jk6aG|`ZC1v^7WKng%tCDlX42_M1uFa z`mx@mNwfa`;dNN!@ZAr_2-9o=Shesn$4zw}%WZNJ2T0w4uLjm05|(;7>3(abek^#q zoib^6`IG(JzfG-Kke^F@cWTP&Sfg6xG(EGy#p_$tSRpSio0L;H9(i{;9;V~+msnGY z2fEPPP8=)yJF_8I6wU}19#hZMgha`z>E)nuD-qzYC(?DkhN=8NM-s9 z8u`2EyW)v|JMLC7f81<^6IS{0(Uprk%t`VsZr7<&sWiRr zaUD(Fux_nG)lc}M3=2QA2$dKauj1LX^rEqH_c_1GZE5W#X31wd+xY3QVw_sx@N8Un z*lLIZ1Ggrh6u&K0x~`X?KCwzPPNJx99yVmzL7DaA#CQ?q-ikBC{*}{Z%7%^H23yx~ z`5=+@P3oPm2Xx@suVNN()<7b6dp2y`|J>PE0RA-9$XF7?C1mDCU-c0wYUrDUYN_UL zCpF3@>vwx5GVR3XXR`?Y>XQolR$0K5#W!rZH1P}C%Qg#F56Ti9%`?(SA{=Cp@I+GU zRq&=*{L&p;_sCSka#0>t?3upEJRcKAnlwdotIxxq%(O`^jibowmDLWJvB9YgT!$>^ z8ZLf450MVoh~E}=qDXG=&tvm*^%sRFWr*D)eka%PcpeX2eV3wkM$o%-1}fw&xk))h zeg0;{>(QyLz;P|6Vd0V%w&uF;j6M_p`N!l>ju&Hx&d2fLwI!Hwj$|PAY)QY(n#o$C zUA>>7b+y)ZK!1>xldP{Ue(WlpcQ#*IyBO>xy^?#tUG?*$eX1xptK~XNitHHH(>Q$) z5|WhqzNAmB5XC!8;@N8x47g`xx)$&6y&6Tp7z5``X=guciOi3%tEqQQECd;kj4#oA za--p?0T8^EHMC8;Gg5bVy17I*{a8P7Q!xx(bhoP=DKq#bc`Iouq8fT#F>DEznA1`1=uvr zCm;h;n)Ey8uCrXlcmuHma`bJvndk>X_4i|=`uO(@cAmh8)BEZvu&hDm^W<;?NgeH8Xw4E@W4u-N9|x-C8>U-ZmE4TG+kLVs2Gzd&@DbnqUFOm+ufR0Q@t2 zOxk#F^47ZIglq+*(J(c_mgjueofWsKA;j;;69wxpc4bMIgX>`SpAOMKl!^s15ur&t zfBf~|ly3`7Zw8WSJV=fjCcW2TeBjgGVDI*4Nv8#0=q@LTze^dT<0UVRYl1q4p{UhU z&d4p|AYA?|8;d+stE90o{U3?(U#Go)9q<0g@XxI}tb@3ju*8IK|JH`y&Vp}?<9+-^ z{|*K2AI*&Dm{cFD_cY|j)4Tzih{w-w&VY398G@fG{pzoGU2`Ooz9{Eo-MIzVUT(o& zHcmTrl$Uio^S*3;qWW?cWJ(KDOy%>LMe#JhT~P?b_*Bra8w67yG+DjYhnf5ffyDp|0G!@%}3f-y59jJG}sTzD|F z3Oautp~CfH*Ten6x*{B0&%u!>IRSQp3Ch9ZJwql6x;4`XUdCF5lo9}>p~kU~FR^~y zqU#?J?LKe$?JW)!Im-bK0~7LHG#_g^m&)O+2qTn;LB(CFuu=Om#Yk-+eI!x*byl(> z+|eC6K{U*Kfd0vBTfGNH_&;@)8k#w{yR`@sQX27EK@U0D~_nlv8RH8tE_%ZQAA<2}- zgGj9)I#UWCM_K;*?xVyxx$L|EbDh_Qt(Y~dt0Z1u@3r9Ch!fxF5FuUUBhFV3w!9jK zPpn`@yx`oaOO7F@(m`yw=6~`}yIqNxHf<+z+8i$xZ1NX1lPR?|;7Z}F_>36;RD&t5 zE9prGeke6~5JGOC`HLRDS(=0a{qIDc~p4A zB>O}8fCe<>$^L=-lWYB9yf67QH65J>7OgJZgZM;Nbb0Ak;Ke&SE;(2lPc~l>&(&*djg&`euUu${ygf_D~Jp{tu^k~aVmX!^%kmI&{}-LGAM;VT6k9+dCerb zfd16bK8XI;h9F?AtiE>3bY`lpyH_tb?2jfe}1bMGgI=;5(E>P*%won`HsCDJwi?JuUfdU((s zYQMjTBLt?JHSHkE1upAM!Tb;F(oLhQA&+Talyhw|gCQXR=YbQd}GRdR8uX3m)k&LHiP4SpigV8C4kCj9D;-I?Xnn+fm; zOj6VsUv-v)P;=7fkMWnZyU$S)(zjuu(ER2(ms=!mFYdvABEA7cfQy zrP=e0o%=kT zzA$^(`Khk~J^%PU(UZ<{(jDOSG39B&{DYJHB?Co1R%y5JL;04^&s|EReppWN{M9~w zJD!JFeJr-*V(0)avtl`3=IDy|X|MGX56t4)e>OyX110`%N8wnsOb- zI=IVhdJCs*t`s?SQMmv|`_F2RTS*H{4tiS+%in7_1DU%&HbDyOz24rcdEOQcZnL-w zP@1ATMmJMhpn{N~X19L|2`wIVzg4kgW0=}ketE7RNk|upUxvE<9=6h8kk&BKRJYl% zJ#&NPJsrH8IlY%%?JdVQ#vQd&Q;+*a4b6({i&m(vG>ktoTDWw$c3F0~h}=^T5jTo! z`2AO4hj5THcS@3VQU0VXdw{E0KB4B1y2lNeYZB^)>()T2Q zm(Lkrl+*VUN=IMweVWAu2a4db=kRrK_=KJ}W$Q!x)q~$hHdFG|Vc!9gBxs*sb&nJvAeEmw#Y%kvCT=f$FRa8!vU{+H?8jAtY|{c_Rt z0@^++JV|c5_+`En1Boo`jPpNW{a8-`q!r>;Y6Vz0i>bR0z~LpjkEM%g7>xn#KU`RR zt*6ZIu);wZsG&?c)hTy)38(shbhkOws6W7T9ub_q0jv2&WAjSetF+XFH(Pn%4iw(j)GBzS8Dolm*v|&d9kb;JV3cikgaibO; z9Ae_f&yBxN)n$_~m253-Sa%$7DfBejp4Z+O(cCwjAYr>RG*bnvV(yJ(##nnciEOuO!aNu?iH`pcnXguT?l#jaSyr%-!2Yd}_N`;6TI7ez zk3xwzHOaz3EG1Uy42sZblEQP6y5hH7x*2c`O84ED3%^R6;6~Bh`0~xnlti0kxgamc z(7Bw4hW6>#xh&dLX@uqo2Yoqy#Vk}gDHro|9E+ZCvNqe6Wdw-G4*oX_u?pdFwMy?> z)@7_;`rq3beZsd#U~(;rpTbx?Or>t2LWQ>9zKi&94qjq)U00V;$R4F1&wt_SC{jwf zf7_3ho@f(_P4IiJv3{V-Jt-4`Q1tCdT(M?NaQ^&9Y0Wc=*L$Tk<^VKT*Iv+`X6hU?^AJ~VO1hZQ zLy}d>EVA86ZIi6FBXa(yX^f|Q+Ovp|OZ5FW_PBt9HLI3bHxe%05`ns6yF1^vpoJ>5 zTa;%m8Z^blbR@d`SXYQ5$gZ5~21oWr!j5$;;nB)ol=hkR2EWQIF=XG6={Gt#qu#=k zSb~)34qj*E9`;m-bw^OSN#l=mf!78TCDF%^h)N2J*rs7_t^$XN#0T)>>R@>nN9zly zFEf%A1S5Ep3$i1bM6tH7JjcffOZtYz2qU1Aq^?`G@@BUB9)_c2KUu*QftD{J$+fx9 zkqATJsH-GVPLE+C$pk&=D?>XEE%q*;_M}KpFGN_P!-7yzpsq-EhH0bvn@F7xkxI1G8d!FUsv3YDf;>8=kFE1 zB0}`e^4tLs+D5)cpWa0Ur>0Q${B68YI)a0RYf#1hFr{qzo! zo79je1p7j|#AzGWU!rA61K`5pztg@t@S?&Ye&hG)Ncs;?)!1>XcXL7kqGITySd_Ao zVCgZu#I*~G^Cj_dE-R8_A$I$mx3n%~D@FX_1=J3oVFJ+>uIrj{6W7zFCCvO&n}LM# zCwD(uj;5#j@`DEBTVcJ0RL!_bI5zijzdyiBK*dxdUODYGIrI1_izTeKyWOmhV^S5Y zGtE1MG||^>nAyxNl3te8zQ*HOrGMh{m$O7ah#yN12PUl$IQ85WzM9^87SdZ-`qnN) zyjjM3-G%ibP1^TArUnmI9oI>Wd6a|atGt^L9Efrf8^Q^$9pj!hV4V4h=dCLt!CRhm zb2++epnfYc&Ly%G8n6yeChu`xB?Gdot8RMAjr)&F=+Y4??!9Yx;Mr2!+FA_bISdOyN?vaC1qW9htQ?Oef;ONjR5@(&!d zH09fyw&x_vyb;~Srmasa5iMD^^N>pk7_NToXnY1oHQ=AhRp^6Z-j0vlb@;8ftlM2i zwG4cxW6hjYKM28tA?o-No>z(~iS9@pWU6h)AM(NTG@xhCP*X}Xwc^e3{fUQq>6gk8 zr}}R@1!T9xa5y|6k=R4wXe|&D2`}B*D|hwdc5vx1xLEJL!YP|>)HC@#8B_Q1H)f5Y zd)E|wud)0S*j(!=e?c-Qj{Hs7Cj=eS|L{01(Vr;K)Z8;Y6J6pM>rd3QNf%fq06~J|gYP>d^Awdeau1L>vo><^stX#8MsA zFI5+b!zdVUM$Zkk&_tv4c1?7wJgXWWwdTskM5HY3WmH@t0y<~gXJcL`yn`3TS#ie- zb4u%{hw1{;b@{Pp<}2eY3%scV1WMFZS(gvwbgrBlhkuCM=q3cspR3JZO?%YE>fLWCtS#uJ5o+mj=RSV#R*bHrxp$ z(fz~G*^IJ>KLIV-UfazZ;yc8$JUIJ555Vh>Qc?SF{ml<;1$WAeqYDQcZ@h5-tg?R$ z+kwJOju4W2b*55P_;O5E2Aa#7iKYk^MgzymJJ&)xgShfOO!sMvyb*7!8rJ=y%2)la zQsn1897$%J)dDm_$9vA7krzocZgAs3m-5VFE9CoU9Ynq3%8>{MEH@o?pOr^FN%z*2>H}z^iM|2p#}6+WsRbOtU-W=z4e0X1MsLe@ft-Q%K4g)~ z##FVA9ZWNgd@ss?BUv;Zp}JzoiOw;~l`CZ++tXo`Ka1YX(<5)=LP`JnLjLenL!g|t z&FoWR*ARhHVpU#Vph?27NZa&g*Pb6g39sGo%WI0)`OueL@GBxB2Z^yc${G;8>4Cr0>4hG_;X5F%_H?ViGxibiRMTI`A8X@^L%v+0&mn7-IsoI<9JWr<(3U zU#qZ^1vi5sICQaxcQK9z)``nrpbc|tgba=+Rfm&t!TewC1(!7efy41dGBNiT-uK0x z+g*vq9sUVeSp$pm6(CDTu3?|6u2Mh`<~_M78bj8n*R+-%y#FI+)g9;E{?}b`A1TnLx8N&@EC=-uc@N6K zqw*usURyhC9JpR@UaHEy-7f`lXI+5bL;NLN9t6sNi?gmU<-fQR9OqiUsyn$>b=!-0 z>0{7EE}QyjIGhMp=1;=oQy)Za-^+XI2OWLXGMp=gn7(o85K3!61%nQ0q7055ut3olCNn9=|U z9Bnxj3xJr)rDDG2s(FC<3!ktH6}Jp)wRYobYr@ke?XknTwKN)jp*WR&SmrNW_d`Cc zDr{6;Xo8&*#!%wk!r=V~;VE-*Ed~`D+LxN^TkTZsEaRSLD`A$cUL6!;_HT~3W|%2B z){FSuIAs8Eq$^Bj{t3X*io&jVF@w^&Fv9b+>}=z!&T*plcfHWj?tH@>_t^r|?);ft z{oc_sE18+*%)-oX;5)~EJf2c!nmhgHog@aszq_|flP>^egLNf%OM9NAjpLuP=~T9x z$8G$mVU}d4%Fbzls)le;FI}+DiW5yBzSXU$!UNRko`TbU$^3v@!G!g##P}lAK@CyA z$#(nH)ZKWbJO|Eh?iuB`5~QNYoo8D7$L_rywmuatDGI<5o*Sqk<06rZYb`E*{Gx}r z4d>x1U;m8J7S3l0K=UOSEDi*{V1f#&X#r)z=Iom#xiAfHQPesN=}A8=otY?RHh?a} z!_jlh8h6Rhq5oQS<7{Jk<73ET=`A4ixN-Rhb;0RY?r+T5+x5lF%-Vr+b?5SF(x2eH zQSiZ;GQH@G(`VUDS$u)h*qbRufj|C#rVup|`0I-HiJnonWep6KXi^=oJ`oTqmPoM{ z=ph_Om61#C2%Tc&kBoYMQBwt>JG^{4P|S(HsUl|zo`o|X_QYw(@G$+eVz25BeNc+t zc1u2?spMlYNckoaov&PPydcho-i; zs0N4D|4m2T9|{V3Kv+bE4cnJeG8yp{{|o0PDU9SPpz=Du+g8ReC2T?eJ%oFr(egxL zkfKq4mHXUgvchCzvD6fsOG*o1NC73m$h^L_0}e4uGVbu^7b9@W|I`&rn*QykXVF?a zijT@;#EW=I3nUmz{NLycn6BPw?;i6ytb2MilmL@f{wY%|(3Oj7&`M~@wNSRb)tTBM4_?Qs~8Fpp+E zsHIjPab_6{m`qN>=H&$_1LNs#!bX!LaBX07ktXlnjG(0WA|Sk;c$o$05g`^u(|n`UQU^O&ik_ev9v-_6~KUE7f{|Tg_0^eSk5xQZckbr8ndH& zT6qzgOfv1x9?v5AizIp0LDf}oFc4Ys)nhltI~r^i=C9X;u#y;F68;O33!KvK_`dyi zexdar>FYjG;sE01nkqBANxP<63Xj9c$FU9p&I6bFHnPc5e#ouhexhGD;7I+ zKM`H{%WYTJi&bP04*u8m6B`Fb)7Y?3V6Kkkd2JjQ+?js$xb<5gy6N!>iV$an470Dm*m^!G(OizMUlX5N z2T$T3h_Kjwy!`oD@dESNB=vbnnyLyT4YZ%yiMDn$!t_6!H`#@Ku>tDAD;;tquZkIv zH8etg3(iv{oVYi$YDoyog}G=jC%}79o3y)+t)WzJh7&u-eB9C_=kS@?gEviJt9)xVa8(j`O3lFI2x&@q(#| zLljb@=D#D@g}cvp#;R(IP=4{#6AC=l$)hlE!8QRO=n zg-mVXK+bkC_l-`mfCzRfTM#{58C`v(s3^t+-sX!ci3SdLNC&YnXScO~3MBTW3*w6P z#o^DZ@>53y6NKsDN{fTR=1Rf}RsAv`}L(<;aX3vmnjg`dhClotfXhPjgLT zTIDD|%gWk^iN7fhz|!g99W`afuY|b1dg_6mn{ad748Ve^Fmryb;c`b;Yv(}2E&g1lX?kyv-hlnG{(ADX5Gl^3;`z(Lc@nw*K z$54CX^!ko*NVYUB|J$U(LRL(lza*`!WZ9s8qG}ZR7V9WLA9Im@ zSQBE9ZX(gPe%mCbU5>&r)aIY~OEmSD22(GLnvWm8q4a+g5BS$!_JmN(&ZTrS)@U@w zghr+$yg$4A`Li-?tx(FLd}uiaE00mMptYzw7fHpk=WaTTxvg3BNHTS=R*cDUIrYQ_ z)3*Uv@ta_y`S3`cBB;s z?{X5V&>#=~7thb9r(@1U3KsllsqJK_2&NRZz29o*U0^<~YaUWkYapGQz;( zYpjenwP@~g>bIZoB<_b(bCv%RopGV-jtj9F3MM;%AD`I^yM-|ElJ!A!+xF`UBzdg3x zPFyfG>b8vcc5t4I&$}WlZ+KSC;1<1Y2P|o@`U0G_zh~D`c3Xyv!UvaBCt@FxJCRaU zNa}vzo}Q|ArE9IhR!u&>;xGBvUV^qdB7+`*tQEv#3+&18ss`|C1Dg}B(7hI}Gwnw5mv+XjGIE1wLKMk3v0nT7?4M(f1Fz}Lc&=cFfVui6_ZovT9xsSr)L)_kTqd2r_0 zrVY#}yE+!gCE|rfW&?O6Rd2@Po{{rh{-$f9J5!8GU+(Xki6Sm8`o`j>buY#0$QrXmjo%SI4>HF=WJCw<-7gO z|AdXEE3$Jg)$s4n2UQx7#57_cpk4JuOdkhX0{l=H9{}|xLO<$P%f#*l{JTFTa^|U4 zi_Gt0G5cEh^uQx0b!Qh|C>iL&cBqfEdw^4NuiOEhGkT#uW^7CtTuQfy2fYx6)P=K9^hV z%z3i-mYDKrDz3LImEz$H!Q+%oAmK*Z!>|U$xg#_3H6kIr%#OV~ zr*bz(tv1YDU}saI*`)3C3gWvz%`&8{m!J~i!wW zJ_Su_$gq~K256e}fK4?QhcnV$8nJ|i0h$rnLXp^}sbhZVN6ry_utZ+g>ys&kFN=%c z_258%Q;4joU~s$nb-!rN4$}wYO8#90DtEjAqGP2MOc$>LRY?R2B8&SFPhJ>-k~rtL zCLNW=HEaEn=+9~Ay7;O@;T~)&Vv!bi+nQ^SW*q6&UerPn{veJJ_tRj;1aGXuriu=n z6+}e`1s8Gq-aMe+r>a#Xt%-WG$ufljoA6xbvNmua-_sAY$C$ns8`zM_~7?}2; zP+H<-UN_H+t?TZx+7?|m1e#Ntw@DK|0?m8pN$VU)ZMqz8=4fviyxNZ(Bny6w@>D#J zKp$>qkE#ADJW6|$nYO18{5FlFQ<-)x2hAVF3)6zN+f0=Pf+Uo3(rgaUn-IGYU&4*` zoQ0@iGb_<8&kvtFqP!CQ%mr-4y=e*2Cx>t;aE!~Y}N{o)d_3wO{8)!+_lKW<%sJpdfpwtWdu}v}-*khwFxUqh*za^j za|w@52m1gRUGqFh_0YrhQM0Q(AdUx@+m`^9lb#HDZUXMl`bcm7yk4;lHvIc@^y5VY zf+ESOxE^o=z56TL^%foY;nlUW4~uu`%Fzve1dqB0X$3(n!XJ#&J0bLNJ-_?it-M)W z9Y7cd8nz0}j~jA|<`hMujvLa1qnRV!f0S$0~}E!+7C!)TjjIx%jo*Fk+{77y~wY-qAldn&xhy~bLxmcy9v&mDQ$naGZ!kJ!gA zVy+hcn#{q_HocN>ZdC|MVDyUX#n*}LC95HQB%@c_IkmcV}=~5=Yvo69dh-&Ob&>m zH&Sc1jarIxO@s~ngLYvKS(wu@cJ?C@a9|4P+m}{y;_@rIKI>ok`Fn>wb*~<*POV2>wV>_U(=-e{sRFfHvJXVG8LD zZ^4X={)Uo0MJ+%>?^W+b`XE^LC?>%1SDlKaE6lP6NI)AD$8c?ht958c>#CeuIT z-+{ART{}(sKZHIIDg~cx$1l&uZ+qg~3u0N2oe(-pkNF7aC*jPcj3sIkPuRrQbu9P2JQHN&$OM@6*V*&zsRaFW!b@@jjZ8< z#>RcuHl%ibG6EZ+^_VvwqaYlY9&OmOd=nhtP!dI? zkBT=|p?K`ulv=&#p(ib4n4O2T78&h~6um547d`J(*0%AEoLjAfHE)01kag`1a=-uH zWI@Rq$Cz-^?a0EK8dGs=PSp77F(h>P`vcm$z~rp83mbvuG$O4p%}L?-VJD3LoUl&k zw}Bnh_QKAdgQPWZXp$G>vaQL#&g4VvW~1?@N3YmvK`c_^H}CYjX5>tT57F(~5WFYH zr9R8MlCsKPBcd1O#L0`KrV$)))`))P2pyamQ^QjLcb80T(^07kvFF)?O(^8cHCs2X z)$!MCKF{G{0wr%3ldsU54|z(aS6$p#D@gip=5E>%}Rh=eX%RF^%w)EHr(qCIrGDI!1Qbw~9zC;!wt zg=JN5H>Kw?CV9=wKA|*P+@LiPlmD|9wZ=jd3s20`Q)aSM+tM zd2J`Pf{x}g+)XgpdCj^SKN~uVYcY2Q1Ft$Sf_8|KrPrvs=c$AREMv8R?YQZd{MeVmcv?IDOLIIA5da&O&OH>c1MXl2$D?L?RP6^4D)srFq5_f5jUdcVm{BdJg6O?`C4PHzFUJaJBx7UbN9C7OK_#3FBx?k8O#@8ohZ^nLue=ujRr zOuBN>B&MN2oX^ey#-dUud_p!8?)nEa=uStCX9f4RA+c~4f>nZ;!I&;mxIB1ihWRo# zR-4E}yPdO5V&f#~jU7w@jYw$Wu^K8jt{BgXADFsRs-jm0S7m`ocTs@k3Jn(*Zp}&7 zr|88RhoE@GWguBe^Y-e)!ONABk)NH!v=)rVu9mW++D&-kRT= zWzDH&LUw4C;`|i`G(*T3;PaAZ<_uqwdaSZVJTa0qOK3`NqrWz?RVlCx+taf-QIA5 zDb$=5{wl3729HOYA~;?6gM_(}Z+N>{A^C(kv=cku;)z!wp?cS9#pD+5cIMyA%02c;)FlX~HPk{N}JS{Ss%sy_WhA)GgzeNzgu4-B0)s+j9jH z=)$OLkEItLkq1g5CuIINX}7VQ}U(}o8lo`3o>wf0YLcATyk>w(uq6gg!$qp^O6o2f)MCVWT!I3 zKes=Yt=l0Pw8FXLx%4Dr&;IfJmD6%&Du1sH+*r=Q%PG*&8E3cFqv=^nr7z9k81OUQ z%_DlD(KBiZ-a!B5`A1oRl;656wbnvoCmi^coDp{xb)dOzlweKdu_Q|a(Id)L&~Dpu=1-elmr zrqCLUrXCs7ZeO5RYMhWz?4{mP-bm@(?-@NpdkVk}lhbkyMc+bw-x1djKDaSMID=b) zUG;(NY+8oJPIh4H75dJ+&dX5h+UTAVbSZ65@~*K$f~ME~S#PU>)r~p;Sr3Hg(Jf5w zB_(J48eH!96`T8K-}WmEXZ1I^@EcW4sr%9;V&3-{gDErTfR=c2V3nj7gYd|vC#v;Y zkeT=sAJqJ7v=QbiCuS~=SBUh7s2XrUQ1AmY`-)7vR+K599qq^{njxR zvp&tK#0tQSIar=BaQ8AN0=V_I9W@7b?j@wPbPa)DbHuoG366>WDmIqSFdO4a-(`~U z^@omsFm@Q@&vxE^Qa<4y=;c`MCr6r06>w|MN$GDCxP(9UZi_H0G#BXlyG@v418w_1 gzVKz_&v-x7BXLV8x;I`%eyopLs3rYpKCtUKe4ofY&hC9(WWm z4}&4E!C*LZ7)&}E24i)KtJb^)enIu_ml+P8(7CCo-J|RhaP<}15#SFe2QUG86%ZEn- zz&pIqYyq$%;3G9J`0~Gb_+PI3Ka%~wS@(Y=`~Ns%DB}9Rx2d(@cDNxfZ0yS&XzLV8 zZuF!ZMbBl01*NMXJZ`ek0rS#vBfAja@dge|)c~u>~>k(|!Z*>Ytl^Ir>GZ#>i zqboV(e?WR$y4SvX36Q`Gd)_5#LEK+PBl@a}y%-#nUqFi3pvrzDJN;Fl`#}>~?oZyq zsiTw`rlX7LS`ycrdBRDID`|RM>{^#7v{9q6nW^fy@}WdgC3ZhUv-gLg%{9HYnk8)a zyKGy|f4QYcHo`zA{v{PyGXN7@ZQkHVGFGyVVU&`H{rfPM>t3YGS1+#s6a9(a5RhFZ{;S{){-hoa({_dpiWQQLvEF^Ol!QuHjm#{l-7I>3H1J#;;AXuMZ!=_ zMM35)9H;FAJ$;K}99Bd2-g|X&y@q()QG<@6*SFHsGv{;mcgFWfYOq_CT=5hewdU4| zR2-;KoqA0=Fr~rpU-f|)ROpqO2-}uk-t;>v8^|u+*PpIWFHHjx{WM?w)k71htwU^d zzkZC)nJ3Ud8yFCMU8(xd;FJzpQ%#wZN#rGE#g7c~`Gt&}xHzdDphE?Q$m{cGDfGR8 z=v&@WzPb2n5YcaME~7tG4ulERQbOP?w4FBDnqq20V`2|%7cPg$NJwhXO>JO8sSnikBvK8 zuOJscVNp7equ7K!)L2?56&KD36iDGuf7aKG#TB;nvX7^ldF=HPBMWl!*VuxqcKnAP zEz75cOK&~<*-8iYo>!D=M#E!v-}-f1Yc&CZ2ioT1Fvv5$EW6hDA}#=0^3Tc_RoYx~ zn0kTKctt!%t~K1_7u_=-B>^*^Rh|RFZDpkHVo31Kqf|ggziW`2WN=`74K6ykE6X0? zkw@>dT2x?%NnbO?xHKA&q)t%ADQ`$@Av?JEEPZ|=o5!#(W0Rwlu_f2^iBL~I??YLsye}CYU!1i?7At2=x+xZr5cH}th z*xHpStb1JUT(axl5%Z1_HfgxL68QkWW9w@ob&?+Nds7k?g3ER-7`~g)VF5y`rv8v34!fDPY**xal!2SA8tI{IjTH0i*y?s01q|&%LC)a>C1xq`b9yLiP(%p*<~E5!h`tzxfLT z43iaUeR#N6#N7oya}EaSYWv5S46C&HM^V@qIROKkH2oH zdG1&afDPX89nC|MULPF%GF+(M34Ef7T>gOTcYHa-() zj5BbtDq5SarGr~1_lRA!drsmGdNPpxwX_j_3QjMtj)|9qKItdXbSrfwnaiZ^;i6y6>@$dOOWzQHI{AImPDJB5=V zu#K8dA*3%}Cf3+eD^Yb-;)Y861*{)a^ zeay1V#qa;X#qX5(Gp#EH=)$3Z3U<%V+rZGvGCHKjl#5j+QQjAI(+LejNqIfwNw-O> zF38{F80rlUjmrZ9RKZ}^Y7ZNix(60Sd-?owBpnb~!-0i%xeZxdqE_bZj6JRq(P_Nh zKx=n$vxlp$QQvi~FT^O8@B^zC&uJUhBzaPQc1#f}6;@thoHZ$Lx$LZsHP)Ywadr0} zD(l<%c;IFeQoU*SY17wKM16ycv321D!D^(o-jD&3W4wGXpZDuJcx-3z08nTBvW=H2 z%61K(Oy-?bw%DzI?t9#DFf?LSmlIru+xM0f#GtY@1fX^N(-hsckxPSDQ+zr7t>v3h z8?VKPi{SshN%Y%6_FDh%D})6NkD2fLg#Ax)uP}YBz!Wx&ztl{lh3B3^ub^t<}0aX>y>H77VPJ7&!v7g)-9oiQ z&5!VZ34DZ-GWkXSB`mcBaGe!X{TbSP&1IrQ5dHz#uW}SW=i8omVi58;(0+;kmH1Bd zRcTL={mVUd%CWAUx7mI2O6?Llj!?#u!DJbEG=@sPXj`_+?6+b*$c;%ZcjG^if%ap?p9(5TH^&b~ncC?k z?^?;jr6mWE9>HI*E486+7HQkVY6}iP_DMiu(w5JcB4=^q=yG<6d@h3f0N4!<9BhA1Fsn&bE*{Y9|l4qQ4D(RYc%aI>=c1` zW39f&uD3*(tCnd%mrC~94Dxh`8B33!UH`+r;Ls42`@fllVArXSFvDJ4(9iT^;6iFG zVf$robfR8#9rQ6HSFkaR<3T1eZCi66%zA@dkMR*#w>eC_l|x35$b)%yKFHPH_mZ09 zOal%NoWgjo8`>W#*1o>>=q@T~lbYj|_TU-ZFS<9BxUM0z=c4+!tpa} z^__KoS%Ja$shA3)wvXLF@(BS*;-7&d+y1aff0D$wc(#vZ103ylqQ-Q3sPA*a%!*rk zWmK8Hjpuiw^i)pM4O}f%K`xbQBUR_;J4XX{TCzUnuyoF|4q?9zWJcHxbaWSR&4><@ zD`P{P`*T>-S&l!JbtMORZLNu;lTD%`6nCTL zNt~+_F?xwu*+;Yk9^P$<=Mu&wJ39)^S-$GgdyfWEpUMjE4nr0guvKA}T7COR zYv8OOFb!NKvAEi!%Du(@<{N?WZL%9|z8jP8vz8G3o-}TQ;)=#5;nt(nw485@8WcD= zMRPJi-Vzap9kX$AQ-+DzrQtL@f~WI4<%?3BUOComTEQ`8SN{02@x_xeli7U_U_(Rc zQhWgcsn@8Fe1B{gVgp0|IhtJw(-&Ge%vbYM#yI^t@OZ3&r4e`QQ3{ws^1Aswm?~H4tFItTP?Qq)Xn!} zMTxD2H}E-M1x0e-KR5eY-iPe7ut5GkI(AE&ClQgSIdLsJz|Em42$MsgB_t9BntZ=ruD4VWQ(l{Ln9UpRCt)uIE{?Co*dHd(;@ zC*;9n~;y&%_(xa7G z@2UjT)*?wy<{glC=WuN>0dXjdk%WlMEf90OGJItDp*ybU*9lZ{yd^Pmta|28)TW}Q ziq6ZHH{qeZ#hIKFyVV2PD{&_pn$+jFW1~`Ya*hN*^z1O1FwDfcCRv2o^i^{`fk%P- zIYL__4BJI2_Q$ODxzCvFyp-54ll|j6VEGi;A55C@A+RMz8slrXTQKP$fNaYaXql6A%S!u$7{W!aiP&n`-n&Z_l}iP=gmJ3K+2}7w zx5iz!HmjihuF|THu$Lg%S3+oct(9-;vQNA1C9;EUYu_SbMwQgwT{u5z3GmWFx2Aj z{I5!JNZ$C%wrl#iNDRN&dDF2})25i1{caUp@0F^|-nHG6GStsOM(9u2yNc0nZDj;A zt-9gI?$Gf}ee8*Edv8Y)BG+}36^Ow<=eU~k%~Y_y^;+5@-uF(=e0qZ(oIA+z&1XgbLN|eX^`9Hikura1H$iGF#dSdpA(*Z1tIU3 z==<#mFF1{Nv_KsAGerKkX!AzDtgGVqPY^(jE(Tph$~z7}$}#%c@pk@9x@fP#(D9yk ztc=r*J2Y$chi@%sSZsSO60q)3Cn>zWES_T0gUpcg)kJiS&b^JH*R^A-eS0~`=4q2< z_}rju^}@@!CQ}iEyPEpdZ!?Hf%m@8p}+2~FcW5BeVMYJc9~n@IHNVpxPP zm?hFgk#-+*NmaA5e)ro;&bly*wwU&$TL_y>_7}xe*s@aQs*`ci(LgRQd>pvm$VFNl zO|4>NACbCDT&dHq@5>WFAD7=}TlgFsI{7A)Iseiqb03KZ3WlpBYEi=|_|rqoAinng zWFTW=V+6}pZOronCWxxOY70I9x5+nib~TFV1tN{` zW$jFA)%91f+S#`HwI_RwvYLKw_WV|*bv^fbvZhP_rzIM4hclC+kbC}3oY<8IDdy4u za4RnTsw|}mJA%{jYM$Rpb#&#b)%D)1KPAh(c4v!FD*$ErId=8 zDXmNiY3i~u_sV#vp)+&Po%FvY`UL8UI%Z%?rW6YtXcO=ZZVl)M%p=UIAb2`@u% zC|F$PzKl)`ZFgF_oPT7|c#H%1UY2FHbZ)xxchAj07y~ksl?Uzjdpw7DCbKNOi0KF` z_%lpdmt78om+4}K4(!Sks=Xb5V<1dJQttZ2G?h1NMv1isX*q2Q{o6J^O8RQDw@E>6 z@7oT}QXPWklU{rI0tCDT79p7>wT3*uj8Cn*^L5Ey%ie=GgF{H%qdrVMS+}VPk~~K* zhdkWP`E(vscFyrHj1ke}b;{!!&iLQMuytu-S4tm_iZ@#7kovk%f1P%r)c(sy}+$fLtMv7wq# zrb3ml^Q)a7565h5N`mP?PG-OIt7pQZB*ia|Uml)W3S~58FNSBi08fy{MS}=ABc1+E z>?27&F}3EnUIE)Z_`OM5S>KhQCkS}}ZRf3UBo8IVXEtZnb42*2XY3-!WK(ZUyqzyJ z*4Aa~jtr(a%L!IFbkA;hh})>M@6F6>(^2vOY{~~PbRa(Y~qu8y{% zuZksPg8GQI)xC1=#Jz;^uf@EA#9YXFtZ?Lm6tsEzxnw@(97mZOC&at^^t>qmC*Gxo zv>Gm$9sZy=zC0fuZqqShvrKxls0XLF$AI8&vAV`3dYS(rR>ZI{$k9vtN|fWrwgZq8 z<#TXL8Q@D}elA6;4lX54LHw73xW#QRB1mevGE(?4$NI(txU{&|(0J?GRijBs`GsaXl`b{-mc7;)waF8#xtGKy<`Qf!R=uu{|n2?1p z1^z1LIrbTV$3l143Q5lN@nAyOWf0uDbh^*_c$(FtuBIhwsBPHaR}W2_M`bQ2wx^Ni!j`K*naEh#s(+^sFT>M?QmDJot}hnEe<0sd%C#U^JHxd-4I(58=lGdH zTAAk2vg)8LM-))mkY~g*A;1ctnlisD=S}+RxmR3yArBsUcA(FBUt!nL1rn#HagAzwxzAc)SjB>DR{VAQ zbnj|(h2v;CEB79llS8sFmEJY)KbTXcP_^(3ZnU(DFBCq>ntSTVA;l5viJozu;XPs*q0C1A-eXJ%dN;bV)(R(~ ziZ;rO;@-V+5#>eBH(2zl_8K_??ECd(IH~v<9~X%1!j|G{bw)fA^N%mg`TC^-U~k*a zU+60#T+TQ5W*(eLR@exnsVyqxD?hLW10OyD%^6>vr&(@5`sJk*g9x z#CaId@LT7F`0l;py!EtVK3De~$p@6gZjrVN%X{UQ_w^rR20=_iU%5q$}l#5$8aEBc`~<@l;0 zCf&L~@$iE7b0wZ*umYg3-2muT$GO(6#wKo#((q)1?@teEV#*6LKOoL# z)Cajc8FQT_fpWur7jb)=`G9YDE^i+oTaJ;#@i=`@B}l**qD=QCrjHhbEzC0En!d=?~G9p6VA^F~S#)W~cwJ{O9klncm zAtmb;iHpH=v)Lsn(zED7=M8CTqJ|=J-g!8rFu1(81k~jMU~i{oceP14@B4J1c(Sm4 z9ZJ;G;L?`jYnEoZy0kYo-ib7gxNq*#^e3sfTqWq4obHaxtRHL-^-Ug2pAjYdmM;!; zx3V(zf*4a!XpGBW9XR8AHSS;NA!Qa^42TR#IR1QVz2h9BuQQcum88#VxA@cK974aw zlp*+LjlWi07d`rMcC(|mr0^AE%l`YiolaVQPu=H8B;5Iuey zVW{-pu)==6$`53WTR1HGh&_fyVozuP*Sr1M}z$<|F z{_1Jg2kyBOp4{O%R9S^mf_XTMrD|XWk9pRB$^w^%p;=ddvV%u@LhS}kos7lpUrL42 z?ud+V5%#nf%E(V^o*q?S-u%_P!Q|LdWta#468&zdZ|dwgJCzSW$aHksj(CEK^0rPq z?bn2?ZzXRQ-3VKU1&>adFK!yqL z4+5Dy{OG|fqGw;cdJ6Y-q{7ofhk!|e`^LMHPOv-OolC2or5U*GOI!%`*`WgAU+JuH zbW24_tsrpMgzkAWUgmxQMBu@?GAPlpyXoi;RS@H&&de8Mu)0WHUOVEimWO>=8;rdw ztPJbZMs>tor*VxDZNqZ_-@G6y`4Ki^{tOXd*}tj|+h5*@7^&yqJW+H`YK%)BHMNp` zwQ#V>6JhK4?N1iIZ%&e3A|q5Cz5l4ImYLxyUP;w-Ak8*4peviE zCW|E2>OMRH@ONJQTP&w>*R3OF#*YL{%H<+gMVF5TkYnl|gL9yyGfNPYON}dK>Sxox zjw2{H8mQ3%bH)vDY#orLPlby0M@fT(82q=GcsP#iJWo{w+;2e@iMUs~vANUlky?^w z1S$(|_;|j7xe0gU-~JPsr(?_QhA$oi72!`yT7BA<#zpvKPf6g{D^;>e4b;Sm04(o${3UN?(04WqB>z3(jv3Lk(seRs-*`y27!iAcPDKl8F9%#1&=K;=6^F+=)ap<=Vu}k2=BV-Lni_!>{N) z<@X=yG-A+T4|Zl=d$hXPZpHS07CmNr*I^@2OP`>&_OhGC+#RbI;+#c1L$p=zy)@#t z>$kQSCV-AiGo^`VgPHleCnQwcIDRKCh!@3Y$oVR@%-ty=uGd+Ol$XZc0S97&tV}za zqFLHKzPg{B^}U=_;&%Ia7rDI4WjyP5P~mCZTK0-kZ6d%uGhz>>X*az5c zK*869sTdo*__XOvyy51|14t)ckXf@Bm8=fa3eYO3>^*rWqf9lFcZ3A*P?wDZVe|+O zN|5|s9~j5C&*bM!<#pzaCHqfr=t}q06#B46ysLohyr?4^KfM5~;Bm<}BuP`3?NRFp z{>h<+*$~^N&U|mT#T`(3P`2!fkN3qh0}BshwT%{R&)ouP-6@b5P?PO3872icI|0P^ zrnUpvLN^nChaFp^$07l4E-i6E0Hs!|`*Rv}19;yhN|D-{-2S|wsZ!v(hB7a9cf67c z9ZDwzEDr!gYDNR}wy`O@_B!>My}G0motAZeXbphsyM13H%aZGgE*2k@Q|cGZJimUh zQ2{HPS)Tz-u;XiFauUXWIai}S%Vag7K+7hV56fHAdTZrB50-jM#Im1h6x}Z`=XL+(WBzuVV6{ZXY0`=6+7xeCp6aUsQmH(7SXFH zS;y8R=h7+l2uSkFhwH~E(O-ipX*xyoWgg8PrT{a))w?go zCfn+F=y)3J^c`bhAJm;Q@jt|Bc`DDiS`+KL&G!a$0XCRYPq+~BqI*CtXEn$OKR*FN zimV-sc!BNIwoo!UVk{3?_nLd7NfMooyn+g>^Bo!&a_cBNab0fK>s=r#&+eCOGhm*I zJQnp4t{uh!KxlNFqrmOU`Evxn4vyL^6yKGa=w>{J6}&oTnt_lroZP9vj~j67 zJ<2yJRJzlMqtP}UTJBxF=&i1@We>`wf#TmJ{jdP5-&-eHQS^$K`Ru@Oh|?YfRs-2a z^Wog+gH6d01ZG>PrfH-=owP&OFqBBTnDVZo3sls+IQs)Xh`cwo+ysu8I{C1IM@NLm zYO%pNL@9vt46EEyQ!(Y7xUB`0ZUbuuR04zLvtRL@W?Jrz=Y0t06 z%Xh1A8%U>g6 zX5a}NlZTWwab9#bcGI-X-~7HwV1tqag?WDk5L1naH)E1igtl%L!CNrC`#(>@F}0Xt z{4pDb3HI{dDX))-^}2bUPvkVdMkb^jB?L2i3i2$CDHpQlJUd{g9Q1DAtrsaYNIAC{!>PWz5XM-xcaK)vZONG5+1i$;Bi8R8M6xmxd>nTaf{8xj=4Ge4O$yvf7Z?;Ng^RA|3vQzKKN0K^ph%}j9U@Hh6$n< zYBSx%u#QZp%y2@M;u@5*w%kL#04+9sCsMrvYfS)bV(PP_tz2A9YxvKPtF+5r_G7OB6+O5a?w@y?fu=xr-#0o&r@BC zi+a+yHqAvob|vXSFF=q~T8!VA5>S{Xe>OVkkcVoFU)9pJY5>BlRU;MY(H=eY@`Rej z$twVT3PZhXJ~Dwy+|PPrmUrA916f`wW%tQH?@L0>%o@u?zyxnYdhu2TM#^sA4JJDT z2s6a?O;7|0u~Y51mSB6F)YdM`{46Gljj%lcl%_D> zQ@WF@3j)H}+>qTbs&ql+V<3AIpVFMGW&Ug+wh61uEIV)A3_)2N{<|R6rsD}u2YmuF zFW;Alj2mTWV1+5>?yazWx@2PPT#m&u01v7OOo&rX+w%2;Ah(p_g9VCFS7x5KzM@b| z>O~0}l*&%yLH3ATe$7`Ios#F~{q?}B9YZ0fc&`bqfRVtv42ULrZcRRc>w`?qWaxBO z$@w*ewzXx(n|(dRHFI6fGbBvI3tW=5{H`uQ66(zZ*d+^_-kh2dv4%2$RQ(bv;8ojo z^>lJ4vJu9}U&Fpe+2lzskOXcKVjJrR*wlW$_TYH#aomxHoNMm!w1Jx_Ty6yh?5#9!4H>H~=yRn(Q8 zxuGX@hr;d)gvvZ-XgYf@JgtMn9asO()zab?YJB{Ly{^bKT%zE^vSCr-0scc6N>oW2 zbPHb(T)b$Q7qOhU&u&iwF)(kv;FX-M?_~rNjZKLcmUd!a zv%rRw5Qm&5S+8u7{%oB?cua(K;`&qBSk+E-Jm1vzB^Az4c5aO@Lx;6LXqKwJA>>Y-dj_S%b>*QTq+l~e|XMuX(6S#f;W)uguyE?*X%5SvekT_;dH3&z?JlfD7oo7)hRGOVU#Vrp9Z6dtow@l3 zDW_mq-x(Q@1k^d0e}u}LPM_|!?hRnR`2V<4Ky0Ms*@8gShC4qV=yPp=me^+iV=O|M zp=Zw@xQpIc^cNb6{M;Lc z;%G1R*VHuCOUHxQ<)zlh9dW$wDj83-tpQQo%vDbswQ~02G}*E;w5c zKG6SAu>}A{fPIXV=AQortGqA`4@?}?KR6|Ky-61sE3Tnm{UGv7I}62fp>6ASYG{`X zfM(9bSZrtRK+R8fJq5S#5_jiJ$h{a5p|=ag?l|rd*MPwXSdnA0VdS!>rFue`Q@s+P zub1831tI+M8XiPWM$KJE>^tv44K|YiX2_21^fv|Rj(dmbP)=+z)LA6GW&gU4$vzzb zyhez+9r&*hu^O}7FqFZmpZVWIv6qf{#wv!i>j6-}8202h2wlRvyatilg233o(8aSs zLe-OTHhc*|!U>=xTL@;%-Tb(UJzjA;7d^gSVJ&we7W2)QX@NNkw$mD$OxM7tyfyuu zsRM-+qt!r@XkS5A6Uur?IY@&}xeBq-_nP-#wdl21Itvs&t zDRsQHvRibKMg0qK1OvLeQ0u@6{9L-SeBYEd_QT#tKHYIgp587x>f1uQvzerWU5)YM zB(-J5(3Lam9Br-3q_6bIMSihHKNZM{I=LU&_Y1!mx2JR0wf6_+iGW*Qx<5Df`d$qg z59uJOsxZ4+(96D(oB1bv;!(z_UF+rbFoL}0T@Uq5l8%99J|t@Yuj_%-1GkS+Lqv{f zY2}QHB{EzwzR;#Au-$u4JMbPS_1u}OgF>w6w6XLa1L4Bv+i-A60(5Kn75h^;O^tBv z+5VUfqtqVD7e=GQedP0u%GFpjybTd`t3p3ORIK1~36ux3^=ngx5_W%zH~Wk(_yU8e zc_OIcjah-#GFumv?4RJ#2JO051O~ik4G3g&KyF0buiE7yGq104cFtq{c6Wl$lNP20 zOvFzz0%GspyJo(%(@$_)`7Tx9xxE1OAHK(ghR*+BUYMIZClI$?rgzHm?N0O_*O@)| zMAx`Ubywo5WYIl07CxTW|3{b@m#@+M}U08$auB4Ki-!EGjRv?nB^B0}( zkYB8@<_~RU?u*T`yoOY±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 X&;NZv5I$uaEPx=@b=8XQ*#!ST?R0w1 diff --git a/docs/logos/safran.png b/docs/logos/safran.png deleted file mode 100644 index ece23c8e5ec4bff96ac5aa7ac17545896d1c30f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24435 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%0DsPBwOc{GH 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 diff --git a/docs/logos/salesforce.png b/docs/logos/salesforce.png deleted file mode 100644 index 031f942b0f9533d811b31aa3c5d15e3fc9741f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20712 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 diff --git a/docs/logos/shopify.png b/docs/logos/shopify.png deleted file mode 100644 index a4f9cb575fccaccb38534bd5abd64e7cced6d36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8003 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 b8C#gT{r?#@*iR;(7ywWyd2pG8zW@IK(!g>; diff --git a/docs/logos/smithsonian.png b/docs/logos/smithsonian.png deleted file mode 100644 index 0cd759abc48b8ea69b73b7d80ce4595c0b4ae1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35574 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 z 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 diff --git a/docs/logos/tinder.png b/docs/logos/tinder.png deleted file mode 100644 index 28d0d0ddb561bca80a58c74ab15b79e93a6941db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28182 zcmYhicOX^&A3uJsSyWtEA#^Lr9+9%SsO;R!wa2x}PRPC}T`OcnvJ|5R=Q$tG`3lj}P&rS3xaUZA!r|5!p%dFn-ByonnBRr1PEesepjO{ z1^z%`p{jy}PEP-&)n~_mE0j;~t1D6dq9QvZeEl2o@@oikV7ZT!M?D)^9`}4^gx;fE zTlKaseVT6A!FAAZRg3-sll98`Pmq;ZX}NtUKR@a-x%Q9Av@<`>!!0ikD+&E!Q0(hU zPNyc%id7<$r$y4H-z@)n{Y#gpzyCD{owrX#zVPi#?D?f+(^x(ctzPwBk#_A(^6p{K z8tw}Yrd7VMFOAZK&4``(wcAy=^FYcm@iOAS506+gJ+1ONnM7GZfob+T*Tbd z{lqrAxiIAaKG!c=Q=K8yI&tfqg~-z=<^BqNNd8++@G;~D zY=GR!gy@O*LMML`vp7Nn^%MtmEbO&8ugAj5D%!;c2cPKMe^*!n{bs{O&1QNWi|oCg z=LnF@JltD0))c}bXT-L)w$Kg^4l1NMdi@6Q;p=Tx7?@cD{u*k_Z_sVhTsH&{K6OFl ze1RI0u2OuA_CB|4omB2q=T{>gtFdQARghVX5z0FvtzD@8o6zI+&B{wqAz?xUP(k_3 zhVhgH?S&GY(pN$MJyD?r4{>RP7r({Lw8oeHs~!A}Cp4n>kS&a1E!*h+RZG0SNaxI1C~Yp~uezLH!`@Y78OI$~6MxF$$=D=6e~vO$5(A(S}E|%$DTHS6Yj=A>2vNq#T23 zIQ(9=h3PGwD;RznanQ^(*9t z0J-zqNO#Xzyp)jR*hl^$uT%9PUwk5Abj#f}8$V&l!IR6iHd&_hFWC6J@xa2hHQCw{ zxe+IG&Bl{?1i~U?CFehlm;;R@qh#kzVml1sb~9tlB> zlv9HwJ8#(99+|1qo!&LeL5(4UqDGxesi$Jb!Z7-q25aAYo1e!ohUZRxd-ksF3Ov1_ zU|9qjJ*W|6sQv&fK*BKQRD;}&7>Tr%c(?PPo?I$)*qt0(9U%n&;yK*eVwCpi*jAI( z-V1H9pd|T7Ty@D=tQ;6o9m@E}+FlD_jn(sKkUAx{-f^@W7mC5z(wpxkrFgXF+LL97 zEc>CRp(fZ_8{KPkm%4SYpF&Ls2V-&0=ovZ=husWl$=t#3;3w`_zBkD$QzJ<{AwnJ{ zlksid4|+wTbx#p#$!Hk=k3@eAG2=X$Lp?)cDC#o_Zb2yTgwU7m7k^#>B`!cUG8c_k z3qvBz#rgjU&<_ZZHK)?!*dx;%Q{}X??JDh*>I%0D^1brRAX~FODnfzYKIVodJ0HT7 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 diff --git a/docs/overrides/index.html b/docs/overrides/index.html deleted file mode 100644 index 74a4987f..00000000 --- a/docs/overrides/index.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "base.html" %} - -{% block announce %} - For updates follow @remilouf on - - - Twitter - -{% endblock %} diff --git a/docs/overrides/main.html b/docs/overrides/main.html deleted file mode 100644 index b4183d71..00000000 --- a/docs/overrides/main.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "base.html" %} - -{% block announce %} - For updates follow @dottxtai on - - - Twitter - - and - - {% include ".icons/fontawesome/solid/star.svg" %} - - the repo on - - - {% include ".icons/fontawesome/brands/github.svg" %} - - Github - -{% endblock %} diff --git a/docs/quickstart.md b/docs/quickstart.md deleted file mode 100644 index 2e1f9a6b..00000000 --- a/docs/quickstart.md +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Quickstart ---- - -# Quickstart - -After [installing Outlines](installation.md), the fastest way to get to up to speed with the library is to get acquainted with its few core elements. We advise you to take a quick look at this page to see everything Outlines has to offer before diving in the [documentation](reference/index.md). - - -## Core elements - -### Models - -The first step when writing a program with Outlines is to initialize a model. Weights will be loaded on the device at this step: - -```python -import outlines - -model = outlines.models.transformers( - "microsoft/Phi-3-mini-4k-instruct", - device="cuda" # optional device argument, default is cpu -) -``` - -Outlines supports a wide variety of inference engines and model weight types. More details on different models can be found in the [Outlines Models](./reference/models/models.md) documentation page. - -### Generation - -Once the model is initialized you can build an `outlines.generate` generator. This generator can be called with a prompt directly. - -([Outlines Structured Generation Full Documentation](./reference/generation/generation.md)) - -=== "Text" - - ```python - generator = outlines.generate.text(model) - - result = generator("Question: What's 2+2? Answer:", max_tokens=100) - print(result) - # The answer is 4 - - # Outlines also supports streaming output - stream = generator.stream("What's 2+2?", max_tokens=4) - for i in range(5): - token = next(stream) - print(repr(token)) - # '2' - # '+' - # '2' - # ' equals' - # '4' - ``` - -=== "Structured" - - Along with typical language model generation behavior via, `outlines.generate.text`, Outlines supports structured generation, which guarantees the tokens generated by the model will follow a predefined structure. Structures can be defined by a regex pattern, JSON schema, python object type, or a Lark grammar defining a parsable language such as SQL or Python. - - Example: using pydantic to enforce a JSON schema - - ```python - from enum import Enum - from pydantic import BaseModel, constr, conint - - class Character(BaseModel): - name: constr(max_length=10) - age: conint(gt=18, lt=99) - armor: (Enum('Armor', {'leather': 'leather', 'chainmail': 'chainmail', 'plate': 'plate'})) - strength: conint(gt=1, lt=100) - - generator = outlines.generate.json(model, Character) - - character = generator( - "Generate a new character for my awesome game: " - + "name, age (between 1 and 99), armor and strength. " - ) - print(character) - # Character(name='Zara', age=25, armor=, strength=85) - ``` - -## [Deploy using vLLM and FastAPI](./reference/serve/vllm.md) - -Outlines can be deployed as a LLM service using [vLLM][vllm]{:target="_blank"} and [FastAPI][fastapi]{:target="_blank"}. The server supports asynchronous processing of incoming requests, and benefits from the performance of vLLM. - -First start the server: - -```python -python -m outlines.serve.serve --model="microsoft/Phi-3-mini-4k-instruct" -``` - -Or you can start the server with Outlines' official Docker image: - -```bash -docker run -p 8000:8000 outlinesdev/outlines --model="microsoft/Phi-3-mini-4k-instruct" -``` - -This will by default start a server at `http://127.0.0.1:8000` (check what the console says, though). Without the `--model` argument set, the OPT-125M model is used. - - -You can then query the model in shell by passing a prompt and a [JSON Schema][jsonschema]{:target="_blank"} specification for the structure of the output: - -```bash -curl http://127.0.0.1:8000/generate \ - -d '{ - "prompt": "Question: What is a language model? Answer:", - "schema": {"type": "string"} - }' -``` - -Or use the [requests][requests]{:target="_blank"} library from another python program. You can read the [vLLM documentation][vllm]{:target="_blank"} for more details. - -## Utilities - -### [Prompt templates](./reference/prompting.md) - -Prompting can lead to messy code. Outlines' prompt functions are python functions that contain a template for the prompt in their docstring. We use a powerful templating language to allow you to loop over lists, dictionaries, add conditionals, etc. directly from the prompt. When called, a prompt function returns the rendered template: - -```python -import outlines - -@outlines.prompt -def few_shots(instructions, examples, question): - """{{ instructions }} - - Examples - -------- - - {% for example in examples %} - Q: {{ example.question }} - A: {{ example.answer }} - - {% endfor %} - Question - -------- - - Q: {{ question }} - A: - """ - -instructions = "Please answer the following question following the examples" -examples = [ - {"question": "2+2=?", "answer":4}, - {"question": "3+3=?", "answer":6} -] -question = "4+4 = ?" - -prompt = few_shots(instructions, examples, question) -print(prompt) -# Please answer the following question following the examples - -# Examples -# -------- - -# Q: 2+2=? -# A: 4 - -# Q: 3+3=? -# A: 6 - -# Question -# -------- - -# Q: 4+4 = ? -# A: -``` - -### Outlines functions - -Once you are done experimenting with a prompt and an output structure, it is useful to be able to encapsulate all of these in a single function that can be called from other parts of the program. This is what `outlines.Function` allows you to do: - -=== "function.py" - - ```python - from pydantic import BaseModel - - import outlines - - - @outlines.prompt - def tell_a_joke(topic): - """Tell me a joke about {{ topic }}.""" - - class Joke(BaseModel): - setup: str - punchline: str - - generate_joke = outlines.Function( - tell_a_joke, - Joke, - "microsoft/Phi-3-mini-4k-instruct" - ) - ``` - -=== "Call a function" - - ```python - from .function import generate_joke - - response = generate_joke("baseball") - - # haha - # Joke(setup='Why was the baseball in a bad mood?', punchline='Because it got hit around a lot.') - ``` - -=== "Call a function stored on GitHub" - - You can load a function that is stored on a repository on GitHub directly from Outlines. Say `Someone` stores a function in `joke.py` at the root of the `TheirRepo` repository: - - ```python - import outlines - - joke = outlines.Function.from_github("Someone/TheirRepo/joke") - response = joke("baseball") - ``` - It make it easier for the community to collaborate on the infinite number of use cases enabled by these models! - - -## Going further - -If you need more inspiration you can take a look at the [cookbook](cookbook/index.md) or watch [Remi Louf's AI Engineer World’s Fair Presentation on Outlines](https://www.youtube.com/live/R0X7mPagRiE?t=775s). If you have any question, or requests for documentation please reach out to us on [GitHub](https://github.com/outlines-dev/outlines/discussions), [Twitter](https://twitter.com/remilouf) or [Discord](https://discord.gg/UppQmhEpe8). - - -[pydantic]: https://docs.pydantic.dev/latest -[jsonschema]: https://json-schema.org/ -[fastapi]: https://fastapi.tiangolo.com/ -[cfg]: https://en.wikipedia.org/wiki/Context-free_grammar -[ebnf]: https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form -[requests]: https://requests.readthedocs.io/en/latest/ -[vllm]: https://docs.vllm.ai/en/latest/index.html diff --git a/docs/reference/functions.md b/docs/reference/functions.md deleted file mode 100644 index d29213a8..00000000 --- a/docs/reference/functions.md +++ /dev/null @@ -1 +0,0 @@ -# Outlines functions diff --git a/docs/reference/generation/cfg.md b/docs/reference/generation/cfg.md deleted file mode 100644 index 4f0285c1..00000000 --- a/docs/reference/generation/cfg.md +++ /dev/null @@ -1,149 +0,0 @@ -# Grammar-structured generation - -You can pass any context-free grammar in the EBNF format and Outlines will generate an output that is valid to this grammar: - -```python -from outlines import models, generate - -arithmetic_grammar = """ - ?start: expression - - ?expression: term (("+" | "-") term)* - - ?term: factor (("*" | "/") factor)* - - ?factor: NUMBER - | "-" factor - | "(" expression ")" - - %import common.NUMBER -""" - -model = models.transformers("WizardLM/WizardMath-7B-V1.1") -generator = generate.cfg(model, arithmetic_grammar) -sequence = generator( - "Alice had 4 apples and Bob ate 2. " - + "Write an expression for Alice's apples:" -) - -print(sequence) -# (8-2) -``` - -!!! Note "Performance" - - The implementation of grammar-structured generation in Outlines is very naive. This does not reflect the performance of [.txt](https://dottxt.co)'s product, where we made grammar-structured generation as fast as regex-structured generation. - - -## Ready-to-use grammars - -Outlines contains a (small) library of grammars that can be imported and use directly. We can rewrite the previous example as: - -```python -from outlines import models, generate - -arithmetic_grammar = outlines.grammars.arithmetic - -model = models.transformers("WizardLM/WizardMath-7B-V1.1") -generator = generate.cfg(model, arithmetic_grammar) -sequence = generator( - "Alice had 4 apples and Bob ate 2. " - + "Write an expression for Alice's apples:" -) - -print(sequence) -# (8-2) -``` - -The following grammars are currently available: - -- Arithmetic grammar via `outlines.grammars.arithmetic` -- JSON grammar via `outlines.grammars.json` - -If you would like more grammars to be added to the repository, please open an [issue](https://github.com/outlines-dev/outlines/issues) or a [pull request](https://github.com/outlines-dev/outlines/pulls). - - -## Grammar guide - -A grammar is a list of rules and terminals that define a *language*: - -- Terminals define the vocabulary of the language; they may be a string, regular expression or combination of these and other terminals. -- Rules define the structure of that language; they are a list of terminals and rules. - -Outlines uses the [Lark library](https://github.com/lark-parser/lark) to make Large Language Models generate text in a language of a grammar, it thus uses grammars defined in a format that Lark understands, based on the [EBNF syntax](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). Read the [Lark documentation](https://lark-parser.readthedocs.io/en/stable/grammar.html) for more details on grammar, the following is a small primer that should help get your started. - -In the following we will define a [LOGO-like toy language](https://github.com/lark-parser/lark/blob/master/examples/turtle_dsl.py) for python's [turtle](https://docs.python.org/3/library/turtle.html) library. - -### Terminals - -A turtle can take 4 different `MOVEMENT` move instructions: forward (`f`), backward (`b`), turn right (`r`) and turn left (`l`). It can take `NUMBER` number of steps in each direction, and draw lines in a specified `COLOR`. These define the vocabulary of our language: - -```ebnf -MOVEMENT: "f"|"b"|"r"|"l" -COLOR: LETTER+ - -%import common.LETTER -%import common.INT -> NUMBER -%import common.WS -%ignore WS -``` - -The lines that start with `%` are called "directive". They allow to import pre-defined terminals and rules, such as `LETTER` and `NUMBER`. `LETTER+` is a regular expressions, and indicates that a `COLOR` is made of at least one `LETTER`. The last two lines specify that we will ignore white spaces (`WS`) in the grammar. - -### Rules - -We now need to define our rules, by decomposing instructions we can send to the turtle via our python program. At each line of the program, we can either choose a direction and execute a given number of steps, change the color used to draw the pattern. We can also choose to start filling, make a series of moves, and stop filling. We can also choose to repeat a series of move. - -We can easily write the first two rules: - -```ebnf -instruction: MOVEMENT NUMBER -> movement - | "c" COLOR [COLOR] -> change_color -``` - -where `movement` and `change_color` represent aliases for the rules. A whitespace implied concatenating the elements, and `|` choosing either of the elements. The `fill` and `repeat` rules are slightly more complex, since they apply to a code block, which is made of instructions. We thus define a new `code_block` rule that refers to `instruction` and finish implementing our rules: - -```ebnf -instruction: MOVEMENT NUMBER -> movement - | "c" COLOR [COLOR] -> change_color - | "fill" code_block -> fill - | "repeat" NUMBER code_block -> repeat - -code_block: "{" instruction "}" -``` - -We can now write the full grammar: - -```ebnf -start: instruction+ - -instruction: MOVEMENT NUMBER -> movement - | "c" COLOR [COLOR] -> change_color - | "fill" code_block -> fill - | "repeat" NUMBER code_block -> repeat - -code_block: "{" instruction+ "}" - -MOVEMENT: "f"|"b"|"l"|"r" -COLOR: LETTER+ - -%import common.LETTER -%import common.INT -> NUMBER -%import common.WS -%ignore WS -``` - -Notice the `start` rule, which defines the starting point of the grammar, i.e. the rule with which a program must start. This full grammars allows us to parse programs such as: - -```python -c red yellow - fill { repeat 36 { - f200 l170 - }} -``` - -The result of the parse, the parse tree, can then easily be translated into a Python program that uses the `turtle` library to draw a pattern. - -### Next steps - -This section provides a very brief overview of grammars and their possibilities. Check out the [Lark documentation](https://lark-parser.readthedocs.io/en/stable/index.html) for more thorough explanations and more examples. diff --git a/docs/reference/generation/choices.md b/docs/reference/generation/choices.md deleted file mode 100644 index aed5af5a..00000000 --- a/docs/reference/generation/choices.md +++ /dev/null @@ -1,16 +0,0 @@ -# Multiple choices - -Oultines allows you to make sure the generated text is chosen between different options: - -```python -from outlines import models, generate - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.choice(model, ["skirt", "dress", "pen", "jacket"]) -answer = generator("Pick the odd word out: skirt, dress, pen, jacket") - -``` - -!!! Note "Performance" - - `generation.choice` computes an index that helps Outlines guide generation. This can take some time, but only needs to be done once. If you want to generate from the same list of choices several times make sure that you only call `generate.choice` once. diff --git a/docs/reference/generation/custom_fsm_ops.md b/docs/reference/generation/custom_fsm_ops.md deleted file mode 100644 index 5c4be96f..00000000 --- a/docs/reference/generation/custom_fsm_ops.md +++ /dev/null @@ -1,37 +0,0 @@ -# Custom FSM Operations - -Outlines is fast because it compiles regular expressions into an index ahead of inference. To do so we use the equivalence between regular expressions and Finite State Machines (FSMs), and the library [interegular](https://github.com/MegaIng/interegular) to perform the translation. - -Alternatively, one can pass a FSM built using `integular` directly to structure the generation. - -## Example - -### Using the `difference` operation - -In the following example we build a fsm which recognizes only the strings valid to the first regular expression but not the second. In particular, it will prevent the words "pink" and "elephant" from being generated: - -```python -import interegular -from outlines import models, generate - - -list_of_strings_pattern = """\["[^"\s]*"(?:,"[^"\s]*")*\]""" -pink_elephant_pattern = """.*(pink|elephant).*""" - -list_of_strings_fsm = interegular.parse_pattern(list_of_strings_pattern).to_fsm() -pink_elephant_fsm = interegular.parse_pattern(pink_elephant_pattern).to_fsm() - -difference_fsm = list_of_strings_fsm - pink_elephant_fsm - -difference_fsm_fsm.accepts('["a","pink","elephant"]') -# False -difference_fsm_fsm.accepts('["a","blue","donkey"]') -# True - - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.fsm(model, difference_fsm) -response = generator("Don't talk about pink elephants") -``` - -To see the other operations available, consult [interegular's documentation](https://github.com/MegaIng/interegular/blob/master/interegular/fsm.py). diff --git a/docs/reference/generation/format.md b/docs/reference/generation/format.md deleted file mode 100644 index 749baa8b..00000000 --- a/docs/reference/generation/format.md +++ /dev/null @@ -1,23 +0,0 @@ -# Type constraints - -We can ask completions to be restricted to valid python types: - -```python -from outlines import models, generate - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.format(model, int) -answer = generator("When I was 6 my sister was half my age. Now I’m 70 how old is my sister?") -print(answer) -# 67 -``` - -The following types are currently available: - -- int -- float -- bool -- datetime.date -- datetime.time -- datetime.datetime -- We also provide [custom types](types.md) diff --git a/docs/reference/generation/generation.md b/docs/reference/generation/generation.md deleted file mode 100644 index 0c090f8a..00000000 --- a/docs/reference/generation/generation.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Generation ---- - -# Generation - -Once an [Outlines model](../models) is constructed you can use `outlines.generate` to generate text. Standard LLM generation is possible via `outlines.generate.text`, along with a variety of structured generation methods described below. (For a detailed technical explanation of how structured generation works, you may review the [Structured Generation Explanation](./structured_generation_explanation.md) page) - -Before generating text, you must construct an `outlines.model`. Example: - -```python -import outlines - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct", device="cuda") -``` -### Text generator - -```python -generator = outlines.generate.text(model) - -result = generator("Question: What's 2+2? Answer:", max_tokens=100) -print(result) -# The answer is 4 - -# Outlines also supports streaming output -stream = generator.stream("What's 2+2?", max_tokens=4) -for i in range(5): - token = next(stream) - print(repr(token)) -# '2' -# '+' -# '2' -# ' equals' -# '4' -``` - -### [Multi-label classification](./choices.md) - -Outlines allows you to do multi-label classification by guiding the model so it can only output either of the specified choices: - -```python -import outlines - -model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct") -generator = outlines.generate.choice(model, ["Blue", "Red", "Yellow"]) - -color = generator("What is the closest color to Indigo? ") -print(color) -# Blue -``` - -### [JSON-structured generation](./json.md) - -Outlines can guide models so that they output valid JSON **100%** of the time. You can either specify the structure using [Pydantic][pydantic]{:target="_blank"} or a string that contains a [JSON Schema][jsonschema]{:target="_blank"}: - -=== "Pydantic" - - ```python - from enum import Enum - from pydantic import BaseModel, constr, conint - - import outlines - - class Armor(str, Enum): - leather = "leather" - chainmail = "chainmail" - plate = "plate" - - - class Character(BaseModel): - name: constr(max_length=10) - age: conint(gt=18, lt=99) - armor: Armor - strength: conint(gt=1, lt=100) - - model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct") - generator = outlines.generate.json(model, Character) - - character = generator( - "Generate a new character for my awesome game: " - + "name, age (between 1 and 99), armor and strength. " - ) - print(character) - # name='Orla' age=21 armor= strength=8 - ``` - -=== "JSON Schema" - - ```python - import outlines - - schema = """{ - "$defs": { - "Armor": { - "enum": ["leather", "chainmail", "plate"], - "title": "Armor", - "type": "string" - } - }, - "properties": { - "name": {"maxLength": 10, "title": "Name", "type": "string"}, - "age": {"title": "Age", "type": "integer"}, - "armor": {"$ref": "#/$defs/Armor"}, - "strength": {"title": "Strength", "type": "integer"}\ - }, - "required": ["name", "age", "armor", "strength"], - "title": "Character", - "type": "object" - }""" - - model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct") - generator = outlines.generate.json(model, schema) - character = generator( - "Generate a new character for my awesome game: " - + "name, age (between 1 and 99), armor and strength. " - ) - print(character) - # {'name': 'Yuki', 'age': 24, 'armor': 'plate', 'strength': 3} - ``` - -!!! Note - - We advise you to constrain the length of the strings fields when first testing your schema, especially with small models. - -### [Grammar-structured generation](./cfg.md) - -Outlines also allows to generate text that is valid to any [context-free grammar][cfg]{:target="_blank"} (CFG) in the [EBNF format][ebnf]{:target="_blank"}. Grammars can be intimidating, but they are a very powerful tool! Indeed, they determine the syntax of every programming language, valid chess moves, molecule structure, can help with procedural graphics generation, etc. - -Here we show a simple example of a grammar that defines arithmetic operations: - -```python -from outlines import models, generate - -arithmetic_grammar = """ - ?start: sum - - ?sum: product - | sum "+" product -> add - | sum "-" product -> sub - - ?product: atom - | product "*" atom -> mul - | product "/" atom -> div - - ?atom: NUMBER -> number - | "-" atom -> neg - | "(" sum ")" - - %import common.NUMBER - %import common.WS_INLINE - - %ignore WS_INLINE -""" - -model = models.transformers("microsoft/Phi-3-mini-128k-instruct") -generator = generate.cfg(model, arithmetic_grammar, max_tokens=100) - -result = generator("Question: How can you write 5*5 using addition?\nAnswer:") -print(result) -# 5+5+5+5+5 -``` - - -EBNF grammars can be cumbersome to write. This is why Outlines provides grammar definitions in the `outlines.grammars.` module - -```python -from outlines import models, generate, grammars - -model = models.transformers("microsoft/Phi-3-mini-128k-instruct") -generator = generate.cfg(model, grammars.arithmetic, max_tokens=100) - -result = generator("Question: How can you write 5*5 using addition?\nAnswer:") -print(result) -# 5+5+5+5+5 -``` - -The available grammars are listed [here](https://github.com/outlines-dev/outlines/tree/main/outlines/grammars). - - -### [Regex-structured generation](./regex.md) - -Slightly simpler, but no less useful, Outlines can generate text that is in the language of a [regular expression](https://www.regular-expressions.info/tutorial.html). For instance to force the model to generate IP addresses: - -```python -from outlines import models, generate - -model = models.transformers("microsoft/Phi-3-mini-128k-instruct") - -regex_str = r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)" -generator = generate.regex(model, regex_str) - -result = generator("What is the IP address of localhost?\nIP: ") -print(result) -# 127.0.0.100 -``` - -### [Generate a given Python type](./types.md) - -We provide a shortcut to regex-structured generation for simple use cases. Pass a Python type to the `outlines.generate.format` function and the LLM will output text that matches this type: - -```python -from outlines import models, generate - -model = models.transformers("microsoft/Phi-3-mini-128k-instruct") -generator = generate.format(model, int) - -result = generator("What is 2+2?") -print(result) -# 4 -``` - - -[jsonschema]: https://json-schema.org/learn/getting-started-step-by-step -[pydantic]: https://docs.pydantic.dev/latest -[cfg]: https://en.wikipedia.org/wiki/Context-free_grammar -[ebnf]: https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form diff --git a/docs/reference/generation/json.md b/docs/reference/generation/json.md deleted file mode 100644 index da9f1472..00000000 --- a/docs/reference/generation/json.md +++ /dev/null @@ -1,105 +0,0 @@ -# JSON structured generation - -Outlines can make any open source model return a JSON object that follows a structure that is specified by the user. This is useful whenever we want the output of the model to be processed by code downstream: code does not understand natural language but rather the structured language it has been programmed to understand. - -There are mostly two reasons why someone would want to get an output formatted as JSON from a LLM: - -1. Parse the answer (e.g. with Pydantic), store it somewhere, return it to a user, etc. -2. Call a function with the result - -Outlines has you covered in both cases! Indeed, to define the structure of the JSON you want the model to follow you can either provide a Pydantic model, or a function. No need to duplicate code! - -## Using Pydantic - -Outlines can infer the structure of the output from a Pydantic model. The result is an instance of the model that contains the values returned by the LLM: - -```python -from pydantic import BaseModel - -from outlines import models, generate - - -class User(BaseModel): - name: str - last_name: str - id: int - - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.json(model, User) -result = generator( - "Create a user profile with the fields name, last_name and id" -) -print(result) -# User(name="John", last_name="Doe", id=11) -``` - -!!! Note "JSON and whitespaces" - - By default Outlines prevents the model from generating json with syntactic newlines, tabs, or multiple spaces. The default `whitespace_pattern` is `r"[ ]?"`. Small models tend to enter an infinite repetition loop if the `whitespace_pattern` allows infinite spacing. If you would like to allow the model to generate multiple tabs, newlines, and spaces, you can set the whitespace pattern as follows: - - ```python - generator = generate.json(model, User, whitespace_pattern=r"[\n\t ]*") - ``` - -!!! Note "Performance" - - `generation.json` computes an index that helps Outlines guide generation. This can take some time, but only needs to be done once. If you want to generate several times with the same schema make sure that you only call `generate.json` once. - -!!! Tip "Custom types" - - Outlines provides [custom Pydantic types](types.md) so you do not have to write regular expressions for common types, such as phone numbers or zip codes. - -## Using a JSON Schema - -Instead of a Pydantic model you can pass a string that represents a [JSON Schema](https://json-schema.org/) specification to `generate.json`: - -```python -from pydantic import BaseModel - -from outlines import models -from outlines import generate - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") - -schema = """ -{ - "title": "User", - "type": "object", - "properties": { - "name": {"type": "string"}, - "last_name": {"type": "string"}, - "id": {"type": "integer"} - }, - "required": ["name", "last_name", "id"] -} -""" - -generator = generate.json(model, schema) -result = generator( - "Create a user profile with the fields name, last_name and id" -) -print(result) -# User(name="John", last_name="Doe", id=11) -``` - -## From a function's signature - -Outlines can infer the structure of the output from the signature of a function. The result is a dictionary, and can be passed directly to the function using the usual dictionary expansion syntax `**`: - -```python -from outlines import models -from outlines import generate - -def add(a: int, b: int): - return a + b - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.json(model, add) -result = generator("Return two integers named a and b respectively. a is odd and b even.") - -print(add(**result)) -# 3 -``` - -A great advantage of passing functions directly to specify the structure is that the structure of the LLM will change with the function's definition. No need to change the code at several places! diff --git a/docs/reference/generation/regex.md b/docs/reference/generation/regex.md deleted file mode 100644 index 23df3556..00000000 --- a/docs/reference/generation/regex.md +++ /dev/null @@ -1,27 +0,0 @@ -# Regular expressions - -Outlines can guarantee that the text generated by the LLM will be valid to a regular expression: - -```python -from outlines import models, generate - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") - -generator = generate.regex( - model, - r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)", -) - -prompt = "What is the IP address of the Google DNS servers? " -answer = generator(prompt, max_tokens=30) - -print(answer) -# What is the IP address of the Google DNS servers? -# 2.2.6.1 -``` - -If you find yourself using `generate.regex` to restrict the answers' type you can take a look at [type-structured generation](types.md) instead. - -!!! Note "Performance" - - `generate.regex` computes an index that helps Outlines guide generation. This can take some time, but only needs to be done once. If you want to generate several times using the same regular expression make sure that you only call `generate.regex` once. diff --git a/docs/reference/generation/structured_generation_explanation.md b/docs/reference/generation/structured_generation_explanation.md deleted file mode 100644 index aa27a7a8..00000000 --- a/docs/reference/generation/structured_generation_explanation.md +++ /dev/null @@ -1,54 +0,0 @@ -# How does Outlines work? - - -Language models generate text token by token, using the previous token sequence as input and sampled logits as output. This document explains the structured generation process, where only legal tokens are considered for the next step based on a predefined automata, e.g. a regex-defined [finite-state machine](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM) or [Lark](https://lark-parser.readthedocs.io/en/stable/) grammar.` - - -## Worked Example - -Let's consider a worked example with a pattern for whole and decimal numbers: - -`^\d*(\.\d+)?$`. - -### Creating Automata - -The pattern is first converted into an automata. Below is a brief explanation of the automata conversion and its representation. - -**Automata Diagram:** - -```mermaid -graph LR - node0("1-9") --> node1("1-9") - node1 --> node1 - node1 --> nodeEND{{END}} - node1 --> nodePeriod(".") - nodePeriod --> node2("1-9") - node2 --> node2 - node2 --> nodeEND{{END}} -``` - -### Generating a Token - -Let's assume that we're in the middle of generation, and so far "748" has been generated. Here is the automata with the current state highlighted in green, with the legal next characters being another number (1-9), a dot (.), or end of sequence. - -```mermaid -graph LR - node0("1-9") --> node1("1-9") - node1 --> node1 - node1 --> nodeEND{{END}} - node1 --> nodePeriod(".") - nodePeriod --> node2("1-9") - node2 --> node2 - node2 --> nodeEND{{END}} - - style node1 fill:#090 -``` - -Generating a token requires the following steps: - -- Feed the previous input sequence ("748") into the language model. -- Language model runs a forward pass and produces token logits. -- Outlines logits processor sets the probability of illegal tokens to 0%. -- A token is sampled from the set of legal tokens. - -![Generation and Logits Processing Flow Chart](../../assets/images/logits_processing_diagram.svg) diff --git a/docs/reference/generation/types.md b/docs/reference/generation/types.md deleted file mode 100644 index 5b83a591..00000000 --- a/docs/reference/generation/types.md +++ /dev/null @@ -1,83 +0,0 @@ -# Custom types - -Outlines provides custom Pydantic types so you can focus on your use case rather than on writing regular expressions: - -| Category | Type | Import | Description | -|:--------:|:----:|:-------|:------------| -| ISBN | 10 & 13 | `outlines.types.ISBN` | There is no guarantee that the [check digit][wiki-isbn] will be correct | -| Airport | IATA | `outlines.types.airports.IATA` | Valid [airport IATA codes][wiki-airport-iata] | -| Country | alpha-2 code | `outlines.types.airports.Alpha2` | Valid [country alpha-2 codes][wiki-country-alpha-2] | -| | alpha-3 code | `outlines.types.countries.Alpha3` | Valid [country alpha-3 codes][wiki-country-alpha-3] | -| | numeric code | `outlines.types.countries.Numeric` | Valid [country numeric codes][wiki-country-numeric] | -| | name | `outlines.types.countries.Name` | Valid country names | -| | flag | `outlines.types.countries.Flag` | Valid flag emojis | -| | email | `outlines.types.Email` | Valid email address | - -Some types require localization. We currently only support US types, but please don't hesitate to create localized versions of the different types and open a Pull Request. Localized types are specified using `types.locale` in the following way: - -```python -from outlines import types - -types.locale("us").ZipCode -types.locale("us").PhoneNumber -``` - -Here are the localized types that are currently available: - -| Category | Locale | Import | Description | -|:--------:|:----:|:-------|:------------| -| Zip code | US | `ZipCode` | Generate US Zip(+4) codes | -| Phone number | US | `PhoneNumber` | Generate valid US phone numbers | - - -You can use these types in Pydantic schemas for JSON-structured generation: - -```python -from pydantic import BaseModel - -from outlines import models, generate, types - -# Specify the locale for types -locale = types.locale("us") - -class Client(BaseModel): - name: str - phone_number: locale.PhoneNumber - zip_code: locale.ZipCode - - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.json(model, Client) -result = generator( - "Create a client profile with the fields name, phone_number and zip_code" -) -print(result) -# name='Tommy' phone_number='129-896-5501' zip_code='50766' -``` - -Or simply with `outlines.generate.format`: - -```python -from pydantic import BaseModel - -from outlines import models, generate, types - - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct") -generator = generate.format(model, types.locale("us").PhoneNumber) -result = generator( - "Return a US Phone number: " -) -print(result) -# 334-253-2630 -``` - - -We plan on adding many more custom types. If you have found yourself writing regular expressions to generate fields of a given type, or if you could benefit from more specific types don't hesite to [submit a PR](https://github.com/outlines-dev/outlines/pulls) or [open an issue](https://github.com/outlines-dev/outlines/issues/new/choose). - - -[wiki-isbn]: https://en.wikipedia.org/wiki/ISBN#Check_digits -[wiki-airport-iata]: https://en.wikipedia.org/wiki/IATA_airport_code -[wiki-country-alpha-2]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 -[wiki-country-alpha-3]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 -[wiki-country-numeric]: https://en.wikipedia.org/wiki/ISO_3166-1_numeric diff --git a/docs/reference/index.md b/docs/reference/index.md deleted file mode 100644 index a5357fd8..00000000 --- a/docs/reference/index.md +++ /dev/null @@ -1,15 +0,0 @@ -# Reference - -## Structured generation - -While LLM capabilities are increasingly impressive, we can make their output more reliable by steering the generation. Outlines thus offers mechanisms to specify high level constraints on text completions by generative language models. - -Stopping sequence -By default, language models stop generating tokens after and token was generated, or after a set maximum number of tokens. Their output can be verbose, and for practical purposes it is often necessary to stop the generation after a given sequence has been found instead. You can use the stop_at keyword argument when calling the model with a prompt: - -```python -import outlines.models as models - -complete = models.openai("gpt-3.5-turbo") -expert = complete("Name an expert in quantum gravity.", stop_at=["\n", "."]) -``` diff --git a/docs/reference/models/exllamav2.md b/docs/reference/models/exllamav2.md deleted file mode 100644 index afe54211..00000000 --- a/docs/reference/models/exllamav2.md +++ /dev/null @@ -1,7 +0,0 @@ -# ExllamaV2 - -```bash -pip install exllamav2 transformers torch -``` - -*Coming soon* diff --git a/docs/reference/models/llamacpp.md b/docs/reference/models/llamacpp.md deleted file mode 100644 index a84f0c18..00000000 --- a/docs/reference/models/llamacpp.md +++ /dev/null @@ -1,226 +0,0 @@ -# Llama.cpp - -Outlines provides an integration with [Llama.cpp](https://github.com/ggerganov/llama.cpp) using the [llama-cpp-python library][llamacpp]. Llamacpp allows to run quantized models on machines with limited compute. - -!!! Note "Installation" - - You need to install the `llama-cpp-python` library to use the llama.cpp integration. See the [installation section](#installation) for instructions to install `llama-cpp-python` with CUDA, Metal, ROCm and other backends. - -## Load the model - -You can initialize the model by passing the name of the repository on the HuggingFace Hub, and the filenames (or glob pattern): - -```python -from outlines import models - -model = models.llamacpp("TheBloke/phi-2-GGUF", "phi-2.Q4_K_M.gguf") -``` - -This will download the model files to the hub cache folder and load the weights in memory. - -You can also initialize the model by passing the path to the weights on your machine. Assuming [Phi2's weights](https://huggingface.co/TheBloke/phi-2-GGUF) are in the current directory: - -```python -from outlines import models -from llama_cpp import Llama - -llm = Llama("./phi-2.Q4_K_M.gguf") -model = models.LlamaCpp(llm) -``` - -If you need more control, you can pass the same keyword arguments to the model as you would pass in the [llama-ccp-library][llamacpp]: - -```python -from outlines import models - -model = models.llamacpp( - "TheBloke/phi-2-GGUF", - "phi-2.Q4_K_M.gguf" - n_ctx=512, # to set the context length value -) -``` - -**Main parameters:** - -| Parameters | Type | Description | Default | -|------------|------|-------------|---------| -| `n_gpu_layers`| `int` | Number of layers to offload to GPU. If -1, all layers are offloaded | `0` | -| `split_mode` | `int` | How to split the model across GPUs. `1` for layer-wise split, `2` for row-wise split | `1` | -| `main_gpu` | `int` | Main GPU | `0` | -| `tensor_split` | `Optional[List[float]]` | How split tensors should be distributed accross GPUs. If `None` the model is not split. | `None` | -| `n_ctx` | `int` | Text context. Inference from the model if set to `0` | `0` | -| `n_threads` | `Optional[int]` | Number of threads to use for generation. All available threads if set to `None`.| `None` | -| `verbose` | `bool` | Print verbose outputs to `stderr` | `False` | - -See the [llama-cpp-python documentation](https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__init__) for the full list of parameters. - -### Load the model on GPU - -!!! Note - - [Make sure](#cuda) that you installed `llama-cpp-python` with GPU support. - - To load the model on GPU, pass `n_gpu_layers=-1`: - -```python -from outlines import models - -model = models.llamacpp( - "TheBloke/phi-2-GGUF", - "phi-2.Q4_K_M.gguf" - n_gpu_layers=-1, # to use GPU acceleration -) -``` - -This also works with generators built with `generate.regex`, `generate.json`, `generate.cfg`, `generate.format` and `generate.choice`. - -### Load LoRA adapters - -You can load LoRA adapters dynamically: - -```python -from outlines import models, generate - -model = models.llamacpp("TheBloke/phi-2-GGUF", "phi-2.Q4_K_M.gguf") -generator = generate.text(model) -answer_1 = generator("prompt") - -model.load_lora("./path/to/adapter.gguf") -answer_2 = generator("prompt") -``` - -To load another adapter you need to re-initialize the model. Otherwise the adapter will be added on top of the previous one: - -```python -from outlines import models - -model = models.llamacpp("TheBloke/phi-2-GGUF", "phi-2.Q4_K_M.gguf") -model.load_lora("./path/to/adapter1.gguf") # Load first adapter - -model = models.llamacpp("TheBloke/phi-2-GGUF", "phi-2.Q4_K_M.gguf") -model.load_lora("./path/to/adapter2.gguf") # Load second adapter -``` - -## Generate text - -In addition to the parameters described in the [text generation section](../text.md) you can pass extra keyword arguments, for instance to set sampling parameters not exposed in Outlines' public API: - -```python -from outlines import models, generate - - -model = models.llamacpp("TheBloke/phi-2-GGUF", "phi-2.Q4_K_M.gguf") -generator = generate.text(model) - -answer = generator("A prompt", presence_penalty=0.8) -``` - -**Extra keyword arguments:** - -The value of the keyword arguments you pass to the generator suspersede the values set when initializing the sampler or generator. All extra sampling methods and repetition penalties are disabled by default. - -| Parameters | Type | Description | Default | -|------------|------|-------------|---------| -| `suffix` | `Optional[str]` | A suffix to append to the generated text. If `None` no suffix is added. | `None` | -| `echo` | `bool` | Whether to preprend the prompt to the completion. | `False` | -| `seed` | `int` | The random seed to use for sampling. | `None` | -| `max_tokens` | `Optional[int]` | The maximum number of tokens to generate. If `None` the maximum number of tokens depends on `n_ctx`. | `16` | -| `frequence_penalty` | `float` | The penalty to apply to tokens based on their frequency in the past 64 tokens. | `0.0` | -| `presence_penalty` | `float` | The penalty to apply to tokens based on their presence in the past 64 tokens. | `0.0` | -| `repeat_penalty` | `float` | The penalty to apply to repeated tokens in the past 64 tokens. | `1.` | -| `stopping_criteria` | `Optional[StoppingCriteriaList]` | A list of stopping criteria to use. | `None` -| `logits_processor` | `Optional[LogitsProcessorList]` | A list of logits processors to use. The logits processor used for structured generation will be added to this list. | `None` -| `temperature` | `float` | The temperature to use for sampling | `1.0` | -| `top_p` | `float` | The top-p value to use for [nucleus sampling][degeneration]. | `1.` | -| `min_p` | `float` | The min-p value to use for [minimum-p sampling][minimum-p]. | `0.` | -| `typical_p` | `float` | The p value to use for [locally typical sampling][locally-typical]. | `1.0` | -| `stop` | `Optional[Union[str, List[str]]]` | A list of strings that stop generation when encountered. | `[]` | -| `top_k` | `int` | The top-k value used for [top-k sampling][top-k]. Negative value to consider all logit values. | `-1.` | -| `tfs_z` | `float` | The [tail-free sampling][tail-free] parameter. | `1.0` | -| `mirostat_mode` | `int` | The [mirostat sampling][mirostat] mode. | `0` | -| `mirostat_tau` | `float` | The target cross-entropy for [mirostat sampling][mirostat].| `5.0` | -| `mirostat_eta` | `float` | The learning rate used to update `mu` in [mirostat sampling][mirostat]. | `0.1` | - -See the [llama-cpp-python documentation][llama-cpp-python-call] for the full and up-to-date list of parameters and the [llama.cpp code][llama-cpp-sampling-params] for the default values of other -sampling parameters. - -### Streaming - - -## Installation - -You need to install the `llama-cpp-python` library to use the llama.cpp integration. - -### CPU - -For a *CPU-only* installation run: - -```bash -pip install llama-cpp-python -``` - -!!! Warning - - Do not run this command if you want support for BLAS, Metal or CUDA. Follow the instructions below instead. - -### CUDA - -```bash -CMAKE_ARGS="-DLLAMA_CUDA=on" pip install llama-cpp-python -``` - -It is also possible to install pre-built wheels with CUDA support (Python 3.10 and above): - -```bash -pip install llama-cpp-python \ - --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/ -``` - -Where `` is one of the following, depending on the version of CUDA installed on your system: - -- `cu121` for CUDA 12.1 -- `cu122` for CUDA 12.2 -- `cu123` CUDA 12.3 - -### Metal - -```bash -CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python -``` - -It is also possible to install pre-build wheels with Metal support (Python 3.10 or above, MacOS 11.0 and above): - -```bash -pip install llama-cpp-python \ - --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal -``` - -### OpenBLAS - -```bash -CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python -``` - -### Other backend - -`llama.cpp` supports many other backends. Refer to the [llama.cpp documentation][llama-cpp-python-install] to use the following backends: - -- CLBast (OpenCL) -- hipBLAS (ROCm) -- Vulkan -- Kompute -- SYCL - - - - -[llamacpp]: https://github.com/abetlen/llama-cpp-python -[llama-cpp-python-call]: https://llama-cpp-python.readthedocs.io/en/latest/api-reference/#llama_cpp.Llama.__call__ -[llama-cpp-python-install]: https://github.com/abetlen/llama-cpp-python/tree/08b16afe11e7b42adec2fed0a781123383476045?tab=readme-ov-file#supported-backends -[llama-cpp-sampling-params]: https://github.com/ggerganov/llama.cpp/blob/e11a8999b5690f810c2c99c14347f0834e68c524/common/sampling.h#L22 -[mirostat]: https://arxiv.org/abs/2007.14966 -[degeneration]: https://arxiv.org/abs/1904.09751 -[top-k]: https://arxiv.org/abs/1805.04833 -[minimum-p]: https://github.com/ggerganov/llama.cpp/pull/3841 -[locally-typical]: https://arxiv.org/abs/2202.00666 -[tail-free]: https://www.trentonbricken.com/Tail-Free-Sampling diff --git a/docs/reference/models/mlxlm.md b/docs/reference/models/mlxlm.md deleted file mode 100644 index cf7bb744..00000000 --- a/docs/reference/models/mlxlm.md +++ /dev/null @@ -1,89 +0,0 @@ -# mlx-lm - -Outlines provides an integration with [mlx-lm](https://github.com/ml-explore/mlx-examples/tree/main/llms), allowing models to be run quickly on Apple Silicon via the [mlx](https://ml-explore.github.io/mlx/build/html/index.html) library. - -!!! Note "Installation" - - You need to install the `mlx` and `mlx-lm` libraries on a device which [supports Metal](https://support.apple.com/en-us/102894) to use the mlx-lm integration. - - -## Load the model - -You can initialize the model by passing the name of the repository on the HuggingFace Hub. The official repository for mlx-lm supported models is [mlx-community](https://huggingface.co/mlx-community). - -```python -from outlines import models - -model = models.mlxlm("mlx-community/Meta-Llama-3.1-8B-Instruct-8bit") -``` - -This will download the model files to the hub cache folder and load the weights in memory. - -The arguments `model_config` and `tokenizer_config` are available to modify loading behavior. For example, per the `mlx-lm` [documentation](https://github.com/ml-explore/mlx-examples/tree/main/llms#supported-models), you must set an eos_token for `qwen/Qwen-7B`. In outlines you may do so via - -``` -model = models.mlxlm( - "mlx-community/Meta-Llama-3.1-8B-Instruct-8bit", - tokenizer_config={"eos_token": "<|endoftext|>", "trust_remote_code": True}, -) -``` - -**Main parameters:** - -(Subject to change. Table based on [mlx-lm.load docstring](https://github.com/ml-explore/mlx-examples/blob/main/llms/mlx_lm/utils.py#L429)) - -| Parameters | Type | Description | Default | -|--------------------|--------|--------------------------------------------------------------------------------------------------|---------| -| `tokenizer_config` | `dict` | Configuration parameters specifically for the tokenizer. Defaults to an empty dictionary. | `{}` | -| `model_config` | `dict` | Configuration parameters specifically for the model. Defaults to an empty dictionary. | `{}` | -| `adapter_path` | `str` | Path to the LoRA adapters. If provided, applies LoRA layers to the model. | `None` | -| `lazy` | `bool` | If False, evaluate the model parameters to make sure they are loaded in memory before returning. | `False` | - - -## Generate text - -You may generate text using the parameters described in the [text generation documentation](../text.md). - -With the loaded model, you can generate text or perform structured generation, e.g. - -```python -from outlines import models, generate - -model = models.mlxlm("mlx-community/Meta-Llama-3.1-8B-Instruct-8bit") -generator = generate.text(model) - -answer = generator("A prompt", temperature=2.0) -``` - -## Streaming - -You may creating a streaming iterable with minimal changes - -```python -from outlines import models, generate - -model = models.mlxlm("mlx-community/Meta-Llama-3.1-8B-Instruct-8bit") -generator = generate.text(model) - -for token_str in generator.text("A prompt", temperature=2.0): - print(token_str) -``` - -## Structured - -You may perform structured generation with mlxlm to guarantee your output will match a regex pattern, json schema, or lark grammar. - -Example: Phone number generation with pattern `"\\+?[1-9][0-9]{7,14}"`: - -```python -from outlines import models, generate - -model = models.mlxlm("mlx-community/Meta-Llama-3.1-8B-Instruct-8bit") - -phone_number_pattern = "\\+?[1-9][0-9]{7,14}" -generator = generate.regex(model, phone_number_pattern) - -model_output = generator("What's Jennys Number?\n") -print(model_output) -# '8675309' -``` diff --git a/docs/reference/models/models.md b/docs/reference/models/models.md deleted file mode 100644 index 34b5be4c..00000000 --- a/docs/reference/models/models.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Models ---- - -# Models - -Outlines supports generation using a number of inference engines (`outlines.models`). Loading a model using outlines follows a similar interface between inference engines: - -```python -import outlines - -model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct") -model = outlines.models.transformers_vision("llava-hf/llava-v1.6-mistral-7b-hf") -model = outlines.models.vllm("microsoft/Phi-3-mini-128k-instruct") -model = outlines.models.llamacpp( - "microsoft/Phi-3-mini-4k-instruct-gguf", "Phi-3-mini-4k-instruct-q4.gguf" -) -model = outlines.models.exllamav2("bartowski/Phi-3-mini-128k-instruct-exl2") -model = outlines.models.mlxlm("mlx-community/Phi-3-mini-4k-instruct-4bit") - -model = outlines.models.openai( - "gpt-4o-mini", - api_key=os.environ["OPENAI_API_KEY"] -) -``` - - -# Feature Matrix -| | [Transformers](transformers.md) | [Transformers Vision](transformers_vision.md) | [vLLM](vllm.md) | [llama.cpp](llamacpp.md) | [ExLlamaV2](exllamav2.md) | [MLXLM](mlxlm.md) | [OpenAI](openai.md)* | -|-------------------|--------------|---------------------|------|-----------|-----------|-------|---------| -| **Device** | | | | | | | | -| Cuda | βœ… | βœ… | βœ… | βœ… | βœ… | ❌ | N/A | -| Apple Silicon | βœ… | βœ… | ❌ | βœ… | βœ… | βœ… | N/A | -| x86 / AMD64 | βœ… | βœ… | ❌ | βœ… | βœ… | ❌ | N/A | -| **Sampling** | | | | | | | | -| Greedy | βœ… | βœ… | βœ… | βœ…* | βœ… | βœ… | ❌ | -| Multinomial | βœ… | βœ… | βœ… | βœ… | βœ… | βœ… | βœ… | -| Multiple Samples | βœ… | βœ… | | ❌ | | ❌ | βœ… | -| Beam Search | βœ… | βœ… | βœ… | ❌ | βœ… | ❌ | ❌ | -| **Generation** | | | | | | | | -| Batch | βœ… | βœ… | βœ… | ❌ | ? | ❌ | ❌ | -| Stream | βœ… | ❌ | ❌ | βœ… | ? | βœ… | ❌ | -| **`outlines.generate`** | | | | | | | | -| Text | βœ… | βœ… | βœ… | βœ… | βœ… | βœ… | βœ… | -| Structured* | βœ… | βœ… | βœ… | βœ… | βœ… | βœ… | ❌ | - - -## Caveats - -- OpenAI doesn't support structured generation due to limitations in their API and server implementation. -- `outlines.generate` ["Structured"](../generation/generation.md) includes methods such as `outlines.generate.regex`, `outlines.generate.json`, `outlines.generate.cfg`, etc. -- MLXLM only supports Apple Silicon. -- llama.cpp greedy sampling available via multinomial with `temperature = 0.0`. diff --git a/docs/reference/models/openai.md b/docs/reference/models/openai.md deleted file mode 100644 index 7f610c17..00000000 --- a/docs/reference/models/openai.md +++ /dev/null @@ -1,170 +0,0 @@ -# OpenAI and compatible APIs - -!!! Installation - - You need to install the `openai` and `tiktoken` libraries to be able to use the OpenAI API in Outlines. - -## OpenAI models - -Outlines supports models available via the OpenAI Chat API, e.g. ChatGPT and GPT-4. You can initialize the model by passing the model name to `outlines.models.openai`: - -```python -from outlines import models - - -model = models.openai("gpt-3.5-turbo") -model = models.openai("gpt-4-turbo") -model = models.openai("gpt-4o") -``` - -Check the [OpenAI documentation](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4) for an up-to-date list of available models. You can pass any parameter you would pass to `openai.AsyncOpenAI` as keyword arguments: - -```python -import os -from outlines import models - - -model = models.openai( - "gpt-3.5-turbo", - api_key=os.environ["OPENAI_API_KEY"] -) -``` - -The following table enumerates the possible parameters. Refer to the [OpenAI SDK's code](https://github.com/openai/openai-python/blob/54a5911f5215148a0bdeb10e2bcfb84f635a75b9/src/openai/_client.py) for an up-to-date list. - -**Parameters:** - -| **Parameters** | **Type** | **Description** | **Default** | -|----------------|:---------|:----------------|:------------| -| `api_key` | `str` | OpenAI API key. Infered from `OPENAI_API_KEY` if not specified | `None` | -| `organization` | `str` | OpenAI organization id. Infered from `OPENAI_ORG_ID` if not specified | `None` | -| `project` | `str` | OpenAI project id. Infered from `OPENAI_PROJECT_ID` if not specified.| `None` | -| `base_url` | `str | https.URL` | Base URL for the endpoint. Infered from `OPENAI_BASE_URL` if no specified. | `None` | -| `timeout` | `float` | Request timeout.| `NOT_GIVEN` | -| `max_retries` | `int` | Maximum number of retries for failing requests | `2` | -| `default_headers` | `Mapping[str, str]` | Default HTTP headers | `None` | -| `default_query` | `Mapping[str, str]` | Custom parameters added to the HTTP queries | `None` | -| `http_client` | `https.AsyncClient` | User-specified `httpx` client | `None` | - -## Azure OpenAI models - -Outlines also supports Azure OpenAI models: - -```python -from outlines import models - - -model = models.azure_openai( - "azure-deployment-name", - "gpt-3.5-turbo", - api_version="2023-07-01-preview", - azure_endpoint="https://example-endpoint.openai.azure.com", -) -``` - -!!! Question "Why do I need to specify model and deployment name?" - - The model name is needed to load the correct tokenizer for the model. The tokenizer is necessary for structured generation. - - -You can pass any parameter you would pass to `openai.AsyncAzureOpenAI`. You can consult the [OpenAI SDK's code](https://github.com/openai/openai-python/blob/54a5911f5215148a0bdeb10e2bcfb84f635a75b9/src/openai/lib/azure.py) for an up-to-date list. - -**Parameters:** - - -| **Parameters** | **Type** | **Description** | **Default** | -|----------------|:---------|:----------------|:------------| -| `azure_endpoint` | `str` | Azure endpoint, including the resource. Infered from `AZURE_OPENAI_ENDPOINT` if not specified | `None` | -| `api_version` | `str` | API version. Infered from `AZURE_OPENAI_API_KEY` if not specified | `None` | -| `api_key` | `str` | OpenAI API key. Infered from `OPENAI_API_KEY` if not specified | `None` | -| `azure_ad_token` | `str` | Azure active directory token. Inference from `AZURE_OPENAI_AD_TOKEN` if not specified | `None` | -| `azure_ad_token_provider` | `AzureADTokenProvider` | A function that returns an Azure Active Directory token | `None` | -| `organization` | `str` | OpenAI organization id. Infered from `OPENAI_ORG_ID` if not specified | `None` | -| `project` | `str` | OpenAI project id. Infered from `OPENAI_PROJECT_ID` if not specified.| `None` | -| `base_url` | `str | https.URL` | Base URL for the endpoint. Infered from `OPENAI_BASE_URL` if not specified. | `None` | -| `timeout` | `float` | Request timeout.| `NOT_GIVEN` | -| `max_retries` | `int` | Maximum number of retries for failing requests | `2` | -| `default_headers` | `Mapping[str, str]` | Default HTTP headers | `None` | -| `default_query` | `Mapping[str, str]` | Custom parameters added to the HTTP queries | `None` | -| `http_client` | `https.AsyncClient` | User-specified `httpx` client | `None` | - -## Models that follow the OpenAI standard - -Outlines supports models that follow the OpenAI standard. You will need to initialize the OpenAI client properly configured and pass it to `outlines.models.openai` - -```python -import os -from openai import AsyncOpenAI -from outlines import models -from outlines.models.openai import OpenAIConfig - - -client = AsyncOpenAI( - api_key=os.environ.get("PROVIDER_KEY"), - base_url="http://other.provider.server.com" -) -config = OpenAIConfig("model_name") -model = models.openai(client, config) -``` - -!!! Warning - - You need to pass the async client to be able to do batch inference. - -## Advanced configuration - -For more advanced configuration option, such as support proxy, please consult the [OpenAI SDK's documentation](https://github.com/openai/openai-python): - - -```python -from openai import AsyncOpenAI, DefaultHttpxClient -from outlines import models -from outlines.models.openai import OpenAIConfig - - -client = AsyncOpenAI( - base_url="http://my.test.server.example.com:8083", - http_client=DefaultHttpxClient( - proxies="http://my.test.proxy.example.com", - transport=httpx.HTTPTransport(local_address="0.0.0.0"), - ), -) -config = OpenAIConfig("model_name") -model = models.openai(client, config) -``` - -It is possible to specify the values for `seed`, `presence_penalty`, `frequence_penalty`, `top_p` by passing an instance of `OpenAIConfig` when initializing the model: - -```python -from outlines.models.openai import OpenAIConfig -from outlines import models - - -config = OpenAIConfig( - presence_penalty=1., - frequency_penalty=1., - top_p=.95, - seed=0, -) -model = models.openai("gpt-3.5-turbo", config) -``` - -## Monitoring API use - -It is important to be able to track your API usage when working with OpenAI's API. The number of prompt tokens and completion tokens is directly accessible via the model instance: - -```python -from openai import AsyncOpenAI -import outlines.models - - -model = models.openai("gpt-4") - -print(model.prompt_tokens) -# 0 - -print(model.completion_tokens) -# 0 -``` - -These numbers are updated every time you call the model. diff --git a/docs/reference/models/tgi.md b/docs/reference/models/tgi.md deleted file mode 100644 index 3f056810..00000000 --- a/docs/reference/models/tgi.md +++ /dev/null @@ -1,3 +0,0 @@ -# Text-generation-inference (TGI) - -TGI uses Outlines to provide structured generation, see [their documentation](https://huggingface.co/docs/text-generation-inference/en/basic_tutorials/using_guidance). diff --git a/docs/reference/models/transformers.md b/docs/reference/models/transformers.md deleted file mode 100644 index 2a13e28e..00000000 --- a/docs/reference/models/transformers.md +++ /dev/null @@ -1,148 +0,0 @@ -# transformers - - -!!! Installation - - You need to install the `transformer`, `datasets` and `torch` libraries to be able to use these models in Outlines: - - ```bash - pip install torch transformers datasets - ``` - - -Outlines provides an integration with the `torch` implementation of causal models in the [transformers][transformers] library. You can initialize the model by passing its name: - -```python -from outlines import models - -model = models.transformers("microsoft/Phi-3-mini-4k-instruct", device="cuda") -``` - -If you need more fine-grained control you can also initialize the model and tokenizer separately: - - -```python -from transformers import AutoModelForCausalLM, AutoTokenizer -from outlines import models - -llm = AutoModelForCausalLM.from_pretrained("gpt2", output_attentions=True) -tokenizer = AutoTokenizer.from_pretrained("gpt2") -model = models.Transformers(llm, tokenizer) -``` - -# Using Logits Processors - -There are two ways to use Outlines Structured Generation with HuggingFace Transformers: - -1. Use Outlines generation wrapper, `outlines.models.transformers` -2. Use `OutlinesLogitsProcessor` with `transformers.AutoModelForCausalLM` - -Outlines supports a myriad of logits processors for structured generation. In these example, we will use the `RegexLogitsProcessor` which guarantees generated text matches the specified pattern. - -## Using `outlines.models.transformers` - -```python -import outlines - -time_regex_pattern = r"(0?[1-9]|1[0-2]):[0-5]\d\s?(am|pm)?" - -model = outlines.models.transformers("microsoft/Phi-3-mini-4k-instruct", device="cuda") -generator = outlines.generate.regex(model, time_regex_pattern) - -output = generator("The the best time to visit a dentist is at ") -print(output) -# 2:30 pm -``` - -## Using models initialized via the `transformers` library - -```python -import outlines -import transformers - - -model_uri = "microsoft/Phi-3-mini-4k-instruct" - -outlines_tokenizer = outlines.models.TransformerTokenizer( - transformers.AutoTokenizer.from_pretrained(model_uri) -) -phone_number_logits_processor = outlines.processors.RegexLogitsProcessor( - "\\+?[1-9][0-9]{7,14}", # phone number pattern - outlines_tokenizer, -) - -generator = transformers.pipeline('text-generation', model=model_uri) - -output = generator( - "Jenny gave me her number it's ", - logits_processor=transformers.LogitsProcessorList([phone_number_logits_processor]) -) -print(output) -# [{'generated_text': "Jenny gave me her number it's 2125550182"}] -# not quite 8675309 what we expected, but it is a valid phone number -``` - -[transformers]: https://github.com/huggingface/transformers - - -# Alternative Model Classes - -`outlines.models.transformers` defaults to `transformers.AutoModelForCausalLM`, which is the appropriate class for most standard large language models, including Llama 3, Mistral, Phi-3, etc. - -However other variants with unique behavior can be used as well by passing the appropriate class. - -### Mamba - -[Mamba](https://github.com/state-spaces/mamba) is a transformers alternative which employs memory efficient, linear-time decoding. - -To use Mamba with outlines you must first install the necessary requirements: -``` -pip install causal-conv1d>=1.2.0 mamba-ssm torch transformers -``` - -Then you can either create an Mamba-2 Outlines model via -```python -import outlines - -model = outlines.models.mamba("state-spaces/mamba-2.8b-hf") -``` - -or explicitly with -```python -import outlines -from transformers import MambaForCausalLM - -model = outlines.models.transformers( - "state-spaces/mamba-2.8b-hf", - model_class=MambaForCausalLM -) -``` - - - -Read [`transformers`'s documentation](https://huggingface.co/docs/transformers/en/model_doc/mamba) for more information. - -### Encoder-Decoder Models - -You can use encoder-decoder (seq2seq) models like T5 and BART with Outlines. - -Be cautious with model selection though, some models such as `t5-base` don't include certain characters (`{`) and you may get an error when trying to perform structured generation. - -T5 Example: -```python -import outlines -from transformers import AutoModelForSeq2SeqLM - -model_pile_t5 = models.transformers( - model_name="EleutherAI/pile-t5-large", - model_class=AutoModelForSeq2SeqLM, -) -``` - -Bart Example: -```python -model_bart = models.transformers( - model_name="facebook/bart-large", - model_class=AutoModelForSeq2SeqLM, -) -``` diff --git a/docs/reference/models/transformers_vision.md b/docs/reference/models/transformers_vision.md deleted file mode 100644 index b488bca1..00000000 --- a/docs/reference/models/transformers_vision.md +++ /dev/null @@ -1,115 +0,0 @@ -# Transformers Vision - -Outlines allows seamless use of [vision models](https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1). - -`outlines.models.transformers_vision` has shares interfaces with, and is based on [outlines.models.transformers](./transformers.md). - -Tasks supported include - -- image + text -> text -- video + text -> text - - - -## Example: Using [Llava-Next](https://huggingface.co/docs/transformers/en/model_doc/llava_next) Vision Models - -Install dependencies -`pip install torchvision pillow flash-attn` - -Create the model -```python -import outlines -from transformers import LlavaNextForConditionalGeneration - -model = outlines.models.transformers_vision( - "llava-hf/llava-v1.6-mistral-7b-hf", - model_class=LlavaNextForConditionalGeneration, - device="cuda", -) -``` - -Create convenience function to load a `PIL.Image` from URL -```python -from PIL import Image -from io import BytesIO -from urllib.request import urlopen - -def img_from_url(url): - img_byte_stream = BytesIO(urlopen(url).read()) - return Image.open(img_byte_stream).convert("RGB") -``` - -### Describing an image - -```python -description_generator = outlines.generate.text(model) -description_generator( - " detailed description:", - [img_from_url("https://upload.wikimedia.org/wikipedia/commons/2/25/Siam_lilacpoint.jpg")] -) -``` - -> This is a color photograph featuring a Siamese cat with striking blue eyes. The cat has a creamy coat and a light eye color, which is typical for the Siamese breed. Its features include elongated ears, a long, thin tail, and a striking coat pattern. The cat is sitting in an indoor setting, possibly on a cat tower or a similar raised platform, which is covered with a beige fabric, providing a comfortable and soft surface for the cat to rest or perch. The surface of the wall behind the cat appears to be a light-colored stucco or plaster. - -#### Multiple Images - -To include multiple images in your prompt you simply add more `` tokens to the prompt - -```python -image_urls = [ - "https://cdn1.byjus.com/wp-content/uploads/2020/08/ShapeArtboard-1-copy-3.png", # triangle - "https://cdn1.byjus.com/wp-content/uploads/2020/08/ShapeArtboard-1-copy-11.png", # hexagon -] -description_generator = outlines.generate.text(model) -description_generator( - "What shapes are present?", - list(map(img_from_url, image_urls)), -) -``` - -> There are two shapes present. One shape is a hexagon and the other shape is an triangle. ' - - -### Classifying an Image - -```python -pattern = "Mercury|Venus|Earth|Mars|Saturn|Jupiter|Neptune|Uranus|Pluto" -planet_generator = outlines.generate.regex(model, pattern) - -planet_generator( - "What planet is this: ", - [img_from_url("https://upload.wikimedia.org/wikipedia/commons/e/e3/Saturn_from_Cassini_Orbiter_%282004-10-06%29.jpg")] -) -``` - -> Saturn - - -### Extracting Structured Image data - -```python -from pydantic import BaseModel -from typing import List, Optional - -class ImageData(BaseModel): - caption: str - tags_list: List[str] - object_list: List[str] - is_photo: bool - -image_data_generator = outlines.generate.json(model, ImageData) - -image_data_generator( - " detailed JSON metadata:", - [img_from_url("https://upload.wikimedia.org/wikipedia/commons/9/98/Aldrin_Apollo_11_original.jpg")] -) -``` - -> `ImageData(caption='An astronaut on the moon', tags_list=['moon', 'space', 'nasa', 'americanflag'], object_list=['moon', 'moon_surface', 'space_suit', 'americanflag'], is_photo=True)` - - -## Resources - -### Chosing a model -- https://mmbench.opencompass.org.cn/leaderboard -- https://huggingface.co/spaces/WildVision/vision-arena diff --git a/docs/reference/models/vllm.md b/docs/reference/models/vllm.md deleted file mode 100644 index 1380d3d2..00000000 --- a/docs/reference/models/vllm.md +++ /dev/null @@ -1,231 +0,0 @@ -# vLLM - - -!!! Note "Installation" - - You need to install the `vllm` library to use the vLLM integration. See the [installation section](#installation) for instructions to install vLLM for CPU or ROCm. - -## Load the model - -Outlines supports models available via vLLM's offline batched inference interface. You can load a model using: - - -```python -from outlines import models - -model = models.vllm("microsoft/Phi-3-mini-4k-instruct") -``` - -Or alternatively: - -```python -import vllm -from outlines import models - -llm = vllm.LLM("microsoft/Phi-3-mini-4k-instruct") -model = models.VLLM(llm) -``` - - -Models are loaded from the [HuggingFace hub](https://huggingface.co/). - - -!!! Warning "Device" - - The default installation of vLLM only allows to load models on GPU. See the [installation instructions](#installation) to run models on CPU. - - -You can pass any parameter that you would normally pass to `vllm.LLM`, as keyword arguments: - -```python -from outlines import models - -model = models.vllm( - "microsoft/Phi-3-mini-4k-instruct", - trust_remote_code=True, - gpu_memory_utilization=0.7 -) -``` - -**Main parameters:** - -| **Parameters** | **Type** | **Description** | **Default** | -|----------------|:---------|:----------------|:------------| -| `tokenizer_mode`| `str` | "auto" will use the fast tokenizer if available and "slow" will always use the slow tokenizer. | `auto` -| `trust_remote_code`| `bool` | Trust remote code when downloading the model and tokenizer. | `False` | -| `tensor_parallel_size`| `int` | The number of GPUs to use for distributed execution with tensor parallelism.| `1` | -| `dtype`| `str` | The data type for the model weights and activations. Currently, we support `float32`, `float16`, and `bfloat16`. If `auto`, we use the `torch_dtype` attribute specified in the model config file. However, if the `torch_dtype` in the config is `float32`, we will use `float16` instead.| `auto` | -| `quantization`| `Optional[str]` | The method used to quantize the model weights. Currently, we support "awq", "gptq" and "squeezellm". If None, we first check the `quantization_config` attribute in the model config file. If that is None, we assume the model weights are not quantized and use `dtype` to determine the data type of the weights.| `None` | -| `revision`| `Optional[str]` | The specific model version to use. It can be a branch name, a tag name, or a commit id.| `None` | -| `tokenizer_revision`| `Optional[str]`| The specific tokenizer version to use. It can be a branch name, a tag name, or a commit id.| `None` | -| `gpu_memory_utilization`| `float` | The ratio (between 0 and 1) of GPU memory to reserve for the model weights, activations, and KV cache. Higher values will increase the KV cache size and thus improve the model's throughput. However, if the value is too high, it may cause out-of-memory (OOM) errors.| `0.9` | -| `swap_space`| `int` | The size (GiB) of CPU memory per GPU to use as swap space. This can be used for temporarily storing the states of the requests when their `best_of` sampling parameters are larger than 1. If all requests will have `best_of=1`, you can safely set this to 0. Otherwise, too small values may cause out-of-memory (OOM) errors.| 4 | -| `enforce_eager`| `bool` | Whether to enforce eager execution. If True, we will disable CUDA graph and always execute the model in eager mode. If False, we will use CUDA graph and eager execution in hybrid.| `False` | -| `enable_lora` | `bool` | Whether to enable loading LoRA adapters | `False` | - -See the [vLLM code](https://github.com/vllm-project/vllm/blob/8f44facdddcf3c704f7d6a2719b6e85efc393449/vllm/entrypoints/llm.py#L72) for a list of all the available parameters. - -### Use quantized models - -vLLM supports AWQ, GPTQ and SqueezeLLM quantized models: - - -```python -from outlines import models - -model = models.vllm("TheBloke/Llama2-7b-Chat-AWQ", quantization="awq") -model = models.vllm("TheBloke/Mistral-7B-Instruct-v0.2-GPTQ", quantization="gptq") -model = models.vllm("https://huggingface.co/squeeze-ai-lab/sq-llama-30b-w4-s5", quantization="squeezellm") -``` - -!!! Warning "Dependencies" - - To use AWQ model you need to install the autoawq library `pip install autoawq`. - - To use GPTQ models you need to install the autoGTPQ and optimum libraries `pip install auto-gptq optimum`. - - -### Multi-GPU usage - -To run multi-GPU inference with vLLM you need to set the `tensor_parallel_size` argument to the number of GPUs available when initializing the model. For instance to run inference on 2 GPUs: - - -```python -from outlines import models - -model = models.vllm( - "microsoft/Phi-3-mini-4k-instruct" - tensor_parallel_size=2 -) -``` - -### Load LoRA adapters - -You can load LoRA adapters and alternate between them dynamically: - -```python -from outlines import models - -model = models.vllm("facebook/opt-350m", enable_lora=True) -model.load_lora("ybelkaa/opt-350m-lora") # Load LoRA adapter -model.load_lora(None) # Unload LoRA adapter -``` - -## Generate text - -In addition to the parameters described in the [text generation section](../text.md) you can pass an instance of `SamplingParams` directly to any generator via the `sampling_params` keyword argument: - -```python -from vllm.sampling_params import SamplingParams -from outlines import models, generate - - -model = models.vllm("microsoft/Phi-3-mini-4k-instruct") -generator = generate.text(model) - -params = SamplingParams(n=2, frequency_penalty=1., min_tokens=2) -answer = generator("A prompt", sampling_params=params) -``` - -This also works with generators built with `generate.regex`, `generate.json`, `generate.cfg`, `generate.format` and `generate.choice`. - -!!! Note - - The values passed via the `SamplingParams` instance supersede the other arguments to the generator or the samplers. - -**`SamplingParams` attributes:** - -| Parameters | Type | Description | Default | -|:-----------|------------------|:-----------------------|---------| -| `n` | `int` | Number of output sequences to return for the given prompt. | `1` | -| `best_of` | `Optional[int]` | Number of output sequences that are generated from the prompt. From these `best_of` sequences, the top `n` sequences are returned. `best_of` must be greater than or equal to `n`. This is treated as the beam width when `use_beam_search` is True. By default, `best_of` is set to `n`. | `None` | -| `presence_penalty` | `float` | Float that penalizes new tokens based on whether they appear in the generated text so far. Values > 0 encourage the model to use new tokens, while values < 0 encourage the model to repeat tokens.| `0.0` | -| `frequency_penalty` | `float` | Float that penalizes new tokens based on their frequency in the generated text so far. Values > 0 encourage the model to use new tokens, while values < 0 encourage the model to repeat tokens. | `0.0` -| `repetition_penalty` | `float` | Float that penalizes new tokens based on whether they appear in the prompt and the generated text so far. Values > 1 encourage the model to use new tokens, while values < 1 encourage the model to repeat tokens. | `1.0` | -| `temperature` | `float` | Float that controls the randomness of the sampling. Lower values make the model more deterministic, while higher values make the model more random. Zero means greedy sampling. | `1.0` | -| `top_p` | `float` | Float that controls the cumulative probability of the top tokens to consider. Must be in (0, 1]. Set to 1 to consider all tokens. | `1.0` | -| `top_k` | `int` | Integer that controls the number of top tokens to consider. Set to -1 to consider all tokens. | `-1` | -| `min_p` |`float` | Float that represents the minimum probability for a token to be considered, relative to the probability of the most likely token. Must be in [0, 1]. Set to 0 to disable this. | `0.0` | -| `seed` | `Optional[int]` | Random seed to use for the generation. | `None` | -| `use_beam_search` | `bool` | Whether to use beam search instead of sampling. | `False` | -| `length_penalty` | `float` | Float that penalizes sequences based on their length. Used in beam search. | `1.0` | -| `early_stopping` | `Union[bool, str]` | Controls the stopping condition for beam search. It accepts the following values: `True`, where the generation stops as soon as there are `best_of` complete candidates; `False`, where an heuristic is applied and the generation stops when is it very unlikely to find better candidates; `"never"`, where the beam search procedure only stops when there cannot be better candidates (canonical beam search algorithm). | `False` | -| `stop` | `Optional[Union[str, List[str]]]` | List of strings that stop the generation when they are generated. The returned output will not contain the stop strings. | `None` | -| `stop_token_ids` | `Optional[List[int]]` | List of tokens that stop the generation when they are generated. The returned output will contain the stop tokens unless the stop tokens are special tokens. | `None` | -| `include_stop_str_in_output` | `bool` | Whether to include the stop strings in output text. Defaults to False. | `False` | -| `ignore_eos` | `bool` | Whether to ignore the EOS token and continue generating tokens after the EOS token is generated. | `False` | -| `max_tokens` | `int` | Maximum number of tokens to generate per output sequence. | `16` | -| `min_tokens` | `int` | Minimum number of tokens to generate per output sequence before EOS or stop_token_ids can be generated | `0` | -| `skip_special_tokens` | `bool` | Whether to skip special tokens in the output. | `True` | -| `spaces_between_special_tokens` | `bool` | Whether to add spaces between special tokens in the output. Defaults to True. | `True` | - -### Streaming - -!!! Warning - - Streaming is not available for the offline vLLM integration. - - -## Installation - -By default the vLLM library is installed with pre-commpiled C++ and CUDA binaries and will only run on GPU: - -```python -pip install vllm -``` - -### CPU - -You need to have the `gcc` compiler installed on your system. Then you will need to install vLLM from source. First clone the repository: - -```bash -git clone https://github.com/vllm-project/vllm.git -cd vllm -``` - -Install the Python packages needed for the installation: - -```bash -pip install --upgrade pip -pip install wheel packaging ninja setuptools>=49.4.0 numpy -pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu -``` - -and finally run: - -```bash -VLLM_TARGET_DEVICE=cpu python setup.py install -``` - -See the [vLLM documentation][vllm-install-cpu] for more details, alternative installation methods (Docker) and performance tips. - -### ROCm - - -You will need to install vLLM from source. First install Pytorch on ROCm: - -```bash -pip install torch==2.2.0.dev20231206+rocm5.7 --index-url https://download.pytorch.org/whl/nightly/rocm5.7 # tested version -``` - -You will then need to install flash attention for ROCm following [these instructions][rocm-flash-attention]. You can then install `xformers=0.0.23` and apply the patches needed to adapt Flash Attention for ROCm: - -```bash -pip install xformers==0.0.23 --no-deps -bash patch_xformers.rocm.sh -``` - -And finally build vLLM: - -```bash -cd vllm -pip install -U -r requirements-rocm.txt -python setup.py install # This may take 5-10 minutes. -``` - -See the [vLLM documentation][vllm-install-rocm] for alternative installation methods (Docker). - - -[vllm-install-cpu]: https://docs.vllm.ai/en/latest/getting_started/cpu-installation.html -[vllm-install-rocm]: https://docs.vllm.ai/en/latest/getting_started/amd-installation.html -[rocm-flash-attention]: https://github.com/ROCm/flash-attention/tree/flash_attention_for_rocm#amd-gpurocm-support diff --git a/docs/reference/prompting.md b/docs/reference/prompting.md deleted file mode 100644 index 8ea9c024..00000000 --- a/docs/reference/prompting.md +++ /dev/null @@ -1,403 +0,0 @@ -# Prompt templating - -Outlines provides a powerful domain-specific language to write and manage -prompts, via what we call *prompt functions*. Prompt functions are Python -functions that contain a template for the prompt in their docstring, and their -arguments correspond to the variables used in the prompt. When called, a prompt -function returns the template rendered with the values of the arguments. - -The aim of prompt functions is to solve several recurrent problems with prompting: - -1. **Building complex prompts quickly leads to messy code.** This problem has - already been solved in the web development community by using templating, so - why not use it here? -2. **Composing prompts is difficult.** Why not just compose functions? -3. **Separating prompts from code.** Encapsulation in functions allows a clean - separation between prompts and code. Moreover, like any function, prompt - functions can be imported from other modules. - -Outlines uses the [Jinja templating -engine](https://jinja.palletsprojects.com/en/3.1.x/) to render prompts, which -allows to easily compose complex prompts. - -!!! warning "Prompt rendering" - - Prompt functions are opinionated when it comes to prompt rendering. These opinions are meant to avoid common prompting errors, but can have unintended consequences if you are doing something unusual. We advise to always print the prompt before using it. You can also [read the - reference](#formatting-conventions) section if you want to know more. - -## Your first prompt - -The following snippet showcases a very simple prompt. The variables between -curly brackets `{{ }}` are placeholders for the values of the arguments you -will pass to the prompt function. - -=== "Code" - - ```python - import outlines - - @outlines.prompt - def greetings(name, question): - """Hello, {{ name }}! - {{ question }} - """ - - prompt = greetings("user", "How are you?") - print(prompt) - ``` - -=== "Output" - - ```text - Hello, user! - How are you? - ``` - -If a variable is missing in the function's arguments, Jinja2 will throw an `UndefinedError` exception: - -=== "Code" - - ```python - import outlines - - @outlines.prompt - def greetings(name): - """Hello, {{ surname }}!""" - - prompt = greetings("user") - ``` - -=== "Output" - - ```text - Traceback (most recent call last): - File "", line 9, in - File "/home/remi/projects/normal/outlines/outlines/prompts.py", line 38, in __call__ - return render(self.template, **bound_arguments.arguments) - File "/home/remi/projects/normal/outlines/outlines/prompts.py", line 213, in render - return jinja_template.render(**values) - File "/home/remi/micromamba/envs/outlines/lib/python3.9/site-packages/jinja2/environment.py", line 1301, in render - self.environment.handle_exception() - File "/home/remi/micromamba/envs/outlines/lib/python3.9/site-packages/jinja2/environment.py", line 936, in handle_exception - raise rewrite_traceback_stack(source=source) - File "

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 Gp#K9FV3WH5 diff --git a/docs/logos/gladia.jpg b/docs/logos/gladia.jpg deleted file mode 100644 index 4c5e505eb43da98db8c9042bd42e10c1c0efd795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11198 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 diff --git a/docs/logos/harvard.png b/docs/logos/harvard.png deleted file mode 100644 index f6ec08d7210d429e8f11f8c3173ca3557cbe0aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31910 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 ^uo%UHZ9QxBkBC2=;*`p9g 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

m7ps%ZcXMW^QrvcyUo9 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 diff --git a/docs/cookbook/images/coding_structure_diagram.png b/docs/cookbook/images/coding_structure_diagram.png deleted file mode 100644 index c30e04a5b07a9bd962f4e91d1cfccf22d22dc702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73586 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