Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Add files
Browse files- .gitignore +162 -0
- .pre-commit-config.yaml +55 -0
- .vscode/settings.json +21 -0
- LICENSE +21 -0
- README.md +3 -1
- app.py +127 -0
- requirements.txt +9 -0
- style.css +16 -0
    	
        .gitignore
    ADDED
    
    | @@ -0,0 +1,162 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            gradio_cached_examples/
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # Byte-compiled / optimized / DLL files
         | 
| 4 | 
            +
            __pycache__/
         | 
| 5 | 
            +
            *.py[cod]
         | 
| 6 | 
            +
            *$py.class
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # C extensions
         | 
| 9 | 
            +
            *.so
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            # Distribution / packaging
         | 
| 12 | 
            +
            .Python
         | 
| 13 | 
            +
            build/
         | 
| 14 | 
            +
            develop-eggs/
         | 
| 15 | 
            +
            dist/
         | 
| 16 | 
            +
            downloads/
         | 
| 17 | 
            +
            eggs/
         | 
| 18 | 
            +
            .eggs/
         | 
| 19 | 
            +
            lib/
         | 
| 20 | 
            +
            lib64/
         | 
| 21 | 
            +
            parts/
         | 
| 22 | 
            +
            sdist/
         | 
| 23 | 
            +
            var/
         | 
| 24 | 
            +
            wheels/
         | 
| 25 | 
            +
            share/python-wheels/
         | 
| 26 | 
            +
            *.egg-info/
         | 
| 27 | 
            +
            .installed.cfg
         | 
| 28 | 
            +
            *.egg
         | 
| 29 | 
            +
            MANIFEST
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            # PyInstaller
         | 
| 32 | 
            +
            #  Usually these files are written by a python script from a template
         | 
| 33 | 
            +
            #  before PyInstaller builds the exe, so as to inject date/other infos into it.
         | 
| 34 | 
            +
            *.manifest
         | 
| 35 | 
            +
            *.spec
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            # Installer logs
         | 
| 38 | 
            +
            pip-log.txt
         | 
| 39 | 
            +
            pip-delete-this-directory.txt
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            # Unit test / coverage reports
         | 
| 42 | 
            +
            htmlcov/
         | 
| 43 | 
            +
            .tox/
         | 
| 44 | 
            +
            .nox/
         | 
| 45 | 
            +
            .coverage
         | 
| 46 | 
            +
            .coverage.*
         | 
| 47 | 
            +
            .cache
         | 
| 48 | 
            +
            nosetests.xml
         | 
| 49 | 
            +
            coverage.xml
         | 
| 50 | 
            +
            *.cover
         | 
| 51 | 
            +
            *.py,cover
         | 
| 52 | 
            +
            .hypothesis/
         | 
| 53 | 
            +
            .pytest_cache/
         | 
| 54 | 
            +
            cover/
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            # Translations
         | 
| 57 | 
            +
            *.mo
         | 
| 58 | 
            +
            *.pot
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            # Django stuff:
         | 
| 61 | 
            +
            *.log
         | 
| 62 | 
            +
            local_settings.py
         | 
| 63 | 
            +
            db.sqlite3
         | 
| 64 | 
            +
            db.sqlite3-journal
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            # Flask stuff:
         | 
| 67 | 
            +
            instance/
         | 
| 68 | 
            +
            .webassets-cache
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            # Scrapy stuff:
         | 
| 71 | 
            +
            .scrapy
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            # Sphinx documentation
         | 
| 74 | 
            +
            docs/_build/
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            # PyBuilder
         | 
| 77 | 
            +
            .pybuilder/
         | 
| 78 | 
            +
            target/
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            # Jupyter Notebook
         | 
| 81 | 
            +
            .ipynb_checkpoints
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            # IPython
         | 
| 84 | 
            +
            profile_default/
         | 
| 85 | 
            +
            ipython_config.py
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            # pyenv
         | 
| 88 | 
            +
            #   For a library or package, you might want to ignore these files since the code is
         | 
| 89 | 
            +
            #   intended to run in multiple environments; otherwise, check them in:
         | 
| 90 | 
            +
            # .python-version
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            # pipenv
         | 
| 93 | 
            +
            #   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
         | 
| 94 | 
            +
            #   However, in case of collaboration, if having platform-specific dependencies or dependencies
         | 
| 95 | 
            +
            #   having no cross-platform support, pipenv may install dependencies that don't work, or not
         | 
| 96 | 
            +
            #   install all needed dependencies.
         | 
| 97 | 
            +
            #Pipfile.lock
         | 
| 98 | 
            +
             | 
| 99 | 
            +
            # poetry
         | 
| 100 | 
            +
            #   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
         | 
| 101 | 
            +
            #   This is especially recommended for binary packages to ensure reproducibility, and is more
         | 
| 102 | 
            +
            #   commonly ignored for libraries.
         | 
| 103 | 
            +
            #   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
         | 
| 104 | 
            +
            #poetry.lock
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            # pdm
         | 
| 107 | 
            +
            #   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
         | 
| 108 | 
            +
            #pdm.lock
         | 
| 109 | 
            +
            #   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
         | 
| 110 | 
            +
            #   in version control.
         | 
| 111 | 
            +
            #   https://pdm.fming.dev/#use-with-ide
         | 
| 112 | 
            +
            .pdm.toml
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
         | 
| 115 | 
            +
            __pypackages__/
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            # Celery stuff
         | 
| 118 | 
            +
            celerybeat-schedule
         | 
| 119 | 
            +
            celerybeat.pid
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            # SageMath parsed files
         | 
| 122 | 
            +
            *.sage.py
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            # Environments
         | 
| 125 | 
            +
            .env
         | 
| 126 | 
            +
            .venv
         | 
| 127 | 
            +
            env/
         | 
| 128 | 
            +
            venv/
         | 
| 129 | 
            +
            ENV/
         | 
| 130 | 
            +
            env.bak/
         | 
| 131 | 
            +
            venv.bak/
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            # Spyder project settings
         | 
| 134 | 
            +
            .spyderproject
         | 
| 135 | 
            +
            .spyproject
         | 
| 136 | 
            +
             | 
| 137 | 
            +
            # Rope project settings
         | 
| 138 | 
            +
            .ropeproject
         | 
| 139 | 
            +
             | 
| 140 | 
            +
            # mkdocs documentation
         | 
| 141 | 
            +
            /site
         | 
| 142 | 
            +
             | 
| 143 | 
            +
            # mypy
         | 
| 144 | 
            +
            .mypy_cache/
         | 
| 145 | 
            +
            .dmypy.json
         | 
| 146 | 
            +
            dmypy.json
         | 
| 147 | 
            +
             | 
| 148 | 
            +
            # Pyre type checker
         | 
| 149 | 
            +
            .pyre/
         | 
| 150 | 
            +
             | 
| 151 | 
            +
            # pytype static type analyzer
         | 
| 152 | 
            +
            .pytype/
         | 
| 153 | 
            +
             | 
| 154 | 
            +
            # Cython debug symbols
         | 
| 155 | 
            +
            cython_debug/
         | 
| 156 | 
            +
             | 
| 157 | 
            +
            # PyCharm
         | 
| 158 | 
            +
            #  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
         | 
| 159 | 
            +
            #  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
         | 
| 160 | 
            +
            #  and can be added to the global gitignore or merged into this file.  For a more nuclear
         | 
| 161 | 
            +
            #  option (not recommended) you can uncomment the following to ignore the entire idea folder.
         | 
| 162 | 
            +
            #.idea/
         | 
    	
        .pre-commit-config.yaml
    ADDED
    
    | @@ -0,0 +1,55 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            repos:
         | 
| 2 | 
            +
              - repo: https://github.com/pre-commit/pre-commit-hooks
         | 
| 3 | 
            +
                rev: v4.4.0
         | 
| 4 | 
            +
                hooks:
         | 
| 5 | 
            +
                  - id: check-executables-have-shebangs
         | 
| 6 | 
            +
                  - id: check-json
         | 
| 7 | 
            +
                  - id: check-merge-conflict
         | 
| 8 | 
            +
                  - id: check-shebang-scripts-are-executable
         | 
| 9 | 
            +
                  - id: check-toml
         | 
| 10 | 
            +
                  - id: check-yaml
         | 
| 11 | 
            +
                  - id: end-of-file-fixer
         | 
| 12 | 
            +
                  - id: mixed-line-ending
         | 
| 13 | 
            +
                    args: ["--fix=lf"]
         | 
| 14 | 
            +
                  - id: requirements-txt-fixer
         | 
| 15 | 
            +
                  - id: trailing-whitespace
         | 
| 16 | 
            +
              - repo: https://github.com/myint/docformatter
         | 
| 17 | 
            +
                rev: v1.7.5
         | 
| 18 | 
            +
                hooks:
         | 
| 19 | 
            +
                  - id: docformatter
         | 
| 20 | 
            +
                    args: ["--in-place"]
         | 
| 21 | 
            +
              - repo: https://github.com/pycqa/isort
         | 
| 22 | 
            +
                rev: 5.12.0
         | 
| 23 | 
            +
                hooks:
         | 
| 24 | 
            +
                  - id: isort
         | 
| 25 | 
            +
                    args: ["--profile", "black"]
         | 
| 26 | 
            +
              - repo: https://github.com/pre-commit/mirrors-mypy
         | 
| 27 | 
            +
                rev: v1.5.1
         | 
| 28 | 
            +
                hooks:
         | 
| 29 | 
            +
                  - id: mypy
         | 
| 30 | 
            +
                    args: ["--ignore-missing-imports"]
         | 
| 31 | 
            +
                    additional_dependencies:
         | 
| 32 | 
            +
                      ["types-python-slugify", "types-requests", "types-PyYAML"]
         | 
| 33 | 
            +
              - repo: https://github.com/psf/black
         | 
| 34 | 
            +
                rev: 23.9.1
         | 
| 35 | 
            +
                hooks:
         | 
| 36 | 
            +
                  - id: black
         | 
| 37 | 
            +
                    language_version: python3.10
         | 
| 38 | 
            +
                    args: ["--line-length", "119"]
         | 
| 39 | 
            +
              - repo: https://github.com/kynan/nbstripout
         | 
| 40 | 
            +
                rev: 0.6.1
         | 
| 41 | 
            +
                hooks:
         | 
| 42 | 
            +
                  - id: nbstripout
         | 
| 43 | 
            +
                    args:
         | 
| 44 | 
            +
                      [
         | 
| 45 | 
            +
                        "--extra-keys",
         | 
| 46 | 
            +
                        "metadata.interpreter metadata.kernelspec cell.metadata.pycharm",
         | 
| 47 | 
            +
                      ]
         | 
| 48 | 
            +
              - repo: https://github.com/nbQA-dev/nbQA
         | 
| 49 | 
            +
                rev: 1.7.0
         | 
| 50 | 
            +
                hooks:
         | 
| 51 | 
            +
                  - id: nbqa-black
         | 
| 52 | 
            +
                  - id: nbqa-pyupgrade
         | 
| 53 | 
            +
                    args: ["--py37-plus"]
         | 
| 54 | 
            +
                  - id: nbqa-isort
         | 
| 55 | 
            +
                    args: ["--float-to-top"]
         | 
    	
        .vscode/settings.json
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
                "[python]": {
         | 
| 3 | 
            +
                    "editor.defaultFormatter": "ms-python.black-formatter",
         | 
| 4 | 
            +
                    "editor.formatOnType": true,
         | 
| 5 | 
            +
                    "editor.codeActionsOnSave": {
         | 
| 6 | 
            +
                        "source.organizeImports": true
         | 
| 7 | 
            +
                    }
         | 
| 8 | 
            +
                },
         | 
| 9 | 
            +
                "black-formatter.args": [
         | 
| 10 | 
            +
                    "--line-length=119"
         | 
| 11 | 
            +
                ],
         | 
| 12 | 
            +
                "isort.args": ["--profile", "black"],
         | 
| 13 | 
            +
                "flake8.args": [
         | 
| 14 | 
            +
                    "--max-line-length=119"
         | 
| 15 | 
            +
                ],
         | 
| 16 | 
            +
                "ruff.args": [
         | 
| 17 | 
            +
                    "--line-length=119"
         | 
| 18 | 
            +
                ],
         | 
| 19 | 
            +
                "editor.formatOnSave": true,
         | 
| 20 | 
            +
                "files.insertFinalNewline": true
         | 
| 21 | 
            +
            }
         | 
    	
        LICENSE
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            MIT License
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Copyright (c) 2023 hysts
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining a copy
         | 
| 6 | 
            +
            of this software and associated documentation files (the "Software"), to deal
         | 
| 7 | 
            +
            in the Software without restriction, including without limitation the rights
         | 
| 8 | 
            +
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         | 
| 9 | 
            +
            copies of the Software, and to permit persons to whom the Software is
         | 
| 10 | 
            +
            furnished to do so, subject to the following conditions:
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            The above copyright notice and this permission notice shall be included in all
         | 
| 13 | 
            +
            copies or substantial portions of the Software.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         | 
| 16 | 
            +
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         | 
| 17 | 
            +
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         | 
| 18 | 
            +
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         | 
| 19 | 
            +
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         | 
| 20 | 
            +
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         | 
| 21 | 
            +
            SOFTWARE.
         | 
    	
        README.md
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
             
            ---
         | 
| 2 | 
            -
            title: Mistral | 
| 3 | 
             
            emoji: 🐨
         | 
| 4 | 
             
            colorFrom: pink
         | 
| 5 | 
             
            colorTo: blue
         | 
| @@ -7,6 +7,8 @@ sdk: gradio | |
| 7 | 
             
            sdk_version: 3.47.1
         | 
| 8 | 
             
            app_file: app.py
         | 
| 9 | 
             
            pinned: false
         | 
|  | |
|  | |
| 10 | 
             
            ---
         | 
| 11 |  | 
| 12 | 
             
            Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
         | 
|  | |
| 1 | 
             
            ---
         | 
| 2 | 
            +
            title: Mistral-7B
         | 
| 3 | 
             
            emoji: 🐨
         | 
| 4 | 
             
            colorFrom: pink
         | 
| 5 | 
             
            colorTo: blue
         | 
|  | |
| 7 | 
             
            sdk_version: 3.47.1
         | 
| 8 | 
             
            app_file: app.py
         | 
| 9 | 
             
            pinned: false
         | 
| 10 | 
            +
            license: mit
         | 
| 11 | 
            +
            suggested_hardware: t4-small
         | 
| 12 | 
             
            ---
         | 
| 13 |  | 
| 14 | 
             
            Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
         | 
    	
        app.py
    ADDED
    
    | @@ -0,0 +1,127 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            #!/usr/bin/env python
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import os
         | 
| 4 | 
            +
            from threading import Thread
         | 
| 5 | 
            +
            from typing import Iterator
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import gradio as gr
         | 
| 8 | 
            +
            import spaces
         | 
| 9 | 
            +
            import torch
         | 
| 10 | 
            +
            from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            DESCRIPTION = "# Mistral-7B"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            if not torch.cuda.is_available():
         | 
| 15 | 
            +
                DESCRIPTION += "\n<p>Running on CPU 🥶 This demo does not work on CPU.</p>"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            MAX_MAX_NEW_TOKENS = 2048
         | 
| 18 | 
            +
            DEFAULT_MAX_NEW_TOKENS = 1024
         | 
| 19 | 
            +
            MAX_INPUT_TOKEN_LENGTH = 4096
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            if torch.cuda.is_available():
         | 
| 22 | 
            +
                model_id = "mistralai/Mistral-7B-Instruct-v0.1"
         | 
| 23 | 
            +
                model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map="auto")
         | 
| 24 | 
            +
                tokenizer = AutoTokenizer.from_pretrained(model_id)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 27 | 
            +
            @spaces.GPU
         | 
| 28 | 
            +
            def generate(
         | 
| 29 | 
            +
                message: str,
         | 
| 30 | 
            +
                chat_history: list[tuple[str, str]],
         | 
| 31 | 
            +
                max_new_tokens: int = 1024,
         | 
| 32 | 
            +
                temperature: float = 0.6,
         | 
| 33 | 
            +
                top_p: float = 0.9,
         | 
| 34 | 
            +
                top_k: int = 50,
         | 
| 35 | 
            +
                repetition_penalty: float = 1.2,
         | 
| 36 | 
            +
            ) -> Iterator[str]:
         | 
| 37 | 
            +
                conversation = []
         | 
| 38 | 
            +
                for user, assistant in chat_history:
         | 
| 39 | 
            +
                    conversation.extend([{"role": "user", "content": user}, {"role": "assistant", "content": assistant}])
         | 
| 40 | 
            +
                conversation.append({"role": "user", "content": message})
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt").to("cuda")
         | 
| 43 | 
            +
                if len(input_ids) > MAX_INPUT_TOKEN_LENGTH:
         | 
| 44 | 
            +
                    input_ids = input_ids[-MAX_INPUT_TOKEN_LENGTH:]
         | 
| 45 | 
            +
                    gr.Warning("Trimmed input from conversation as it was longer than {MAX_INPUT_TOKEN_LENGTH} tokens.")
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                streamer = TextIteratorStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
         | 
| 48 | 
            +
                generate_kwargs = dict(
         | 
| 49 | 
            +
                    {"input_ids": input_ids},
         | 
| 50 | 
            +
                    streamer=streamer,
         | 
| 51 | 
            +
                    max_new_tokens=max_new_tokens,
         | 
| 52 | 
            +
                    do_sample=True,
         | 
| 53 | 
            +
                    top_p=top_p,
         | 
| 54 | 
            +
                    top_k=top_k,
         | 
| 55 | 
            +
                    temperature=temperature,
         | 
| 56 | 
            +
                    num_beams=1,
         | 
| 57 | 
            +
                    repetition_penalty=repetition_penalty,
         | 
| 58 | 
            +
                )
         | 
| 59 | 
            +
                t = Thread(target=model.generate, kwargs=generate_kwargs)
         | 
| 60 | 
            +
                t.start()
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                outputs = []
         | 
| 63 | 
            +
                for text in streamer:
         | 
| 64 | 
            +
                    outputs.append(text)
         | 
| 65 | 
            +
                    yield "".join(outputs)
         | 
| 66 | 
            +
             | 
| 67 | 
            +
             | 
| 68 | 
            +
            chat_interface = gr.ChatInterface(
         | 
| 69 | 
            +
                fn=generate,
         | 
| 70 | 
            +
                additional_inputs=[
         | 
| 71 | 
            +
                    gr.Slider(
         | 
| 72 | 
            +
                        label="Max new tokens",
         | 
| 73 | 
            +
                        minimum=1,
         | 
| 74 | 
            +
                        maximum=MAX_MAX_NEW_TOKENS,
         | 
| 75 | 
            +
                        step=1,
         | 
| 76 | 
            +
                        value=DEFAULT_MAX_NEW_TOKENS,
         | 
| 77 | 
            +
                    ),
         | 
| 78 | 
            +
                    gr.Slider(
         | 
| 79 | 
            +
                        label="Temperature",
         | 
| 80 | 
            +
                        minimum=0.1,
         | 
| 81 | 
            +
                        maximum=4.0,
         | 
| 82 | 
            +
                        step=0.1,
         | 
| 83 | 
            +
                        value=0.6,
         | 
| 84 | 
            +
                    ),
         | 
| 85 | 
            +
                    gr.Slider(
         | 
| 86 | 
            +
                        label="Top-p (nucleus sampling)",
         | 
| 87 | 
            +
                        minimum=0.05,
         | 
| 88 | 
            +
                        maximum=1.0,
         | 
| 89 | 
            +
                        step=0.05,
         | 
| 90 | 
            +
                        value=0.9,
         | 
| 91 | 
            +
                    ),
         | 
| 92 | 
            +
                    gr.Slider(
         | 
| 93 | 
            +
                        label="Top-k",
         | 
| 94 | 
            +
                        minimum=1,
         | 
| 95 | 
            +
                        maximum=1000,
         | 
| 96 | 
            +
                        step=1,
         | 
| 97 | 
            +
                        value=50,
         | 
| 98 | 
            +
                    ),
         | 
| 99 | 
            +
                    gr.Slider(
         | 
| 100 | 
            +
                        label="Repetition penalty",
         | 
| 101 | 
            +
                        minimum=1.0,
         | 
| 102 | 
            +
                        maximum=2.0,
         | 
| 103 | 
            +
                        step=0.05,
         | 
| 104 | 
            +
                        value=1.2,
         | 
| 105 | 
            +
                    ),
         | 
| 106 | 
            +
                ],
         | 
| 107 | 
            +
                stop_btn=None,
         | 
| 108 | 
            +
                examples=[
         | 
| 109 | 
            +
                    ["Hello there! How are you doing?"],
         | 
| 110 | 
            +
                    ["Can you explain briefly to me what is the Python programming language?"],
         | 
| 111 | 
            +
                    ["Explain the plot of Cinderella in a sentence."],
         | 
| 112 | 
            +
                    ["How many hours does it take a man to eat a Helicopter?"],
         | 
| 113 | 
            +
                    ["Write a 100-word article on 'Benefits of Open-Source in AI research'"],
         | 
| 114 | 
            +
                ],
         | 
| 115 | 
            +
            )
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            with gr.Blocks(css="style.css") as demo:
         | 
| 118 | 
            +
                gr.Markdown(DESCRIPTION)
         | 
| 119 | 
            +
                gr.DuplicateButton(
         | 
| 120 | 
            +
                    value="Duplicate Space for private use",
         | 
| 121 | 
            +
                    elem_id="duplicate-button",
         | 
| 122 | 
            +
                    visible=os.getenv("SHOW_DUPLICATE_BUTTON") == "1",
         | 
| 123 | 
            +
                )
         | 
| 124 | 
            +
                chat_interface.render()
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            if __name__ == "__main__":
         | 
| 127 | 
            +
                demo.queue(max_size=20).launch()
         | 
    	
        requirements.txt
    ADDED
    
    | @@ -0,0 +1,9 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            accelerate==0.23.0
         | 
| 2 | 
            +
            bitsandbytes==0.41.1
         | 
| 3 | 
            +
            gradio==3.47.1
         | 
| 4 | 
            +
            protobuf==3.20.3
         | 
| 5 | 
            +
            scipy==1.11.2
         | 
| 6 | 
            +
            sentencepiece==0.1.99
         | 
| 7 | 
            +
            spaces==0.16.1
         | 
| 8 | 
            +
            torch==2.0.0
         | 
| 9 | 
            +
            transformers==4.34.0
         | 
    	
        style.css
    ADDED
    
    | @@ -0,0 +1,16 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            h1 {
         | 
| 2 | 
            +
              text-align: center;
         | 
| 3 | 
            +
            }
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            #duplicate-button {
         | 
| 6 | 
            +
              margin: auto;
         | 
| 7 | 
            +
              color: white;
         | 
| 8 | 
            +
              background: #1565c0;
         | 
| 9 | 
            +
              border-radius: 100vh;
         | 
| 10 | 
            +
            }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            .contain {
         | 
| 13 | 
            +
              max-width: 900px;
         | 
| 14 | 
            +
              margin: auto;
         | 
| 15 | 
            +
              padding-top: 1.5rem;
         | 
| 16 | 
            +
            }
         | 
 
			
