Skip to main content

gRPC inference service for multilingual BigARTM topic embeddings.

Project description

redup.python.topicmodel

Docker test Python test

gRPC inference service for a multilingual BigARTM topic model: document embeddings and topic explanations.

Contract: redup.topicmodel.v1 (GetDocumentsEmbedding, GetTopicExplanation). PyPI package: redup-topicmodel.

Model

Weights and tokenizers are published on Hugging Face:

redup-ai/topicmodel-multilingual

Expected artifact layout:

<data>/
  artm/parameters.bin
  artm/p_wt.bin
  tokenizers.json.gz
  config.json

Download locally:

pip install huggingface_hub
python -c "from huggingface_hub import snapshot_download; print(snapshot_download('redup-ai/topicmodel-multilingual'))"

Configuration

config/config.yaml:

service:
  port: "[::]:9878"

TopicModel:
  artifact_root: /data          # HF artifact root (Docker default mount)

Override without editing the file via servicekit env substitution (section___key):

export TopicModel___artifact_root=/path/to/topicmodel-multilingual

Instead of artifact_root, you can set paths explicitly: model_path (artm/ directory) and bpe_path (tokenizers.json.gz or a tokenizers directory) — also overridable as TopicModel___model_path / TopicModel___bpe_path.

Run with Docker

Pull the published image and mount the downloaded artifacts at /data (as in the config):

docker run --rm -p 9878:9878 \
  -v /path/to/topicmodel-multilingual:/data:ro \
  redup4ai/redup.python.topicmodel:0.1.0-3.11-slim

The service listens for gRPC on port 9878.

Call it from Python:

import asyncio
from redup_proto_topicmodel.client import Client
from redup_proto_topicmodel.redup.topicmodel.v1.topicmodel_pb2 import (
    Document,
    DocumentPack,
)

async def main():
    client = Client("grpc://localhost:9878")
    pack = DocumentPack(documents=[
        Document(
            document_id="doc-en",
            tokens=["hello", "world"],
            modalities={"lang": "en"},
        ),
    ])
    response = await client.get_documents_embedding("example", pack)
    print(response["embeddings"])

asyncio.run(main())

Run locally without Docker

python -m venv .venv && source .venv/bin/activate
pip install -r src/requirements.txt
pip install -e src

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
export TopicModel___artifact_root=/path/to/topicmodel-multilingual
PYTHONPATH=src python -m redup_topicmodel.service config/config.yaml

Tests

PYTHONPATH=src python -m pytest tests -q -m "not smoke"

Smoke test with a real model (requires TOPICMODEL_DATA or TopicModel___artifact_root):

export TOPICMODEL_DATA=/path/to/topicmodel-multilingual
PYTHONPATH=src python -m pytest tests -q --smoke

License

MIT — see LICENSE.

Parts of the inference logic are adapted from text_categorization (Copyright (c) 2020, Machine Intelligence Team), BSD 3-Clause. See NOTICE and third_party/text_categorization/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redup_topicmodel-0.1.2.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

redup_topicmodel-0.1.2-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file redup_topicmodel-0.1.2.tar.gz.

File metadata

  • Download URL: redup_topicmodel-0.1.2.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for redup_topicmodel-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4ebdab91d6413bf40176f32becebb3dae37e1dc5fff992a99d03c40b6af3a2e7
MD5 af236bcda323f05601a3aac94d7cadc8
BLAKE2b-256 7db52030ce15b56d6268f3fa4b594692932bee8e4838d4cdb3914782d1cd1f2b

See more details on using hashes here.

File details

Details for the file redup_topicmodel-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for redup_topicmodel-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d679973c779a4632422ac5c079e2d6b4d6905e9abde242d6d18a951f1de0de04
MD5 5fdc2530c0a90f5da7581be24cc2774e
BLAKE2b-256 d286f2eb8499c9bb26f01ad0fb40bba4d37405e55763c0287788731e8499e685

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page