Frequently Asked Questions¶
If you have a question which is not covered here, join our Discord to see if someone else has asked the same question or ask it yourself!
Deployment¶
How do I run the Dashboard and the Object Service on different machines?
Please see the Object Service Deployment Guide for several solutions to running the Dashboard and Object Service on different machines.
Do I need to upload my data to 3LC?
No. All data viewed, created and modified in the 3LC Dashboard interfaces with your own 3lc service, and is never sent
anywhere else. 3LC only requires an internet connection for authentication and for fetching the Dashboard UI from our
servers. If your deployment necessitates the absence of any connection to the public internet, you can still use the
Enterprise On-Prem deployment of 3LC.
Dashboard¶
Why can’t the Dashboard connect to the Object Service?
To view your 3LC data in the Dashboard, it must connect to a running Object Service. A red banner is shown when it is unable to do so.

To troubleshoot the issue:
Make sure you have an Object Service running. Follow the Getting Started Guide.
If you are not running the Object Service at the default localhost:5015, make sure the Dashboard is configured to connect to the non-default URL in the Dashboard Settings under CONNECTION.
Are you using a supported browser?
While Brave is not officially supported, it is Chromium-based and should work by turning off privacy protections and allow for local network access.

Chrome might not work if local network access is disabled. Enable it like so:

Are you connecting to the Object Service through a reverse proxy that is encountering errors?
If your Dashboard is configured to access the Object Service through a reverse proxy, various issues may cause errors when communicating with that proxy. Some reverse proxy servers handle errors by returning responses with HTML content (e.g. representing a web page describing the error). Such errors appear in the Log window as messages containing HTML, as in the example below:

It may be helpful in such cases to open the location being requested by the Dashboard directly in a separate browser tab so that the HTML is rendered, potentially providing clues about the underlying issue. In the example above, you would open the URL https://tlc-api/status.
Why can I not see my images in the Dashboard?
If your images are not showing up in the Dashboard, there could be one or more issues at play. All images which are displayed in the Dashboard are stored as URLs (paths) to the images. To troubleshoot, use To string to see which paths are stored.

It can be useful to check the logs in the Object Service when you try to open the images in the Dashboard.
If your image URLs have aliases, ensure that the alias is defined in the configuration with which the Object Service is running. The Object Service should log a warning when it is unable to expand an alias.
Check that the paths are correct, in that they are pointing to images that can be reached by the Object Service.
Check that the Object Service has read access to the locations. If they are on cloud storage, credentials need to be configured to access the data. See relevant sections in URLs for details on how work with various cloud storage providers.
The images could be in a format that 3LC is unable to open. At the time of writing, the Dashboard can open the formats your browser is able to open. An exception to this is TIFF (which is not natively supported by Chrome) and Numpy Arrays, for which the Object Service performs on-the-fly transcoding to JPG. If your format is not supported, you have two options:
Include the path to the images in the samples of your dataset when creating the
Table. If you are using a custom PyTorchDataset, you can include the paths in the return value of the__getitem__method of yourDatasetclass. Make sure to specify that these strings are paths to images by, for instance, using theImagePathSampleType.Let 3LC handle the conversion of the images to URLs by ensuring that your images in your samples are represented as
PIL.Imageobjects. If your images are in a different format, you can convert them toPIL.Imageobjects before creating theTable. Note that if thePIL.Imageobjects are not created from a file, this might involve saving copies of the images the first time you create theTable.
Why are my image transforms not applied in the Dashboard?
If you have created a 3LC Table using the
Table.from_torch_dataset on a TorchVision VisionDataset which
has transforms applied to it, you might notice that the transforms are not applied when viewing the data in the
Dashboard. Because the transforms of a VisionDataset might contain augmentations, or conversion from a
PIL.Image.Image to a torch.Tensor, 3LC needs to persist the untransformed samples. These are the images which are
shown in the Dashboard.
The transforms will still be applied as expected when getting samples from the Table object in your code, and will
still be applied when training your model. If you want to see the transformed images in the Dashboard, you can
explicitly transform the samples in the __getitem__ method of your Dataset class, instead of using the transforms
argument of the VisionDataset class, before calling Table.from_torch_dataset. If you are non-deterministically
augmenting your samples, or converting PIL images to tensors, these transforms still need to be added through the
transforms argument, and not in the __getitem__ method.
Object Service¶
Why doesn’t the Object Service start?
The Object Service may fail to start for various reasons. Usually, it will output an error message to the console indicating the reason. If no such message is available, the following steps can be taken to troubleshoot:
Does the Object Service abruptly close? Check if there is a different Object Service or other process running on the same port (5015 by default).
Python Package¶
What should be the project_name, dataset_name and table_name of my 3LC Table?
The project_name, dataset_name and table_name of a 3LC Table are used to define the folders in which the Table is
located, and thus uniquely identify the Table. These names have no functional purpose outside of helping you organize
your data and making related data easier to share. That being said, we recommend the following naming convention:
project_name: A short name describing the goal of the project, e.g. “CatAndDogClassification”.dataset_name: A name describing one distinct part of all the data associated with the project, e.g. “train”, “val” or “test”.table_name: A name describing the unique changes introduced in this specific table revision. This can typically be “initial” for the first Table created for a dataset, or a description of some changes made either in the 3LC Dashboard or in the Python API, e.g. “changed_cat_weights”.
How do I collect metrics in Python with my data and model?
Collecting metrics from your data and models can sometimes be tricky. If you encounter any issues, make sure to check the relevant sections of the user guide for guidance:
Import explains how to create a
tlc.Tablefrom your data.Collecting Metrics explains how to collect metrics from your table and model.
Combining Data and Models goes into detail about how the
tlc.Predictorwraps the model, and how it calls theforwardmethod of the model using data from thetlc.Table.
Which dimensionality reduction methods does 3LC support?
Which dimensionality reduction method should I use: UMAP or PaCMAP?
UMAP scales better to very large datasets (millions of rows). It’s faster, and more memory-efficient.
PaCMAP is slower and uses more memory (due to extra pairwise constraints), but often gives embeddings with clearer local and global structure.
Rule of thumb: For huge datasets, use UMAP. For small–medium datasets (up to a few hundred thousand points) where visualization quality matters, use PaCMAP.
How can I add an extra column to my 3LC Table?
To create a new Revision from an existing Table, use the method
Table.add_column().
Adding an extra column to a 3LC tlc.Table can also be done when creating the Table
by using the extra_columns argument of constructor methods like
tlc.Table.from_pandas,
tlc.Table.from_dict or
tlc.Table.from_torch_dataset.
my_torch_dataset = MyTorchDataset()
table = Table.from_torch_dataset(
my_torch_dataset,
...,
extra_columns={
"QA": tlc.CategoricalLabel("QA", ["Not required", "Required", "In progress", "Done"])
}
)
The extra_columns argument should be a dictionary where the keys are the names of the extra columns, and the values
describe the type of the column, either with a Schema or a
SampleType. The column will initially be populated by a default value, and
will only be visible in the Dashboard, not during training.
How do I delete a Table?
Unlike Runs, Tables are immutable and their very definition might depend on other Tables. If a Table is
deleted, it could invalidate all the Tables that depend on it. Special care therefore needs to be taken before deleting
a Table. Currently, a Table can be deleted in Python by using the method table.delete() or manually deleted by
removing the Table folder through your file explorer. When deleting a Table, make sure that no other Tables depend on
it, and consider removing any dangling bulk data in the project that was referenced by the Table.
How can I export data from a Table?
After the successful usage of 3LC to modify a dataset, one might want to export the modified data out of a Table and into a common format such as CSV or COCO. See the Export page for how to do this.
How do I manage torch and torchvision dependencies alongside 3LC?
3LC is tightly integrated with, and therefore depends on, PyTorch and torchvision. See Python Package Requirements for more details on how to use these packages with 3LC.
General¶
Is it spelled 3LC, 3lc or tlc?
The company and product are both called 3LC. The wheel file containing the 3LC Python Package is named 3lc.
Lowercase tlc name is used when necessary to avoid starting with a number, such as for the Python module where you
import tlc. For the same reason, uppercase TLC is used for environment variables.
Who is Sam Pullweight?
Sam Pullweight is one of the heavy lifters in the 3LC Community. Having spent countless hours in the 3LC Dashboard, improving models across a wide range of AI modalities and tasks, he has mastered the art of using sample weights to make the most of every sample. He is known for his ability to handle large datasets, and once lifted petabytes of data into the cloud.
Sam brings in Minnie Epoch and her brother Max Epoch when he needs to collaborate with someone.